Remove path name from test case
[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 (C) 1996-2023 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, write to the Free Software Foundation, Inc.,
21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23 */
24
25 #define WANT_CPU frvbf
26 #define WANT_CPU_FRVBF
27
28 #include "sim-main.h"
29 #include "cgen-mem.h"
30 #include "cgen-ops.h"
31
32 #undef GET_ATTR
33 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
34
35 /* This is used so that we can compile two copies of the semantic code,
36 one with full feature support and one without that runs fast(er).
37 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
38 #if FAST_P
39 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
40 #undef CGEN_TRACE_RESULT
41 #define CGEN_TRACE_RESULT(cpu, abuf, name, type, val)
42 #else
43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
44 #endif
45
46 /* x-invalid: --invalid-- */
47
48 static SEM_PC
49 SEM_FN_NAME (frvbf,x_invalid) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
50 {
51 #define FLD(f) abuf->fields.sfmt_empty.f
52 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
53 int UNUSED written = 0;
54 IADDR UNUSED pc = abuf->addr;
55 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
56
57 {
58 /* Update the recorded pc in the cpu state struct.
59 Only necessary for WITH_SCACHE case, but to avoid the
60 conditional compilation .... */
61 SET_H_PC (pc);
62 /* Virtual insns have zero size. Overwrite vpc with address of next insn
63 using the default-insn-bitsize spec. When executing insns in parallel
64 we may want to queue the fault and continue execution. */
65 vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
66 vpc = sim_engine_invalid_insn (current_cpu, pc, vpc);
67 }
68
69 return vpc;
70 #undef FLD
71 }
72
73 /* x-after: --after-- */
74
75 static SEM_PC
76 SEM_FN_NAME (frvbf,x_after) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
77 {
78 #define FLD(f) abuf->fields.sfmt_empty.f
79 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
80 int UNUSED written = 0;
81 IADDR UNUSED pc = abuf->addr;
82 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
83
84 {
85 #if WITH_SCACHE_PBB_FRVBF
86 frvbf_pbb_after (current_cpu, sem_arg);
87 #endif
88 }
89
90 return vpc;
91 #undef FLD
92 }
93
94 /* x-before: --before-- */
95
96 static SEM_PC
97 SEM_FN_NAME (frvbf,x_before) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
98 {
99 #define FLD(f) abuf->fields.sfmt_empty.f
100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
101 int UNUSED written = 0;
102 IADDR UNUSED pc = abuf->addr;
103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
104
105 {
106 #if WITH_SCACHE_PBB_FRVBF
107 frvbf_pbb_before (current_cpu, sem_arg);
108 #endif
109 }
110
111 return vpc;
112 #undef FLD
113 }
114
115 /* x-cti-chain: --cti-chain-- */
116
117 static SEM_PC
118 SEM_FN_NAME (frvbf,x_cti_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
119 {
120 #define FLD(f) abuf->fields.sfmt_empty.f
121 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
122 int UNUSED written = 0;
123 IADDR UNUSED pc = abuf->addr;
124 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
125
126 {
127 #if WITH_SCACHE_PBB_FRVBF
128 #ifdef DEFINE_SWITCH
129 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
130 pbb_br_type, pbb_br_npc);
131 BREAK (sem);
132 #else
133 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
134 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
135 CPU_PBB_BR_TYPE (current_cpu),
136 CPU_PBB_BR_NPC (current_cpu));
137 #endif
138 #endif
139 }
140
141 return vpc;
142 #undef FLD
143 }
144
145 /* x-chain: --chain-- */
146
147 static SEM_PC
148 SEM_FN_NAME (frvbf,x_chain) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
149 {
150 #define FLD(f) abuf->fields.sfmt_empty.f
151 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
152 int UNUSED written = 0;
153 IADDR UNUSED pc = abuf->addr;
154 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
155
156 {
157 #if WITH_SCACHE_PBB_FRVBF
158 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
159 #ifdef DEFINE_SWITCH
160 BREAK (sem);
161 #endif
162 #endif
163 }
164
165 return vpc;
166 #undef FLD
167 }
168
169 /* x-begin: --begin-- */
170
171 static SEM_PC
172 SEM_FN_NAME (frvbf,x_begin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
173 {
174 #define FLD(f) abuf->fields.sfmt_empty.f
175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
176 int UNUSED written = 0;
177 IADDR UNUSED pc = abuf->addr;
178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 0);
179
180 {
181 #if WITH_SCACHE_PBB_FRVBF
182 #if defined DEFINE_SWITCH || defined FAST_P
183 /* In the switch case FAST_P is a constant, allowing several optimizations
184 in any called inline functions. */
185 vpc = frvbf_pbb_begin (current_cpu, FAST_P);
186 #else
187 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
188 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
189 #else
190 vpc = frvbf_pbb_begin (current_cpu, 0);
191 #endif
192 #endif
193 #endif
194 }
195
196 return vpc;
197 #undef FLD
198 }
199
200 /* add: add$pack $GRi,$GRj,$GRk */
201
202 static SEM_PC
203 SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
204 {
205 #define FLD(f) abuf->fields.sfmt_addcc.f
206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
207 int UNUSED written = 0;
208 IADDR UNUSED pc = abuf->addr;
209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
210
211 {
212 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
214 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
215 }
216
217 return vpc;
218 #undef FLD
219 }
220
221 /* sub: sub$pack $GRi,$GRj,$GRk */
222
223 static SEM_PC
224 SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
225 {
226 #define FLD(f) abuf->fields.sfmt_addcc.f
227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
228 int UNUSED written = 0;
229 IADDR UNUSED pc = abuf->addr;
230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
231
232 {
233 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
235 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
236 }
237
238 return vpc;
239 #undef FLD
240 }
241
242 /* and: and$pack $GRi,$GRj,$GRk */
243
244 static SEM_PC
245 SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
246 {
247 #define FLD(f) abuf->fields.sfmt_addcc.f
248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
249 int UNUSED written = 0;
250 IADDR UNUSED pc = abuf->addr;
251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
252
253 {
254 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
255 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
256 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
257 }
258
259 return vpc;
260 #undef FLD
261 }
262
263 /* or: or$pack $GRi,$GRj,$GRk */
264
265 static SEM_PC
266 SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
267 {
268 #define FLD(f) abuf->fields.sfmt_addcc.f
269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
270 int UNUSED written = 0;
271 IADDR UNUSED pc = abuf->addr;
272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
273
274 {
275 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
276 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
277 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
278 }
279
280 return vpc;
281 #undef FLD
282 }
283
284 /* xor: xor$pack $GRi,$GRj,$GRk */
285
286 static SEM_PC
287 SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
288 {
289 #define FLD(f) abuf->fields.sfmt_addcc.f
290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
291 int UNUSED written = 0;
292 IADDR UNUSED pc = abuf->addr;
293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
294
295 {
296 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
297 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
298 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
299 }
300
301 return vpc;
302 #undef FLD
303 }
304
305 /* not: not$pack $GRj,$GRk */
306
307 static SEM_PC
308 SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
309 {
310 #define FLD(f) abuf->fields.sfmt_scutss.f
311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
312 int UNUSED written = 0;
313 IADDR UNUSED pc = abuf->addr;
314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
315
316 {
317 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
318 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
319 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
320 }
321
322 return vpc;
323 #undef FLD
324 }
325
326 /* sdiv: sdiv$pack $GRi,$GRj,$GRk */
327
328 static SEM_PC
329 SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
330 {
331 #define FLD(f) abuf->fields.sfmt_addcc.f
332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
333 int UNUSED written = 0;
334 IADDR UNUSED pc = abuf->addr;
335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
336
337 {
338 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
339 ; /*clobber*/
340 }
341
342 return vpc;
343 #undef FLD
344 }
345
346 /* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
347
348 static SEM_PC
349 SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
350 {
351 #define FLD(f) abuf->fields.sfmt_addcc.f
352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
353 int UNUSED written = 0;
354 IADDR UNUSED pc = abuf->addr;
355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
356
357 {
358 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
359 ; /*clobber*/
360 }
361
362 return vpc;
363 #undef FLD
364 }
365
366 /* udiv: udiv$pack $GRi,$GRj,$GRk */
367
368 static SEM_PC
369 SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
370 {
371 #define FLD(f) abuf->fields.sfmt_addcc.f
372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
373 int UNUSED written = 0;
374 IADDR UNUSED pc = abuf->addr;
375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
376
377 {
378 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
379 ; /*clobber*/
380 }
381
382 return vpc;
383 #undef FLD
384 }
385
386 /* nudiv: nudiv$pack $GRi,$GRj,$GRk */
387
388 static SEM_PC
389 SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
390 {
391 #define FLD(f) abuf->fields.sfmt_addcc.f
392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
393 int UNUSED written = 0;
394 IADDR UNUSED pc = abuf->addr;
395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
396
397 {
398 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
399 ; /*clobber*/
400 }
401
402 return vpc;
403 #undef FLD
404 }
405
406 /* smul: smul$pack $GRi,$GRj,$GRdoublek */
407
408 static SEM_PC
409 SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
410 {
411 #define FLD(f) abuf->fields.sfmt_smulcc.f
412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
413 int UNUSED written = 0;
414 IADDR UNUSED pc = abuf->addr;
415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
416
417 {
418 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
419 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
420 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
421 }
422
423 return vpc;
424 #undef FLD
425 }
426
427 /* umul: umul$pack $GRi,$GRj,$GRdoublek */
428
429 static SEM_PC
430 SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
431 {
432 #define FLD(f) abuf->fields.sfmt_smulcc.f
433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
434 int UNUSED written = 0;
435 IADDR UNUSED pc = abuf->addr;
436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
437
438 {
439 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
440 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
441 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
442 }
443
444 return vpc;
445 #undef FLD
446 }
447
448 /* smu: smu$pack $GRi,$GRj */
449
450 static SEM_PC
451 SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
452 {
453 #define FLD(f) abuf->fields.sfmt_smass.f
454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
455 int UNUSED written = 0;
456 IADDR UNUSED pc = abuf->addr;
457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
458
459 {
460 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
461 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
462 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
463 }
464
465 return vpc;
466 #undef FLD
467 }
468
469 /* smass: smass$pack $GRi,$GRj */
470
471 static SEM_PC
472 SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
473 {
474 #define FLD(f) abuf->fields.sfmt_smass.f
475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
476 int UNUSED written = 0;
477 IADDR UNUSED pc = abuf->addr;
478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
479
480 {
481 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))))));
482 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
483 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
484 }
485
486 return vpc;
487 #undef FLD
488 }
489
490 /* smsss: smsss$pack $GRi,$GRj */
491
492 static SEM_PC
493 SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
494 {
495 #define FLD(f) abuf->fields.sfmt_smass.f
496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
497 int UNUSED written = 0;
498 IADDR UNUSED pc = abuf->addr;
499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
500
501 {
502 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))))));
503 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
504 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
505 }
506
507 return vpc;
508 #undef FLD
509 }
510
511 /* sll: sll$pack $GRi,$GRj,$GRk */
512
513 static SEM_PC
514 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
515 {
516 #define FLD(f) abuf->fields.sfmt_addcc.f
517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
518 int UNUSED written = 0;
519 IADDR UNUSED pc = abuf->addr;
520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
521
522 {
523 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
525 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
526 }
527
528 return vpc;
529 #undef FLD
530 }
531
532 /* srl: srl$pack $GRi,$GRj,$GRk */
533
534 static SEM_PC
535 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
536 {
537 #define FLD(f) abuf->fields.sfmt_addcc.f
538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
539 int UNUSED written = 0;
540 IADDR UNUSED pc = abuf->addr;
541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
542
543 {
544 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
546 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
547 }
548
549 return vpc;
550 #undef FLD
551 }
552
553 /* sra: sra$pack $GRi,$GRj,$GRk */
554
555 static SEM_PC
556 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
557 {
558 #define FLD(f) abuf->fields.sfmt_addcc.f
559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
560 int UNUSED written = 0;
561 IADDR UNUSED pc = abuf->addr;
562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
563
564 {
565 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
566 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
567 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
568 }
569
570 return vpc;
571 #undef FLD
572 }
573
574 /* slass: slass$pack $GRi,$GRj,$GRk */
575
576 static SEM_PC
577 SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
578 {
579 #define FLD(f) abuf->fields.sfmt_addcc.f
580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
581 int UNUSED written = 0;
582 IADDR UNUSED pc = abuf->addr;
583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
584
585 {
586 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
587 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
588 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
589 }
590
591 return vpc;
592 #undef FLD
593 }
594
595 /* scutss: scutss$pack $GRj,$GRk */
596
597 static SEM_PC
598 SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
599 {
600 #define FLD(f) abuf->fields.sfmt_scutss.f
601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
602 int UNUSED written = 0;
603 IADDR UNUSED pc = abuf->addr;
604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
605
606 {
607 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
608 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
609 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
610 }
611
612 return vpc;
613 #undef FLD
614 }
615
616 /* scan: scan$pack $GRi,$GRj,$GRk */
617
618 static SEM_PC
619 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
620 {
621 #define FLD(f) abuf->fields.sfmt_addcc.f
622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
623 int UNUSED written = 0;
624 IADDR UNUSED pc = abuf->addr;
625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
626
627 {
628 SI tmp_tmp1;
629 SI tmp_tmp2;
630 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
631 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
632 {
633 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
634 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
635 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
636 }
637 }
638
639 return vpc;
640 #undef FLD
641 }
642
643 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
644
645 static SEM_PC
646 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
647 {
648 #define FLD(f) abuf->fields.sfmt_cswap.f
649 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
650 int UNUSED written = 0;
651 IADDR UNUSED pc = abuf->addr;
652 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
653
654 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
655 {
656 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
657 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
658 written |= (1 << 4);
659 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
660 }
661 }
662
663 abuf->written = written;
664 return vpc;
665 #undef FLD
666 }
667
668 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
669
670 static SEM_PC
671 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
672 {
673 #define FLD(f) abuf->fields.sfmt_cswap.f
674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
675 int UNUSED written = 0;
676 IADDR UNUSED pc = abuf->addr;
677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
678
679 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
680 {
681 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
682 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
683 written |= (1 << 4);
684 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
685 }
686 }
687
688 abuf->written = written;
689 return vpc;
690 #undef FLD
691 }
692
693 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
694
695 static SEM_PC
696 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
697 {
698 #define FLD(f) abuf->fields.sfmt_cswap.f
699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
700 int UNUSED written = 0;
701 IADDR UNUSED pc = abuf->addr;
702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
703
704 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
705 {
706 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
707 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
708 written |= (1 << 4);
709 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
710 }
711 }
712
713 abuf->written = written;
714 return vpc;
715 #undef FLD
716 }
717
718 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
719
720 static SEM_PC
721 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
722 {
723 #define FLD(f) abuf->fields.sfmt_cswap.f
724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
725 int UNUSED written = 0;
726 IADDR UNUSED pc = abuf->addr;
727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
728
729 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
730 {
731 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
732 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
733 written |= (1 << 4);
734 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
735 }
736 }
737
738 abuf->written = written;
739 return vpc;
740 #undef FLD
741 }
742
743 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
744
745 static SEM_PC
746 SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
747 {
748 #define FLD(f) abuf->fields.sfmt_cswap.f
749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
750 int UNUSED written = 0;
751 IADDR UNUSED pc = abuf->addr;
752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
753
754 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
755 {
756 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
758 written |= (1 << 4);
759 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
760 }
761 }
762
763 abuf->written = written;
764 return vpc;
765 #undef FLD
766 }
767
768 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
769
770 static SEM_PC
771 SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
772 {
773 #define FLD(f) abuf->fields.sfmt_cswap.f
774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
775 int UNUSED written = 0;
776 IADDR UNUSED pc = abuf->addr;
777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
778
779 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
780 {
781 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
782 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
783 written |= (1 << 3);
784 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
785 }
786 }
787
788 abuf->written = written;
789 return vpc;
790 #undef FLD
791 }
792
793 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
794
795 static SEM_PC
796 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
797 {
798 #define FLD(f) abuf->fields.sfmt_clddu.f
799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
800 int UNUSED written = 0;
801 IADDR UNUSED pc = abuf->addr;
802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
803
804 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
805 {
806 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
807 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
808 written |= (1 << 4);
809 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
810 }
811 }
812
813 abuf->written = written;
814 return vpc;
815 #undef FLD
816 }
817
818 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
819
820 static SEM_PC
821 SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
822 {
823 #define FLD(f) abuf->fields.sfmt_cswap.f
824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
825 int UNUSED written = 0;
826 IADDR UNUSED pc = abuf->addr;
827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
828
829 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
830 {
831 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
832 ; /*clobber*/
833 }
834 }
835
836 abuf->written = written;
837 return vpc;
838 #undef FLD
839 }
840
841 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
842
843 static SEM_PC
844 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
845 {
846 #define FLD(f) abuf->fields.sfmt_cswap.f
847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
848 int UNUSED written = 0;
849 IADDR UNUSED pc = abuf->addr;
850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
851
852 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
853 {
854 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
855 ; /*clobber*/
856 }
857 }
858
859 abuf->written = written;
860 return vpc;
861 #undef FLD
862 }
863
864 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
865
866 static SEM_PC
867 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
868 {
869 #define FLD(f) abuf->fields.sfmt_cswap.f
870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
871 int UNUSED written = 0;
872 IADDR UNUSED pc = abuf->addr;
873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
874
875 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
876 {
877 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
879 written |= (1 << 4);
880 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
881 }
882 }
883
884 abuf->written = written;
885 return vpc;
886 #undef FLD
887 }
888
889 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
890
891 static SEM_PC
892 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
893 {
894 #define FLD(f) abuf->fields.sfmt_cswap.f
895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
896 int UNUSED written = 0;
897 IADDR UNUSED pc = abuf->addr;
898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
899
900 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
901 {
902 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
903 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
904 written |= (1 << 4);
905 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
906 }
907 }
908
909 abuf->written = written;
910 return vpc;
911 #undef FLD
912 }
913
914 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
915
916 static SEM_PC
917 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
918 {
919 #define FLD(f) abuf->fields.sfmt_cswap.f
920 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
921 int UNUSED written = 0;
922 IADDR UNUSED pc = abuf->addr;
923 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
924
925 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
926 {
927 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
928 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
929 written |= (1 << 4);
930 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
931 }
932 }
933
934 abuf->written = written;
935 return vpc;
936 #undef FLD
937 }
938
939 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
940
941 static SEM_PC
942 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
943 {
944 #define FLD(f) abuf->fields.sfmt_cswap.f
945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
946 int UNUSED written = 0;
947 IADDR UNUSED pc = abuf->addr;
948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
949
950 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
951 {
952 SI tmp_tmp1;
953 SI tmp_tmp2;
954 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
955 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
956 {
957 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
958 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
959 written |= (1 << 4);
960 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
961 }
962 }
963 }
964
965 abuf->written = written;
966 return vpc;
967 #undef FLD
968 }
969
970 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
971
972 static SEM_PC
973 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
974 {
975 #define FLD(f) abuf->fields.sfmt_addcc.f
976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
977 int UNUSED written = 0;
978 IADDR UNUSED pc = abuf->addr;
979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
980
981 {
982 BI tmp_tmp;
983 QI tmp_cc;
984 SI tmp_result;
985 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
986 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
987 if (EQBI (tmp_tmp, 0)) {
988 tmp_cc = ANDQI (tmp_cc, 13);
989 } else {
990 tmp_cc = ORQI (tmp_cc, 2);
991 }
992 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
993 if (EQBI (tmp_tmp, 0)) {
994 tmp_cc = ANDQI (tmp_cc, 14);
995 } else {
996 tmp_cc = ORQI (tmp_cc, 1);
997 }
998 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
999 if (EQSI (tmp_result, 0)) {
1000 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1001 } else {
1002 if (LTSI (tmp_result, 0)) {
1003 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1004 } else {
1005 tmp_cc = ANDQI (tmp_cc, 3);
1006 }
1007 }
1008 {
1009 SI opval = tmp_result;
1010 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1011 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1012 }
1013 {
1014 UQI opval = tmp_cc;
1015 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1016 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1017 }
1018 }
1019
1020 return vpc;
1021 #undef FLD
1022 }
1023
1024 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1025
1026 static SEM_PC
1027 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1028 {
1029 #define FLD(f) abuf->fields.sfmt_addcc.f
1030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1031 int UNUSED written = 0;
1032 IADDR UNUSED pc = abuf->addr;
1033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1034
1035 {
1036 BI tmp_tmp;
1037 QI tmp_cc;
1038 SI tmp_result;
1039 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1040 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1041 if (EQBI (tmp_tmp, 0)) {
1042 tmp_cc = ANDQI (tmp_cc, 13);
1043 } else {
1044 tmp_cc = ORQI (tmp_cc, 2);
1045 }
1046 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1047 if (EQBI (tmp_tmp, 0)) {
1048 tmp_cc = ANDQI (tmp_cc, 14);
1049 } else {
1050 tmp_cc = ORQI (tmp_cc, 1);
1051 }
1052 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1053 if (EQSI (tmp_result, 0)) {
1054 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1055 } else {
1056 if (LTSI (tmp_result, 0)) {
1057 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1058 } else {
1059 tmp_cc = ANDQI (tmp_cc, 3);
1060 }
1061 }
1062 {
1063 SI opval = tmp_result;
1064 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1065 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1066 }
1067 {
1068 UQI opval = tmp_cc;
1069 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1070 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1071 }
1072 }
1073
1074 return vpc;
1075 #undef FLD
1076 }
1077
1078 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1079
1080 static SEM_PC
1081 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1082 {
1083 #define FLD(f) abuf->fields.sfmt_addcc.f
1084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1085 int UNUSED written = 0;
1086 IADDR UNUSED pc = abuf->addr;
1087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1088
1089 {
1090 SI tmp_tmp;
1091 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1092 {
1093 SI opval = tmp_tmp;
1094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1095 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1096 }
1097 if (EQSI (tmp_tmp, 0)) {
1098 {
1099 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1100 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1101 written |= (1 << 4);
1102 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1103 }
1104 } else {
1105 if (LTSI (tmp_tmp, 0)) {
1106 {
1107 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1108 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1109 written |= (1 << 4);
1110 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1111 }
1112 } else {
1113 {
1114 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1115 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1116 written |= (1 << 4);
1117 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1118 }
1119 }
1120 }
1121 }
1122
1123 abuf->written = written;
1124 return vpc;
1125 #undef FLD
1126 }
1127
1128 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1129
1130 static SEM_PC
1131 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1132 {
1133 #define FLD(f) abuf->fields.sfmt_addcc.f
1134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1135 int UNUSED written = 0;
1136 IADDR UNUSED pc = abuf->addr;
1137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1138
1139 {
1140 SI tmp_tmp;
1141 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1142 {
1143 SI opval = tmp_tmp;
1144 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1145 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1146 }
1147 if (EQSI (tmp_tmp, 0)) {
1148 {
1149 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1150 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1151 written |= (1 << 4);
1152 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1153 }
1154 } else {
1155 if (LTSI (tmp_tmp, 0)) {
1156 {
1157 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1158 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1159 written |= (1 << 4);
1160 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1161 }
1162 } else {
1163 {
1164 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1165 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1166 written |= (1 << 4);
1167 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1168 }
1169 }
1170 }
1171 }
1172
1173 abuf->written = written;
1174 return vpc;
1175 #undef FLD
1176 }
1177
1178 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1179
1180 static SEM_PC
1181 SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1182 {
1183 #define FLD(f) abuf->fields.sfmt_addcc.f
1184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1185 int UNUSED written = 0;
1186 IADDR UNUSED pc = abuf->addr;
1187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1188
1189 {
1190 SI tmp_tmp;
1191 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1192 {
1193 SI opval = tmp_tmp;
1194 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1195 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1196 }
1197 if (EQSI (tmp_tmp, 0)) {
1198 {
1199 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1200 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1201 written |= (1 << 4);
1202 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1203 }
1204 } else {
1205 if (LTSI (tmp_tmp, 0)) {
1206 {
1207 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1208 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1209 written |= (1 << 4);
1210 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1211 }
1212 } else {
1213 {
1214 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1215 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1216 written |= (1 << 4);
1217 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1218 }
1219 }
1220 }
1221 }
1222
1223 abuf->written = written;
1224 return vpc;
1225 #undef FLD
1226 }
1227
1228 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1229
1230 static SEM_PC
1231 SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1232 {
1233 #define FLD(f) abuf->fields.sfmt_addcc.f
1234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1235 int UNUSED written = 0;
1236 IADDR UNUSED pc = abuf->addr;
1237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1238
1239 {
1240 SI tmp_shift;
1241 SI tmp_tmp;
1242 QI tmp_cc;
1243 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1244 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)]));
1245 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1246 {
1247 SI opval = tmp_tmp;
1248 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1249 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1250 }
1251 if (EQSI (tmp_tmp, 0)) {
1252 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1253 } else {
1254 if (LTSI (tmp_tmp, 0)) {
1255 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1256 } else {
1257 tmp_cc = ANDQI (tmp_cc, 3);
1258 }
1259 }
1260 {
1261 UQI opval = tmp_cc;
1262 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1263 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1264 }
1265 }
1266
1267 return vpc;
1268 #undef FLD
1269 }
1270
1271 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1272
1273 static SEM_PC
1274 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1275 {
1276 #define FLD(f) abuf->fields.sfmt_addcc.f
1277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1278 int UNUSED written = 0;
1279 IADDR UNUSED pc = abuf->addr;
1280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1281
1282 {
1283 SI tmp_shift;
1284 SI tmp_tmp;
1285 QI tmp_cc;
1286 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1287 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)]));
1288 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1289 {
1290 SI opval = tmp_tmp;
1291 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1292 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1293 }
1294 if (EQSI (tmp_tmp, 0)) {
1295 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1296 } else {
1297 if (LTSI (tmp_tmp, 0)) {
1298 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1299 } else {
1300 tmp_cc = ANDQI (tmp_cc, 3);
1301 }
1302 }
1303 {
1304 UQI opval = tmp_cc;
1305 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1306 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1307 }
1308 }
1309
1310 return vpc;
1311 #undef FLD
1312 }
1313
1314 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1315
1316 static SEM_PC
1317 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1318 {
1319 #define FLD(f) abuf->fields.sfmt_addcc.f
1320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1321 int UNUSED written = 0;
1322 IADDR UNUSED pc = abuf->addr;
1323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1324
1325 {
1326 SI tmp_shift;
1327 SI tmp_tmp;
1328 QI tmp_cc;
1329 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1330 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)]));
1331 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1332 {
1333 SI opval = tmp_tmp;
1334 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1335 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1336 }
1337 if (EQSI (tmp_tmp, 0)) {
1338 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1339 } else {
1340 if (LTSI (tmp_tmp, 0)) {
1341 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1342 } else {
1343 tmp_cc = ANDQI (tmp_cc, 3);
1344 }
1345 }
1346 {
1347 UQI opval = tmp_cc;
1348 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1349 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1350 }
1351 }
1352
1353 return vpc;
1354 #undef FLD
1355 }
1356
1357 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1358
1359 static SEM_PC
1360 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1361 {
1362 #define FLD(f) abuf->fields.sfmt_smulcc.f
1363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1364 int UNUSED written = 0;
1365 IADDR UNUSED pc = abuf->addr;
1366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1367
1368 {
1369 DI tmp_tmp;
1370 QI tmp_cc;
1371 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1372 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1373 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1374 tmp_cc = ANDQI (tmp_cc, 7);
1375 } else {
1376 tmp_cc = ORQI (tmp_cc, 8);
1377 }
1378 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1379 tmp_cc = ANDQI (tmp_cc, 11);
1380 } else {
1381 tmp_cc = ORQI (tmp_cc, 4);
1382 }
1383 {
1384 DI opval = tmp_tmp;
1385 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1386 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1387 }
1388 {
1389 UQI opval = tmp_cc;
1390 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1391 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1392 }
1393 }
1394
1395 return vpc;
1396 #undef FLD
1397 }
1398
1399 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1400
1401 static SEM_PC
1402 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1403 {
1404 #define FLD(f) abuf->fields.sfmt_smulcc.f
1405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = abuf->addr;
1408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1409
1410 {
1411 DI tmp_tmp;
1412 QI tmp_cc;
1413 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1414 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1415 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1416 tmp_cc = ANDQI (tmp_cc, 7);
1417 } else {
1418 tmp_cc = ORQI (tmp_cc, 8);
1419 }
1420 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1421 tmp_cc = ANDQI (tmp_cc, 11);
1422 } else {
1423 tmp_cc = ORQI (tmp_cc, 4);
1424 }
1425 {
1426 DI opval = tmp_tmp;
1427 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1428 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1429 }
1430 {
1431 UQI opval = tmp_cc;
1432 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1433 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1434 }
1435 }
1436
1437 return vpc;
1438 #undef FLD
1439 }
1440
1441 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1442
1443 static SEM_PC
1444 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1445 {
1446 #define FLD(f) abuf->fields.sfmt_caddcc.f
1447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1448 int UNUSED written = 0;
1449 IADDR UNUSED pc = abuf->addr;
1450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1451
1452 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1453 {
1454 BI tmp_tmp;
1455 QI tmp_cc;
1456 SI tmp_result;
1457 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1458 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1459 if (EQBI (tmp_tmp, 0)) {
1460 tmp_cc = ANDQI (tmp_cc, 13);
1461 } else {
1462 tmp_cc = ORQI (tmp_cc, 2);
1463 }
1464 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1465 if (EQBI (tmp_tmp, 0)) {
1466 tmp_cc = ANDQI (tmp_cc, 14);
1467 } else {
1468 tmp_cc = ORQI (tmp_cc, 1);
1469 }
1470 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1471 if (EQSI (tmp_result, 0)) {
1472 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1473 } else {
1474 if (LTSI (tmp_result, 0)) {
1475 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1476 } else {
1477 tmp_cc = ANDQI (tmp_cc, 3);
1478 }
1479 }
1480 {
1481 SI opval = tmp_result;
1482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1483 written |= (1 << 6);
1484 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1485 }
1486 {
1487 UQI opval = tmp_cc;
1488 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1489 written |= (1 << 7);
1490 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1491 }
1492 }
1493 }
1494
1495 abuf->written = written;
1496 return vpc;
1497 #undef FLD
1498 }
1499
1500 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1501
1502 static SEM_PC
1503 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1504 {
1505 #define FLD(f) abuf->fields.sfmt_caddcc.f
1506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1507 int UNUSED written = 0;
1508 IADDR UNUSED pc = abuf->addr;
1509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1510
1511 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1512 {
1513 BI tmp_tmp;
1514 QI tmp_cc;
1515 SI tmp_result;
1516 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1517 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1518 if (EQBI (tmp_tmp, 0)) {
1519 tmp_cc = ANDQI (tmp_cc, 13);
1520 } else {
1521 tmp_cc = ORQI (tmp_cc, 2);
1522 }
1523 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1524 if (EQBI (tmp_tmp, 0)) {
1525 tmp_cc = ANDQI (tmp_cc, 14);
1526 } else {
1527 tmp_cc = ORQI (tmp_cc, 1);
1528 }
1529 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1530 if (EQSI (tmp_result, 0)) {
1531 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1532 } else {
1533 if (LTSI (tmp_result, 0)) {
1534 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1535 } else {
1536 tmp_cc = ANDQI (tmp_cc, 3);
1537 }
1538 }
1539 {
1540 SI opval = tmp_result;
1541 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1542 written |= (1 << 6);
1543 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1544 }
1545 {
1546 UQI opval = tmp_cc;
1547 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1548 written |= (1 << 7);
1549 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1550 }
1551 }
1552 }
1553
1554 abuf->written = written;
1555 return vpc;
1556 #undef FLD
1557 }
1558
1559 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1560
1561 static SEM_PC
1562 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1563 {
1564 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1566 int UNUSED written = 0;
1567 IADDR UNUSED pc = abuf->addr;
1568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1569
1570 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1571 {
1572 DI tmp_tmp;
1573 QI tmp_cc;
1574 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1575 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1576 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1577 tmp_cc = ANDQI (tmp_cc, 7);
1578 } else {
1579 tmp_cc = ORQI (tmp_cc, 8);
1580 }
1581 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1582 tmp_cc = ANDQI (tmp_cc, 11);
1583 } else {
1584 tmp_cc = ORQI (tmp_cc, 4);
1585 }
1586 {
1587 DI opval = tmp_tmp;
1588 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1589 written |= (1 << 6);
1590 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1591 }
1592 {
1593 UQI opval = tmp_cc;
1594 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1595 written |= (1 << 7);
1596 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1597 }
1598 }
1599 }
1600
1601 abuf->written = written;
1602 return vpc;
1603 #undef FLD
1604 }
1605
1606 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1607
1608 static SEM_PC
1609 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1610 {
1611 #define FLD(f) abuf->fields.sfmt_caddcc.f
1612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1613 int UNUSED written = 0;
1614 IADDR UNUSED pc = abuf->addr;
1615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1616
1617 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1618 {
1619 SI tmp_tmp;
1620 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1621 {
1622 SI opval = tmp_tmp;
1623 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1624 written |= (1 << 6);
1625 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1626 }
1627 if (EQSI (tmp_tmp, 0)) {
1628 {
1629 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1630 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1631 written |= (1 << 7);
1632 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1633 }
1634 } else {
1635 if (LTSI (tmp_tmp, 0)) {
1636 {
1637 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1638 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1639 written |= (1 << 7);
1640 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1641 }
1642 } else {
1643 {
1644 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1645 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1646 written |= (1 << 7);
1647 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1648 }
1649 }
1650 }
1651 }
1652 }
1653
1654 abuf->written = written;
1655 return vpc;
1656 #undef FLD
1657 }
1658
1659 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1660
1661 static SEM_PC
1662 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1663 {
1664 #define FLD(f) abuf->fields.sfmt_caddcc.f
1665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1666 int UNUSED written = 0;
1667 IADDR UNUSED pc = abuf->addr;
1668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1669
1670 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1671 {
1672 SI tmp_tmp;
1673 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1674 {
1675 SI opval = tmp_tmp;
1676 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1677 written |= (1 << 6);
1678 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1679 }
1680 if (EQSI (tmp_tmp, 0)) {
1681 {
1682 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1683 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1684 written |= (1 << 7);
1685 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1686 }
1687 } else {
1688 if (LTSI (tmp_tmp, 0)) {
1689 {
1690 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1691 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1692 written |= (1 << 7);
1693 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1694 }
1695 } else {
1696 {
1697 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1698 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1699 written |= (1 << 7);
1700 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1701 }
1702 }
1703 }
1704 }
1705 }
1706
1707 abuf->written = written;
1708 return vpc;
1709 #undef FLD
1710 }
1711
1712 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1713
1714 static SEM_PC
1715 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1716 {
1717 #define FLD(f) abuf->fields.sfmt_caddcc.f
1718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1719 int UNUSED written = 0;
1720 IADDR UNUSED pc = abuf->addr;
1721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1722
1723 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1724 {
1725 SI tmp_tmp;
1726 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1727 {
1728 SI opval = tmp_tmp;
1729 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1730 written |= (1 << 6);
1731 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1732 }
1733 if (EQSI (tmp_tmp, 0)) {
1734 {
1735 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1736 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1737 written |= (1 << 7);
1738 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1739 }
1740 } else {
1741 if (LTSI (tmp_tmp, 0)) {
1742 {
1743 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1744 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1745 written |= (1 << 7);
1746 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1747 }
1748 } else {
1749 {
1750 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1751 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1752 written |= (1 << 7);
1753 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1754 }
1755 }
1756 }
1757 }
1758 }
1759
1760 abuf->written = written;
1761 return vpc;
1762 #undef FLD
1763 }
1764
1765 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1766
1767 static SEM_PC
1768 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1769 {
1770 #define FLD(f) abuf->fields.sfmt_caddcc.f
1771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1772 int UNUSED written = 0;
1773 IADDR UNUSED pc = abuf->addr;
1774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1775
1776 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1777 {
1778 SI tmp_shift;
1779 SI tmp_tmp;
1780 QI tmp_cc;
1781 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1782 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)]));
1783 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1784 {
1785 SI opval = tmp_tmp;
1786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1787 written |= (1 << 6);
1788 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1789 }
1790 if (EQSI (tmp_tmp, 0)) {
1791 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1792 } else {
1793 if (LTSI (tmp_tmp, 0)) {
1794 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1795 } else {
1796 tmp_cc = ANDQI (tmp_cc, 3);
1797 }
1798 }
1799 {
1800 UQI opval = tmp_cc;
1801 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1802 written |= (1 << 7);
1803 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1804 }
1805 }
1806 }
1807
1808 abuf->written = written;
1809 return vpc;
1810 #undef FLD
1811 }
1812
1813 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1814
1815 static SEM_PC
1816 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1817 {
1818 #define FLD(f) abuf->fields.sfmt_caddcc.f
1819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1820 int UNUSED written = 0;
1821 IADDR UNUSED pc = abuf->addr;
1822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1823
1824 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1825 {
1826 SI tmp_shift;
1827 SI tmp_tmp;
1828 QI tmp_cc;
1829 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1830 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)]));
1831 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1832 {
1833 SI opval = tmp_tmp;
1834 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1835 written |= (1 << 6);
1836 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1837 }
1838 if (EQSI (tmp_tmp, 0)) {
1839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1840 } else {
1841 if (LTSI (tmp_tmp, 0)) {
1842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1843 } else {
1844 tmp_cc = ANDQI (tmp_cc, 3);
1845 }
1846 }
1847 {
1848 UQI opval = tmp_cc;
1849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1850 written |= (1 << 7);
1851 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1852 }
1853 }
1854 }
1855
1856 abuf->written = written;
1857 return vpc;
1858 #undef FLD
1859 }
1860
1861 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1862
1863 static SEM_PC
1864 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1865 {
1866 #define FLD(f) abuf->fields.sfmt_caddcc.f
1867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1868 int UNUSED written = 0;
1869 IADDR UNUSED pc = abuf->addr;
1870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1871
1872 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1873 {
1874 SI tmp_shift;
1875 SI tmp_tmp;
1876 QI tmp_cc;
1877 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1878 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)]));
1879 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1880 {
1881 SI opval = tmp_tmp;
1882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1883 written |= (1 << 6);
1884 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1885 }
1886 if (EQSI (tmp_tmp, 0)) {
1887 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1888 } else {
1889 if (LTSI (tmp_tmp, 0)) {
1890 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1891 } else {
1892 tmp_cc = ANDQI (tmp_cc, 3);
1893 }
1894 }
1895 {
1896 UQI opval = tmp_cc;
1897 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1898 written |= (1 << 7);
1899 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1900 }
1901 }
1902 }
1903
1904 abuf->written = written;
1905 return vpc;
1906 #undef FLD
1907 }
1908
1909 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1910
1911 static SEM_PC
1912 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1913 {
1914 #define FLD(f) abuf->fields.sfmt_addcc.f
1915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1916 int UNUSED written = 0;
1917 IADDR UNUSED pc = abuf->addr;
1918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1919
1920 {
1921 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)));
1922 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1923 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1924 }
1925
1926 return vpc;
1927 #undef FLD
1928 }
1929
1930 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1931
1932 static SEM_PC
1933 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1934 {
1935 #define FLD(f) abuf->fields.sfmt_addcc.f
1936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1937 int UNUSED written = 0;
1938 IADDR UNUSED pc = abuf->addr;
1939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1940
1941 {
1942 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)));
1943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1944 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1945 }
1946
1947 return vpc;
1948 #undef FLD
1949 }
1950
1951 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1952
1953 static SEM_PC
1954 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1955 {
1956 #define FLD(f) abuf->fields.sfmt_addcc.f
1957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1958 int UNUSED written = 0;
1959 IADDR UNUSED pc = abuf->addr;
1960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1961
1962 {
1963 SI tmp_tmp;
1964 QI tmp_cc;
1965 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1966 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1967 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1968 tmp_cc = ANDQI (tmp_cc, 13);
1969 } else {
1970 tmp_cc = ORQI (tmp_cc, 2);
1971 }
1972 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1973 tmp_cc = ANDQI (tmp_cc, 14);
1974 } else {
1975 tmp_cc = ORQI (tmp_cc, 1);
1976 }
1977 if (EQSI (tmp_tmp, 0)) {
1978 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1979 } else {
1980 if (LTSI (tmp_tmp, 0)) {
1981 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1982 } else {
1983 tmp_cc = ANDQI (tmp_cc, 3);
1984 }
1985 }
1986 {
1987 SI opval = tmp_tmp;
1988 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1989 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1990 }
1991 {
1992 UQI opval = tmp_cc;
1993 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1994 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1995 }
1996 }
1997
1998 return vpc;
1999 #undef FLD
2000 }
2001
2002 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2003
2004 static SEM_PC
2005 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2006 {
2007 #define FLD(f) abuf->fields.sfmt_addcc.f
2008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2009 int UNUSED written = 0;
2010 IADDR UNUSED pc = abuf->addr;
2011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2012
2013 {
2014 SI tmp_tmp;
2015 QI tmp_cc;
2016 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2017 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2018 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2019 tmp_cc = ANDQI (tmp_cc, 13);
2020 } else {
2021 tmp_cc = ORQI (tmp_cc, 2);
2022 }
2023 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2024 tmp_cc = ANDQI (tmp_cc, 14);
2025 } else {
2026 tmp_cc = ORQI (tmp_cc, 1);
2027 }
2028 if (EQSI (tmp_tmp, 0)) {
2029 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2030 } else {
2031 if (LTSI (tmp_tmp, 0)) {
2032 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2033 } else {
2034 tmp_cc = ANDQI (tmp_cc, 3);
2035 }
2036 }
2037 {
2038 SI opval = tmp_tmp;
2039 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2040 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2041 }
2042 {
2043 UQI opval = tmp_cc;
2044 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2045 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2046 }
2047 }
2048
2049 return vpc;
2050 #undef FLD
2051 }
2052
2053 /* addss: addss$pack $GRi,$GRj,$GRk */
2054
2055 static SEM_PC
2056 SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2057 {
2058 #define FLD(f) abuf->fields.sfmt_addcc.f
2059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2060 int UNUSED written = 0;
2061 IADDR UNUSED pc = abuf->addr;
2062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2063
2064 {
2065 {
2066 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2067 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2068 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2069 }
2070 if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2071 {
2072 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2073 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2074 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2075 }
2076 }
2077 }
2078
2079 return vpc;
2080 #undef FLD
2081 }
2082
2083 /* subss: subss$pack $GRi,$GRj,$GRk */
2084
2085 static SEM_PC
2086 SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2087 {
2088 #define FLD(f) abuf->fields.sfmt_addcc.f
2089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2090 int UNUSED written = 0;
2091 IADDR UNUSED pc = abuf->addr;
2092 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2093
2094 {
2095 {
2096 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2098 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2099 }
2100 if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2101 {
2102 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2103 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2104 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2105 }
2106 }
2107 }
2108
2109 return vpc;
2110 #undef FLD
2111 }
2112
2113 /* addi: addi$pack $GRi,$s12,$GRk */
2114
2115 static SEM_PC
2116 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2117 {
2118 #define FLD(f) abuf->fields.sfmt_swapi.f
2119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2120 int UNUSED written = 0;
2121 IADDR UNUSED pc = abuf->addr;
2122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2123
2124 {
2125 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2126 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2127 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2128 }
2129
2130 return vpc;
2131 #undef FLD
2132 }
2133
2134 /* subi: subi$pack $GRi,$s12,$GRk */
2135
2136 static SEM_PC
2137 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2138 {
2139 #define FLD(f) abuf->fields.sfmt_swapi.f
2140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2141 int UNUSED written = 0;
2142 IADDR UNUSED pc = abuf->addr;
2143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2144
2145 {
2146 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2148 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2149 }
2150
2151 return vpc;
2152 #undef FLD
2153 }
2154
2155 /* andi: andi$pack $GRi,$s12,$GRk */
2156
2157 static SEM_PC
2158 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2159 {
2160 #define FLD(f) abuf->fields.sfmt_swapi.f
2161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2162 int UNUSED written = 0;
2163 IADDR UNUSED pc = abuf->addr;
2164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2165
2166 {
2167 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2168 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2169 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2170 }
2171
2172 return vpc;
2173 #undef FLD
2174 }
2175
2176 /* ori: ori$pack $GRi,$s12,$GRk */
2177
2178 static SEM_PC
2179 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2180 {
2181 #define FLD(f) abuf->fields.sfmt_swapi.f
2182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2183 int UNUSED written = 0;
2184 IADDR UNUSED pc = abuf->addr;
2185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2186
2187 {
2188 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2189 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2190 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2191 }
2192
2193 return vpc;
2194 #undef FLD
2195 }
2196
2197 /* xori: xori$pack $GRi,$s12,$GRk */
2198
2199 static SEM_PC
2200 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2201 {
2202 #define FLD(f) abuf->fields.sfmt_swapi.f
2203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2204 int UNUSED written = 0;
2205 IADDR UNUSED pc = abuf->addr;
2206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2207
2208 {
2209 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2211 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2212 }
2213
2214 return vpc;
2215 #undef FLD
2216 }
2217
2218 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2219
2220 static SEM_PC
2221 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2222 {
2223 #define FLD(f) abuf->fields.sfmt_swapi.f
2224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2225 int UNUSED written = 0;
2226 IADDR UNUSED pc = abuf->addr;
2227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2228
2229 {
2230 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2231 ; /*clobber*/
2232 }
2233
2234 return vpc;
2235 #undef FLD
2236 }
2237
2238 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2239
2240 static SEM_PC
2241 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2242 {
2243 #define FLD(f) abuf->fields.sfmt_swapi.f
2244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2245 int UNUSED written = 0;
2246 IADDR UNUSED pc = abuf->addr;
2247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2248
2249 {
2250 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2251 ; /*clobber*/
2252 }
2253
2254 return vpc;
2255 #undef FLD
2256 }
2257
2258 /* udivi: udivi$pack $GRi,$s12,$GRk */
2259
2260 static SEM_PC
2261 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2262 {
2263 #define FLD(f) abuf->fields.sfmt_swapi.f
2264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2265 int UNUSED written = 0;
2266 IADDR UNUSED pc = abuf->addr;
2267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2268
2269 {
2270 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2271 ; /*clobber*/
2272 }
2273
2274 return vpc;
2275 #undef FLD
2276 }
2277
2278 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2279
2280 static SEM_PC
2281 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2282 {
2283 #define FLD(f) abuf->fields.sfmt_swapi.f
2284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2285 int UNUSED written = 0;
2286 IADDR UNUSED pc = abuf->addr;
2287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2288
2289 {
2290 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2291 ; /*clobber*/
2292 }
2293
2294 return vpc;
2295 #undef FLD
2296 }
2297
2298 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2299
2300 static SEM_PC
2301 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2302 {
2303 #define FLD(f) abuf->fields.sfmt_smuli.f
2304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2305 int UNUSED written = 0;
2306 IADDR UNUSED pc = abuf->addr;
2307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2308
2309 {
2310 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2311 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2312 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2313 }
2314
2315 return vpc;
2316 #undef FLD
2317 }
2318
2319 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2320
2321 static SEM_PC
2322 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2323 {
2324 #define FLD(f) abuf->fields.sfmt_smuli.f
2325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2326 int UNUSED written = 0;
2327 IADDR UNUSED pc = abuf->addr;
2328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2329
2330 {
2331 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2332 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2333 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2334 }
2335
2336 return vpc;
2337 #undef FLD
2338 }
2339
2340 /* slli: slli$pack $GRi,$s12,$GRk */
2341
2342 static SEM_PC
2343 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2344 {
2345 #define FLD(f) abuf->fields.sfmt_swapi.f
2346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2347 int UNUSED written = 0;
2348 IADDR UNUSED pc = abuf->addr;
2349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2350
2351 {
2352 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2353 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2354 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2355 }
2356
2357 return vpc;
2358 #undef FLD
2359 }
2360
2361 /* srli: srli$pack $GRi,$s12,$GRk */
2362
2363 static SEM_PC
2364 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2365 {
2366 #define FLD(f) abuf->fields.sfmt_swapi.f
2367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2368 int UNUSED written = 0;
2369 IADDR UNUSED pc = abuf->addr;
2370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2371
2372 {
2373 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2374 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2375 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2376 }
2377
2378 return vpc;
2379 #undef FLD
2380 }
2381
2382 /* srai: srai$pack $GRi,$s12,$GRk */
2383
2384 static SEM_PC
2385 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2386 {
2387 #define FLD(f) abuf->fields.sfmt_swapi.f
2388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2389 int UNUSED written = 0;
2390 IADDR UNUSED pc = abuf->addr;
2391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2392
2393 {
2394 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2395 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2396 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2397 }
2398
2399 return vpc;
2400 #undef FLD
2401 }
2402
2403 /* scani: scani$pack $GRi,$s12,$GRk */
2404
2405 static SEM_PC
2406 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2407 {
2408 #define FLD(f) abuf->fields.sfmt_swapi.f
2409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2410 int UNUSED written = 0;
2411 IADDR UNUSED pc = abuf->addr;
2412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2413
2414 {
2415 SI tmp_tmp1;
2416 SI tmp_tmp2;
2417 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2418 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2419 {
2420 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2421 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2422 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2423 }
2424 }
2425
2426 return vpc;
2427 #undef FLD
2428 }
2429
2430 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2431
2432 static SEM_PC
2433 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2434 {
2435 #define FLD(f) abuf->fields.sfmt_addicc.f
2436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2437 int UNUSED written = 0;
2438 IADDR UNUSED pc = abuf->addr;
2439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2440
2441 {
2442 BI tmp_tmp;
2443 QI tmp_cc;
2444 SI tmp_result;
2445 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2446 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2447 if (EQBI (tmp_tmp, 0)) {
2448 tmp_cc = ANDQI (tmp_cc, 13);
2449 } else {
2450 tmp_cc = ORQI (tmp_cc, 2);
2451 }
2452 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2453 if (EQBI (tmp_tmp, 0)) {
2454 tmp_cc = ANDQI (tmp_cc, 14);
2455 } else {
2456 tmp_cc = ORQI (tmp_cc, 1);
2457 }
2458 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2459 if (EQSI (tmp_result, 0)) {
2460 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2461 } else {
2462 if (LTSI (tmp_result, 0)) {
2463 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2464 } else {
2465 tmp_cc = ANDQI (tmp_cc, 3);
2466 }
2467 }
2468 {
2469 SI opval = tmp_result;
2470 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2471 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2472 }
2473 {
2474 UQI opval = tmp_cc;
2475 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2476 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2477 }
2478 }
2479
2480 return vpc;
2481 #undef FLD
2482 }
2483
2484 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2485
2486 static SEM_PC
2487 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2488 {
2489 #define FLD(f) abuf->fields.sfmt_addicc.f
2490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2491 int UNUSED written = 0;
2492 IADDR UNUSED pc = abuf->addr;
2493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2494
2495 {
2496 BI tmp_tmp;
2497 QI tmp_cc;
2498 SI tmp_result;
2499 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2500 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2501 if (EQBI (tmp_tmp, 0)) {
2502 tmp_cc = ANDQI (tmp_cc, 13);
2503 } else {
2504 tmp_cc = ORQI (tmp_cc, 2);
2505 }
2506 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2507 if (EQBI (tmp_tmp, 0)) {
2508 tmp_cc = ANDQI (tmp_cc, 14);
2509 } else {
2510 tmp_cc = ORQI (tmp_cc, 1);
2511 }
2512 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2513 if (EQSI (tmp_result, 0)) {
2514 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2515 } else {
2516 if (LTSI (tmp_result, 0)) {
2517 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2518 } else {
2519 tmp_cc = ANDQI (tmp_cc, 3);
2520 }
2521 }
2522 {
2523 SI opval = tmp_result;
2524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2525 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2526 }
2527 {
2528 UQI opval = tmp_cc;
2529 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2530 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2531 }
2532 }
2533
2534 return vpc;
2535 #undef FLD
2536 }
2537
2538 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2539
2540 static SEM_PC
2541 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2542 {
2543 #define FLD(f) abuf->fields.sfmt_addicc.f
2544 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2545 int UNUSED written = 0;
2546 IADDR UNUSED pc = abuf->addr;
2547 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2548
2549 {
2550 SI tmp_tmp;
2551 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2552 {
2553 SI opval = tmp_tmp;
2554 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2555 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2556 }
2557 if (EQSI (tmp_tmp, 0)) {
2558 {
2559 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2560 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2561 written |= (1 << 4);
2562 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2563 }
2564 } else {
2565 if (LTSI (tmp_tmp, 0)) {
2566 {
2567 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2568 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2569 written |= (1 << 4);
2570 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2571 }
2572 } else {
2573 {
2574 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2575 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2576 written |= (1 << 4);
2577 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2578 }
2579 }
2580 }
2581 }
2582
2583 abuf->written = written;
2584 return vpc;
2585 #undef FLD
2586 }
2587
2588 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2589
2590 static SEM_PC
2591 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2592 {
2593 #define FLD(f) abuf->fields.sfmt_addicc.f
2594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2595 int UNUSED written = 0;
2596 IADDR UNUSED pc = abuf->addr;
2597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2598
2599 {
2600 SI tmp_tmp;
2601 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2602 {
2603 SI opval = tmp_tmp;
2604 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2605 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2606 }
2607 if (EQSI (tmp_tmp, 0)) {
2608 {
2609 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2610 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2611 written |= (1 << 4);
2612 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2613 }
2614 } else {
2615 if (LTSI (tmp_tmp, 0)) {
2616 {
2617 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2618 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2619 written |= (1 << 4);
2620 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2621 }
2622 } else {
2623 {
2624 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2625 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2626 written |= (1 << 4);
2627 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2628 }
2629 }
2630 }
2631 }
2632
2633 abuf->written = written;
2634 return vpc;
2635 #undef FLD
2636 }
2637
2638 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2639
2640 static SEM_PC
2641 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2642 {
2643 #define FLD(f) abuf->fields.sfmt_addicc.f
2644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2645 int UNUSED written = 0;
2646 IADDR UNUSED pc = abuf->addr;
2647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2648
2649 {
2650 SI tmp_tmp;
2651 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2652 {
2653 SI opval = tmp_tmp;
2654 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2655 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2656 }
2657 if (EQSI (tmp_tmp, 0)) {
2658 {
2659 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2660 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2661 written |= (1 << 4);
2662 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2663 }
2664 } else {
2665 if (LTSI (tmp_tmp, 0)) {
2666 {
2667 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2668 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2669 written |= (1 << 4);
2670 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2671 }
2672 } else {
2673 {
2674 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2675 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2676 written |= (1 << 4);
2677 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2678 }
2679 }
2680 }
2681 }
2682
2683 abuf->written = written;
2684 return vpc;
2685 #undef FLD
2686 }
2687
2688 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2689
2690 static SEM_PC
2691 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2692 {
2693 #define FLD(f) abuf->fields.sfmt_smulicc.f
2694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2695 int UNUSED written = 0;
2696 IADDR UNUSED pc = abuf->addr;
2697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2698
2699 {
2700 DI tmp_tmp;
2701 QI tmp_cc;
2702 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2703 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2704 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2705 tmp_cc = ANDQI (tmp_cc, 7);
2706 } else {
2707 tmp_cc = ORQI (tmp_cc, 8);
2708 }
2709 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2710 tmp_cc = ANDQI (tmp_cc, 11);
2711 } else {
2712 tmp_cc = ORQI (tmp_cc, 4);
2713 }
2714 {
2715 DI opval = tmp_tmp;
2716 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2717 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2718 }
2719 {
2720 UQI opval = tmp_cc;
2721 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2722 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2723 }
2724 }
2725
2726 return vpc;
2727 #undef FLD
2728 }
2729
2730 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2731
2732 static SEM_PC
2733 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2734 {
2735 #define FLD(f) abuf->fields.sfmt_smulicc.f
2736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2737 int UNUSED written = 0;
2738 IADDR UNUSED pc = abuf->addr;
2739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2740
2741 {
2742 DI tmp_tmp;
2743 QI tmp_cc;
2744 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2745 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2746 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2747 tmp_cc = ANDQI (tmp_cc, 7);
2748 } else {
2749 tmp_cc = ORQI (tmp_cc, 8);
2750 }
2751 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2752 tmp_cc = ANDQI (tmp_cc, 11);
2753 } else {
2754 tmp_cc = ORQI (tmp_cc, 4);
2755 }
2756 {
2757 DI opval = tmp_tmp;
2758 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2759 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2760 }
2761 {
2762 UQI opval = tmp_cc;
2763 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2764 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2765 }
2766 }
2767
2768 return vpc;
2769 #undef FLD
2770 }
2771
2772 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2773
2774 static SEM_PC
2775 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2776 {
2777 #define FLD(f) abuf->fields.sfmt_addicc.f
2778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2779 int UNUSED written = 0;
2780 IADDR UNUSED pc = abuf->addr;
2781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2782
2783 {
2784 SI tmp_shift;
2785 SI tmp_tmp;
2786 QI tmp_cc;
2787 tmp_shift = ANDSI (FLD (f_s10), 31);
2788 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)]));
2789 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2790 {
2791 SI opval = tmp_tmp;
2792 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2793 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2794 }
2795 if (EQSI (tmp_tmp, 0)) {
2796 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2797 } else {
2798 if (LTSI (tmp_tmp, 0)) {
2799 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2800 } else {
2801 tmp_cc = ANDQI (tmp_cc, 3);
2802 }
2803 }
2804 {
2805 UQI opval = tmp_cc;
2806 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2807 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2808 }
2809 }
2810
2811 return vpc;
2812 #undef FLD
2813 }
2814
2815 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2816
2817 static SEM_PC
2818 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2819 {
2820 #define FLD(f) abuf->fields.sfmt_addicc.f
2821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2822 int UNUSED written = 0;
2823 IADDR UNUSED pc = abuf->addr;
2824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2825
2826 {
2827 SI tmp_shift;
2828 SI tmp_tmp;
2829 QI tmp_cc;
2830 tmp_shift = ANDSI (FLD (f_s10), 31);
2831 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)]));
2832 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2833 {
2834 SI opval = tmp_tmp;
2835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2836 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2837 }
2838 if (EQSI (tmp_tmp, 0)) {
2839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2840 } else {
2841 if (LTSI (tmp_tmp, 0)) {
2842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2843 } else {
2844 tmp_cc = ANDQI (tmp_cc, 3);
2845 }
2846 }
2847 {
2848 UQI opval = tmp_cc;
2849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2850 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2851 }
2852 }
2853
2854 return vpc;
2855 #undef FLD
2856 }
2857
2858 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2859
2860 static SEM_PC
2861 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2862 {
2863 #define FLD(f) abuf->fields.sfmt_addicc.f
2864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2865 int UNUSED written = 0;
2866 IADDR UNUSED pc = abuf->addr;
2867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2868
2869 {
2870 SI tmp_shift;
2871 SI tmp_tmp;
2872 QI tmp_cc;
2873 tmp_shift = ANDSI (FLD (f_s10), 31);
2874 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)]));
2875 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2876 {
2877 SI opval = tmp_tmp;
2878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2879 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2880 }
2881 if (EQSI (tmp_tmp, 0)) {
2882 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2883 } else {
2884 if (LTSI (tmp_tmp, 0)) {
2885 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2886 } else {
2887 tmp_cc = ANDQI (tmp_cc, 3);
2888 }
2889 }
2890 {
2891 UQI opval = tmp_cc;
2892 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2893 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2894 }
2895 }
2896
2897 return vpc;
2898 #undef FLD
2899 }
2900
2901 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2902
2903 static SEM_PC
2904 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2905 {
2906 #define FLD(f) abuf->fields.sfmt_addicc.f
2907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2908 int UNUSED written = 0;
2909 IADDR UNUSED pc = abuf->addr;
2910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2911
2912 {
2913 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2915 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2916 }
2917
2918 return vpc;
2919 #undef FLD
2920 }
2921
2922 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2923
2924 static SEM_PC
2925 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2926 {
2927 #define FLD(f) abuf->fields.sfmt_addicc.f
2928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2929 int UNUSED written = 0;
2930 IADDR UNUSED pc = abuf->addr;
2931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2932
2933 {
2934 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2935 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2936 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2937 }
2938
2939 return vpc;
2940 #undef FLD
2941 }
2942
2943 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2944
2945 static SEM_PC
2946 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2947 {
2948 #define FLD(f) abuf->fields.sfmt_addicc.f
2949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2950 int UNUSED written = 0;
2951 IADDR UNUSED pc = abuf->addr;
2952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2953
2954 {
2955 SI tmp_tmp;
2956 QI tmp_cc;
2957 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2958 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2959 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2960 tmp_cc = ANDQI (tmp_cc, 13);
2961 } else {
2962 tmp_cc = ORQI (tmp_cc, 2);
2963 }
2964 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2965 tmp_cc = ANDQI (tmp_cc, 14);
2966 } else {
2967 tmp_cc = ORQI (tmp_cc, 1);
2968 }
2969 if (EQSI (tmp_tmp, 0)) {
2970 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2971 } else {
2972 if (LTSI (tmp_tmp, 0)) {
2973 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2974 } else {
2975 tmp_cc = ANDQI (tmp_cc, 3);
2976 }
2977 }
2978 {
2979 SI opval = tmp_tmp;
2980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2981 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2982 }
2983 {
2984 UQI opval = tmp_cc;
2985 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2986 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2987 }
2988 }
2989
2990 return vpc;
2991 #undef FLD
2992 }
2993
2994 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2995
2996 static SEM_PC
2997 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2998 {
2999 #define FLD(f) abuf->fields.sfmt_addicc.f
3000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3001 int UNUSED written = 0;
3002 IADDR UNUSED pc = abuf->addr;
3003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3004
3005 {
3006 SI tmp_tmp;
3007 QI tmp_cc;
3008 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3009 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3010 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3011 tmp_cc = ANDQI (tmp_cc, 13);
3012 } else {
3013 tmp_cc = ORQI (tmp_cc, 2);
3014 }
3015 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3016 tmp_cc = ANDQI (tmp_cc, 14);
3017 } else {
3018 tmp_cc = ORQI (tmp_cc, 1);
3019 }
3020 if (EQSI (tmp_tmp, 0)) {
3021 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3022 } else {
3023 if (LTSI (tmp_tmp, 0)) {
3024 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3025 } else {
3026 tmp_cc = ANDQI (tmp_cc, 3);
3027 }
3028 }
3029 {
3030 SI opval = tmp_tmp;
3031 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3032 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3033 }
3034 {
3035 UQI opval = tmp_cc;
3036 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3037 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3038 }
3039 }
3040
3041 return vpc;
3042 #undef FLD
3043 }
3044
3045 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3046
3047 static SEM_PC
3048 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3049 {
3050 #define FLD(f) abuf->fields.sfmt_smulcc.f
3051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3052 int UNUSED written = 0;
3053 IADDR UNUSED pc = abuf->addr;
3054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3055
3056 {
3057 QI tmp_cc;
3058 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3059 tmp_cc = ANDQI (tmp_cc, 7);
3060 } else {
3061 tmp_cc = ORQI (tmp_cc, 8);
3062 }
3063 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3064 tmp_cc = ANDQI (tmp_cc, 11);
3065 } else {
3066 tmp_cc = ORQI (tmp_cc, 4);
3067 }
3068 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3069 tmp_cc = ANDQI (tmp_cc, 13);
3070 } else {
3071 tmp_cc = ORQI (tmp_cc, 2);
3072 }
3073 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3074 tmp_cc = ANDQI (tmp_cc, 14);
3075 } else {
3076 tmp_cc = ORQI (tmp_cc, 1);
3077 }
3078 {
3079 UQI opval = tmp_cc;
3080 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3081 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3082 }
3083 }
3084
3085 return vpc;
3086 #undef FLD
3087 }
3088
3089 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3090
3091 static SEM_PC
3092 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3093 {
3094 #define FLD(f) abuf->fields.sfmt_smulcc.f
3095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3096 int UNUSED written = 0;
3097 IADDR UNUSED pc = abuf->addr;
3098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3099
3100 {
3101 QI tmp_cc;
3102 tmp_cc = 0;
3103 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)) {
3104 tmp_cc = ANDQI (tmp_cc, 14);
3105 } else {
3106 tmp_cc = ORQI (tmp_cc, 1);
3107 }
3108 {
3109 UQI opval = tmp_cc;
3110 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3111 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3112 }
3113 }
3114
3115 return vpc;
3116 #undef FLD
3117 }
3118
3119 /* setlo: setlo$pack $ulo16,$GRklo */
3120
3121 static SEM_PC
3122 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3123 {
3124 #define FLD(f) abuf->fields.sfmt_setlo.f
3125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3126 int UNUSED written = 0;
3127 IADDR UNUSED pc = abuf->addr;
3128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3129
3130 {
3131 UHI opval = FLD (f_u16);
3132 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3133 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3134 }
3135
3136 return vpc;
3137 #undef FLD
3138 }
3139
3140 /* sethi: sethi$pack $uhi16,$GRkhi */
3141
3142 static SEM_PC
3143 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3144 {
3145 #define FLD(f) abuf->fields.sfmt_sethi.f
3146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3147 int UNUSED written = 0;
3148 IADDR UNUSED pc = abuf->addr;
3149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3150
3151 {
3152 UHI opval = FLD (f_u16);
3153 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3154 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3155 }
3156
3157 return vpc;
3158 #undef FLD
3159 }
3160
3161 /* setlos: setlos$pack $slo16,$GRk */
3162
3163 static SEM_PC
3164 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3165 {
3166 #define FLD(f) abuf->fields.sfmt_setlos.f
3167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3168 int UNUSED written = 0;
3169 IADDR UNUSED pc = abuf->addr;
3170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3171
3172 {
3173 SI opval = FLD (f_s16);
3174 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3175 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3176 }
3177
3178 return vpc;
3179 #undef FLD
3180 }
3181
3182 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3183
3184 static SEM_PC
3185 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3186 {
3187 #define FLD(f) abuf->fields.sfmt_addcc.f
3188 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3189 int UNUSED written = 0;
3190 IADDR UNUSED pc = abuf->addr;
3191 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3192
3193 {
3194 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3195 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3196 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3197 }
3198
3199 return vpc;
3200 #undef FLD
3201 }
3202
3203 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3204
3205 static SEM_PC
3206 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3207 {
3208 #define FLD(f) abuf->fields.sfmt_addcc.f
3209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3210 int UNUSED written = 0;
3211 IADDR UNUSED pc = abuf->addr;
3212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3213
3214 {
3215 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3216 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3217 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3218 }
3219
3220 return vpc;
3221 #undef FLD
3222 }
3223
3224 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3225
3226 static SEM_PC
3227 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3228 {
3229 #define FLD(f) abuf->fields.sfmt_addcc.f
3230 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3231 int UNUSED written = 0;
3232 IADDR UNUSED pc = abuf->addr;
3233 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3234
3235 {
3236 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3237 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3238 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3239 }
3240
3241 return vpc;
3242 #undef FLD
3243 }
3244
3245 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3246
3247 static SEM_PC
3248 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3249 {
3250 #define FLD(f) abuf->fields.sfmt_addcc.f
3251 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3252 int UNUSED written = 0;
3253 IADDR UNUSED pc = abuf->addr;
3254 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3255
3256 {
3257 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3258 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3259 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3260 }
3261
3262 return vpc;
3263 #undef FLD
3264 }
3265
3266 /* ld: ld$pack $ldann($GRi,$GRj),$GRk */
3267
3268 static SEM_PC
3269 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3270 {
3271 #define FLD(f) abuf->fields.sfmt_addcc.f
3272 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3273 int UNUSED written = 0;
3274 IADDR UNUSED pc = abuf->addr;
3275 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3276
3277 {
3278 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3279 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3280 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3281 }
3282
3283 return vpc;
3284 #undef FLD
3285 }
3286
3287 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3288
3289 static SEM_PC
3290 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3291 {
3292 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3293 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3294 int UNUSED written = 0;
3295 IADDR UNUSED pc = abuf->addr;
3296 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3297
3298 {
3299 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3300 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3301 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3302 }
3303
3304 return vpc;
3305 #undef FLD
3306 }
3307
3308 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3309
3310 static SEM_PC
3311 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3312 {
3313 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3314 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3315 int UNUSED written = 0;
3316 IADDR UNUSED pc = abuf->addr;
3317 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3318
3319 {
3320 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3321 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3322 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3323 }
3324
3325 return vpc;
3326 #undef FLD
3327 }
3328
3329 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3330
3331 static SEM_PC
3332 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3333 {
3334 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3336 int UNUSED written = 0;
3337 IADDR UNUSED pc = abuf->addr;
3338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3339
3340 {
3341 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3342 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3343 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3344 }
3345
3346 return vpc;
3347 #undef FLD
3348 }
3349
3350 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3351
3352 static SEM_PC
3353 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3354 {
3355 #define FLD(f) abuf->fields.sfmt_ldcu.f
3356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3357 int UNUSED written = 0;
3358 IADDR UNUSED pc = abuf->addr;
3359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3360
3361 {
3362 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3363 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3364 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3365 }
3366
3367 return vpc;
3368 #undef FLD
3369 }
3370
3371 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3372
3373 static SEM_PC
3374 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3375 {
3376 #define FLD(f) abuf->fields.sfmt_addcc.f
3377 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3378 int UNUSED written = 0;
3379 IADDR UNUSED pc = abuf->addr;
3380 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3381
3382 {
3383 BI tmp_do_op;
3384 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3385 if (tmp_do_op) {
3386 {
3387 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3388 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3389 written |= (1 << 6);
3390 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3391 }
3392 }
3393 }
3394
3395 abuf->written = written;
3396 return vpc;
3397 #undef FLD
3398 }
3399
3400 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3401
3402 static SEM_PC
3403 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3404 {
3405 #define FLD(f) abuf->fields.sfmt_addcc.f
3406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3407 int UNUSED written = 0;
3408 IADDR UNUSED pc = abuf->addr;
3409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3410
3411 {
3412 BI tmp_do_op;
3413 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3414 if (tmp_do_op) {
3415 {
3416 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3417 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3418 written |= (1 << 6);
3419 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3420 }
3421 }
3422 }
3423
3424 abuf->written = written;
3425 return vpc;
3426 #undef FLD
3427 }
3428
3429 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3430
3431 static SEM_PC
3432 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3433 {
3434 #define FLD(f) abuf->fields.sfmt_addcc.f
3435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3436 int UNUSED written = 0;
3437 IADDR UNUSED pc = abuf->addr;
3438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3439
3440 {
3441 BI tmp_do_op;
3442 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3443 if (tmp_do_op) {
3444 {
3445 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3446 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3447 written |= (1 << 6);
3448 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3449 }
3450 }
3451 }
3452
3453 abuf->written = written;
3454 return vpc;
3455 #undef FLD
3456 }
3457
3458 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3459
3460 static SEM_PC
3461 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3462 {
3463 #define FLD(f) abuf->fields.sfmt_addcc.f
3464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3465 int UNUSED written = 0;
3466 IADDR UNUSED pc = abuf->addr;
3467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3468
3469 {
3470 BI tmp_do_op;
3471 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3472 if (tmp_do_op) {
3473 {
3474 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3475 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3476 written |= (1 << 6);
3477 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3478 }
3479 }
3480 }
3481
3482 abuf->written = written;
3483 return vpc;
3484 #undef FLD
3485 }
3486
3487 /* nld: nld$pack @($GRi,$GRj),$GRk */
3488
3489 static SEM_PC
3490 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3491 {
3492 #define FLD(f) abuf->fields.sfmt_addcc.f
3493 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3494 int UNUSED written = 0;
3495 IADDR UNUSED pc = abuf->addr;
3496 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3497
3498 {
3499 BI tmp_do_op;
3500 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3501 if (tmp_do_op) {
3502 {
3503 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3504 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3505 written |= (1 << 6);
3506 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3507 }
3508 }
3509 }
3510
3511 abuf->written = written;
3512 return vpc;
3513 #undef FLD
3514 }
3515
3516 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3517
3518 static SEM_PC
3519 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3520 {
3521 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3523 int UNUSED written = 0;
3524 IADDR UNUSED pc = abuf->addr;
3525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3526
3527 {
3528 BI tmp_do_op;
3529 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3530 if (tmp_do_op) {
3531 {
3532 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3533 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3534 written |= (1 << 6);
3535 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3536 }
3537 }
3538 }
3539
3540 abuf->written = written;
3541 return vpc;
3542 #undef FLD
3543 }
3544
3545 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3546
3547 static SEM_PC
3548 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3549 {
3550 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3552 int UNUSED written = 0;
3553 IADDR UNUSED pc = abuf->addr;
3554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3555
3556 {
3557 BI tmp_do_op;
3558 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3559 if (tmp_do_op) {
3560 {
3561 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3562 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3563 written |= (1 << 6);
3564 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3565 }
3566 }
3567 }
3568
3569 abuf->written = written;
3570 return vpc;
3571 #undef FLD
3572 }
3573
3574 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3575
3576 static SEM_PC
3577 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3578 {
3579 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3581 int UNUSED written = 0;
3582 IADDR UNUSED pc = abuf->addr;
3583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3584
3585 {
3586 BI tmp_do_op;
3587 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3588 if (tmp_do_op) {
3589 {
3590 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3591 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3592 written |= (1 << 6);
3593 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3594 }
3595 }
3596 }
3597
3598 abuf->written = written;
3599 return vpc;
3600 #undef FLD
3601 }
3602
3603 /* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
3604
3605 static SEM_PC
3606 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3607 {
3608 #define FLD(f) abuf->fields.sfmt_smulcc.f
3609 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3610 int UNUSED written = 0;
3611 IADDR UNUSED pc = abuf->addr;
3612 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3613
3614 {
3615 SI tmp_address;
3616 if (NESI (FLD (f_GRk), 0)) {
3617 {
3618 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3619 {
3620 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3621 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3622 written |= (1 << 4);
3623 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3624 }
3625 }
3626 }
3627 }
3628
3629 abuf->written = written;
3630 return vpc;
3631 #undef FLD
3632 }
3633
3634 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3635
3636 static SEM_PC
3637 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3638 {
3639 #define FLD(f) abuf->fields.sfmt_clddfu.f
3640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3641 int UNUSED written = 0;
3642 IADDR UNUSED pc = abuf->addr;
3643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3644
3645 {
3646 SI tmp_address;
3647 {
3648 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3649 {
3650 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3651 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3652 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3653 }
3654 }
3655 }
3656
3657 return vpc;
3658 #undef FLD
3659 }
3660
3661 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3662
3663 static SEM_PC
3664 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3665 {
3666 #define FLD(f) abuf->fields.sfmt_lddcu.f
3667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3668 int UNUSED written = 0;
3669 IADDR UNUSED pc = abuf->addr;
3670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3671
3672 {
3673 SI tmp_address;
3674 {
3675 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3676 {
3677 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3678 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3679 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3680 }
3681 }
3682 }
3683
3684 return vpc;
3685 #undef FLD
3686 }
3687
3688 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3689
3690 static SEM_PC
3691 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3692 {
3693 #define FLD(f) abuf->fields.sfmt_smulcc.f
3694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3695 int UNUSED written = 0;
3696 IADDR UNUSED pc = abuf->addr;
3697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3698
3699 {
3700 SI tmp_address;
3701 {
3702 BI tmp_do_op;
3703 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3704 if (tmp_do_op) {
3705 if (NESI (FLD (f_GRk), 0)) {
3706 {
3707 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3708 {
3709 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3710 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3711 written |= (1 << 6);
3712 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3713 }
3714 }
3715 }
3716 }
3717 }
3718 }
3719
3720 abuf->written = written;
3721 return vpc;
3722 #undef FLD
3723 }
3724
3725 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3726
3727 static SEM_PC
3728 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3729 {
3730 #define FLD(f) abuf->fields.sfmt_clddfu.f
3731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3732 int UNUSED written = 0;
3733 IADDR UNUSED pc = abuf->addr;
3734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3735
3736 {
3737 SI tmp_address;
3738 {
3739 BI tmp_do_op;
3740 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3741 if (tmp_do_op) {
3742 {
3743 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3744 {
3745 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3746 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3747 written |= (1 << 6);
3748 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3749 }
3750 }
3751 }
3752 }
3753 }
3754
3755 abuf->written = written;
3756 return vpc;
3757 #undef FLD
3758 }
3759
3760 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3761
3762 static SEM_PC
3763 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3764 {
3765 #define FLD(f) abuf->fields.sfmt_smulcc.f
3766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3767 int UNUSED written = 0;
3768 IADDR UNUSED pc = abuf->addr;
3769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3770
3771 {
3772 SI tmp_address;
3773 {
3774 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3775 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3776 }
3777 }
3778
3779 return vpc;
3780 #undef FLD
3781 }
3782
3783 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3784
3785 static SEM_PC
3786 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3787 {
3788 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3789 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3790 int UNUSED written = 0;
3791 IADDR UNUSED pc = abuf->addr;
3792 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3793
3794 {
3795 SI tmp_address;
3796 {
3797 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3798 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3799 }
3800 }
3801
3802 return vpc;
3803 #undef FLD
3804 }
3805
3806 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3807
3808 static SEM_PC
3809 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3810 {
3811 #define FLD(f) abuf->fields.sfmt_stdcu.f
3812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3813 int UNUSED written = 0;
3814 IADDR UNUSED pc = abuf->addr;
3815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3816
3817 {
3818 SI tmp_address;
3819 {
3820 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3821 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3822 }
3823 }
3824
3825 return vpc;
3826 #undef FLD
3827 }
3828
3829 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3830
3831 static SEM_PC
3832 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3833 {
3834 #define FLD(f) abuf->fields.sfmt_smulcc.f
3835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3836 int UNUSED written = 0;
3837 IADDR UNUSED pc = abuf->addr;
3838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3839
3840 {
3841 SI tmp_address;
3842 {
3843 BI tmp_do_op;
3844 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3845 if (tmp_do_op) {
3846 {
3847 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3848 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3849 }
3850 }
3851 }
3852 }
3853
3854 return vpc;
3855 #undef FLD
3856 }
3857
3858 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3859
3860 static SEM_PC
3861 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3862 {
3863 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3865 int UNUSED written = 0;
3866 IADDR UNUSED pc = abuf->addr;
3867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3868
3869 {
3870 SI tmp_address;
3871 {
3872 BI tmp_do_op;
3873 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3874 if (tmp_do_op) {
3875 {
3876 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3877 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3878 }
3879 }
3880 }
3881 }
3882
3883 return vpc;
3884 #undef FLD
3885 }
3886
3887 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3888
3889 static SEM_PC
3890 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3891 {
3892 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3894 int UNUSED written = 0;
3895 IADDR UNUSED pc = abuf->addr;
3896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3897
3898 {
3899 USI tmp_address;
3900 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3901 {
3902 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3903 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3904 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3905 }
3906 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3907 {
3908 {
3909 SI opval = tmp_address;
3910 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3911 written |= (1 << 5);
3912 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3913 }
3914 frvbf_force_update (current_cpu);
3915 }
3916 }
3917 }
3918
3919 abuf->written = written;
3920 return vpc;
3921 #undef FLD
3922 }
3923
3924 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3925
3926 static SEM_PC
3927 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3928 {
3929 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3931 int UNUSED written = 0;
3932 IADDR UNUSED pc = abuf->addr;
3933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3934
3935 {
3936 USI tmp_address;
3937 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3938 {
3939 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3940 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3941 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3942 }
3943 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3944 {
3945 {
3946 SI opval = tmp_address;
3947 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3948 written |= (1 << 5);
3949 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3950 }
3951 frvbf_force_update (current_cpu);
3952 }
3953 }
3954 }
3955
3956 abuf->written = written;
3957 return vpc;
3958 #undef FLD
3959 }
3960
3961 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3962
3963 static SEM_PC
3964 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3965 {
3966 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3967 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3968 int UNUSED written = 0;
3969 IADDR UNUSED pc = abuf->addr;
3970 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3971
3972 {
3973 USI tmp_address;
3974 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3975 {
3976 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3977 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3978 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3979 }
3980 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3981 {
3982 {
3983 SI opval = tmp_address;
3984 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3985 written |= (1 << 5);
3986 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3987 }
3988 frvbf_force_update (current_cpu);
3989 }
3990 }
3991 }
3992
3993 abuf->written = written;
3994 return vpc;
3995 #undef FLD
3996 }
3997
3998 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
3999
4000 static SEM_PC
4001 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4002 {
4003 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4005 int UNUSED written = 0;
4006 IADDR UNUSED pc = abuf->addr;
4007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4008
4009 {
4010 USI tmp_address;
4011 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4012 {
4013 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4014 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4015 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4016 }
4017 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4018 {
4019 {
4020 SI opval = tmp_address;
4021 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4022 written |= (1 << 5);
4023 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4024 }
4025 frvbf_force_update (current_cpu);
4026 }
4027 }
4028 }
4029
4030 abuf->written = written;
4031 return vpc;
4032 #undef FLD
4033 }
4034
4035 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
4036
4037 static SEM_PC
4038 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4039 {
4040 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4042 int UNUSED written = 0;
4043 IADDR UNUSED pc = abuf->addr;
4044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4045
4046 {
4047 USI tmp_address;
4048 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4049 {
4050 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4051 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4052 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4053 }
4054 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4055 {
4056 {
4057 SI opval = tmp_address;
4058 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4059 written |= (1 << 5);
4060 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4061 }
4062 frvbf_force_update (current_cpu);
4063 }
4064 }
4065 }
4066
4067 abuf->written = written;
4068 return vpc;
4069 #undef FLD
4070 }
4071
4072 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4073
4074 static SEM_PC
4075 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4076 {
4077 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4078 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4079 int UNUSED written = 0;
4080 IADDR UNUSED pc = abuf->addr;
4081 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4082
4083 {
4084 BI tmp_do_op;
4085 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4086 if (tmp_do_op) {
4087 {
4088 USI tmp_address;
4089 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4090 {
4091 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4092 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4093 written |= (1 << 7);
4094 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4095 }
4096 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4097 {
4098 {
4099 SI opval = tmp_address;
4100 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4101 written |= (1 << 6);
4102 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4103 }
4104 frvbf_force_update (current_cpu);
4105 }
4106 }
4107 }
4108 }
4109 }
4110
4111 abuf->written = written;
4112 return vpc;
4113 #undef FLD
4114 }
4115
4116 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4117
4118 static SEM_PC
4119 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4120 {
4121 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4122 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4123 int UNUSED written = 0;
4124 IADDR UNUSED pc = abuf->addr;
4125 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4126
4127 {
4128 BI tmp_do_op;
4129 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4130 if (tmp_do_op) {
4131 {
4132 USI tmp_address;
4133 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4134 {
4135 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4136 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4137 written |= (1 << 7);
4138 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4139 }
4140 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4141 {
4142 {
4143 SI opval = tmp_address;
4144 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4145 written |= (1 << 6);
4146 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4147 }
4148 frvbf_force_update (current_cpu);
4149 }
4150 }
4151 }
4152 }
4153 }
4154
4155 abuf->written = written;
4156 return vpc;
4157 #undef FLD
4158 }
4159
4160 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4161
4162 static SEM_PC
4163 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4164 {
4165 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4167 int UNUSED written = 0;
4168 IADDR UNUSED pc = abuf->addr;
4169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4170
4171 {
4172 BI tmp_do_op;
4173 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4174 if (tmp_do_op) {
4175 {
4176 USI tmp_address;
4177 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4178 {
4179 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4180 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4181 written |= (1 << 7);
4182 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4183 }
4184 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4185 {
4186 {
4187 SI opval = tmp_address;
4188 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4189 written |= (1 << 6);
4190 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4191 }
4192 frvbf_force_update (current_cpu);
4193 }
4194 }
4195 }
4196 }
4197 }
4198
4199 abuf->written = written;
4200 return vpc;
4201 #undef FLD
4202 }
4203
4204 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4205
4206 static SEM_PC
4207 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4208 {
4209 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4211 int UNUSED written = 0;
4212 IADDR UNUSED pc = abuf->addr;
4213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4214
4215 {
4216 BI tmp_do_op;
4217 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4218 if (tmp_do_op) {
4219 {
4220 USI tmp_address;
4221 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4222 {
4223 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4224 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4225 written |= (1 << 7);
4226 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4227 }
4228 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4229 {
4230 {
4231 SI opval = tmp_address;
4232 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4233 written |= (1 << 6);
4234 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4235 }
4236 frvbf_force_update (current_cpu);
4237 }
4238 }
4239 }
4240 }
4241 }
4242
4243 abuf->written = written;
4244 return vpc;
4245 #undef FLD
4246 }
4247
4248 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4249
4250 static SEM_PC
4251 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4252 {
4253 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4255 int UNUSED written = 0;
4256 IADDR UNUSED pc = abuf->addr;
4257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4258
4259 {
4260 BI tmp_do_op;
4261 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4262 if (tmp_do_op) {
4263 {
4264 USI tmp_address;
4265 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4266 {
4267 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4268 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4269 written |= (1 << 7);
4270 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4271 }
4272 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4273 {
4274 {
4275 SI opval = tmp_address;
4276 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4277 written |= (1 << 6);
4278 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4279 }
4280 frvbf_force_update (current_cpu);
4281 }
4282 }
4283 }
4284 }
4285 }
4286
4287 abuf->written = written;
4288 return vpc;
4289 #undef FLD
4290 }
4291
4292 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4293
4294 static SEM_PC
4295 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4296 {
4297 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4299 int UNUSED written = 0;
4300 IADDR UNUSED pc = abuf->addr;
4301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4302
4303 {
4304 USI tmp_address;
4305 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4306 {
4307 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4308 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4309 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4310 }
4311 {
4312 SI opval = tmp_address;
4313 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4314 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4315 }
4316 frvbf_force_update (current_cpu);
4317 }
4318
4319 return vpc;
4320 #undef FLD
4321 }
4322
4323 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4324
4325 static SEM_PC
4326 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4327 {
4328 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4330 int UNUSED written = 0;
4331 IADDR UNUSED pc = abuf->addr;
4332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4333
4334 {
4335 USI tmp_address;
4336 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4337 {
4338 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4339 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4340 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4341 }
4342 {
4343 SI opval = tmp_address;
4344 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4345 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4346 }
4347 frvbf_force_update (current_cpu);
4348 }
4349
4350 return vpc;
4351 #undef FLD
4352 }
4353
4354 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4355
4356 static SEM_PC
4357 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4358 {
4359 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4360 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4361 int UNUSED written = 0;
4362 IADDR UNUSED pc = abuf->addr;
4363 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4364
4365 {
4366 USI tmp_address;
4367 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4368 {
4369 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4370 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4371 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4372 }
4373 {
4374 SI opval = tmp_address;
4375 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4376 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4377 }
4378 frvbf_force_update (current_cpu);
4379 }
4380
4381 return vpc;
4382 #undef FLD
4383 }
4384
4385 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4386
4387 static SEM_PC
4388 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4389 {
4390 #define FLD(f) abuf->fields.sfmt_ldcu.f
4391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4392 int UNUSED written = 0;
4393 IADDR UNUSED pc = abuf->addr;
4394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4395
4396 {
4397 USI tmp_address;
4398 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4399 {
4400 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4401 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4402 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4403 }
4404 {
4405 SI opval = tmp_address;
4406 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4407 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4408 }
4409 frvbf_force_update (current_cpu);
4410 }
4411
4412 return vpc;
4413 #undef FLD
4414 }
4415
4416 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4417
4418 static SEM_PC
4419 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4420 {
4421 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4423 int UNUSED written = 0;
4424 IADDR UNUSED pc = abuf->addr;
4425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4426
4427 {
4428 BI tmp_do_op;
4429 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4430 if (tmp_do_op) {
4431 {
4432 USI tmp_address;
4433 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4434 {
4435 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4436 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4437 written |= (1 << 6);
4438 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4439 }
4440 {
4441 SI opval = tmp_address;
4442 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4443 written |= (1 << 7);
4444 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4445 }
4446 frvbf_force_update (current_cpu);
4447 }
4448 }
4449 }
4450
4451 abuf->written = written;
4452 return vpc;
4453 #undef FLD
4454 }
4455
4456 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4457
4458 static SEM_PC
4459 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4460 {
4461 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4462 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4463 int UNUSED written = 0;
4464 IADDR UNUSED pc = abuf->addr;
4465 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4466
4467 {
4468 BI tmp_do_op;
4469 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4470 if (tmp_do_op) {
4471 {
4472 USI tmp_address;
4473 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4474 {
4475 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4476 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4477 written |= (1 << 6);
4478 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4479 }
4480 {
4481 SI opval = tmp_address;
4482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4483 written |= (1 << 7);
4484 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4485 }
4486 frvbf_force_update (current_cpu);
4487 }
4488 }
4489 }
4490
4491 abuf->written = written;
4492 return vpc;
4493 #undef FLD
4494 }
4495
4496 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4497
4498 static SEM_PC
4499 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4500 {
4501 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4502 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4503 int UNUSED written = 0;
4504 IADDR UNUSED pc = abuf->addr;
4505 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4506
4507 {
4508 BI tmp_do_op;
4509 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4510 if (tmp_do_op) {
4511 {
4512 USI tmp_address;
4513 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4514 {
4515 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4516 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4517 written |= (1 << 6);
4518 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4519 }
4520 {
4521 SI opval = tmp_address;
4522 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4523 written |= (1 << 7);
4524 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4525 }
4526 frvbf_force_update (current_cpu);
4527 }
4528 }
4529 }
4530
4531 abuf->written = written;
4532 return vpc;
4533 #undef FLD
4534 }
4535
4536 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4537
4538 static SEM_PC
4539 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4540 {
4541 #define FLD(f) abuf->fields.sfmt_clddu.f
4542 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4543 int UNUSED written = 0;
4544 IADDR UNUSED pc = abuf->addr;
4545 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4546
4547 {
4548 SI tmp_address;
4549 if (NESI (FLD (f_GRk), 0)) {
4550 {
4551 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4552 {
4553 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4554 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4555 written |= (1 << 5);
4556 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4557 }
4558 }
4559 }
4560 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4561 {
4562 {
4563 SI opval = tmp_address;
4564 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4565 written |= (1 << 6);
4566 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4567 }
4568 frvbf_force_update (current_cpu);
4569 }
4570 }
4571 }
4572
4573 abuf->written = written;
4574 return vpc;
4575 #undef FLD
4576 }
4577
4578 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4579
4580 static SEM_PC
4581 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4582 {
4583 #define FLD(f) abuf->fields.sfmt_clddu.f
4584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4585 int UNUSED written = 0;
4586 IADDR UNUSED pc = abuf->addr;
4587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4588
4589 {
4590 BI tmp_do_op;
4591 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4592 if (tmp_do_op) {
4593 {
4594 SI tmp_address;
4595 if (NESI (FLD (f_GRk), 0)) {
4596 {
4597 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4598 {
4599 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4600 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4601 written |= (1 << 6);
4602 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4603 }
4604 }
4605 }
4606 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4607 {
4608 {
4609 SI opval = tmp_address;
4610 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4611 written |= (1 << 7);
4612 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4613 }
4614 frvbf_force_update (current_cpu);
4615 }
4616 }
4617 }
4618 }
4619 }
4620
4621 abuf->written = written;
4622 return vpc;
4623 #undef FLD
4624 }
4625
4626 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4627
4628 static SEM_PC
4629 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4630 {
4631 #define FLD(f) abuf->fields.sfmt_clddfu.f
4632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4633 int UNUSED written = 0;
4634 IADDR UNUSED pc = abuf->addr;
4635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4636
4637 {
4638 SI tmp_address;
4639 {
4640 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4641 {
4642 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4643 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4644 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4645 }
4646 }
4647 {
4648 SI opval = tmp_address;
4649 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4650 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4651 }
4652 frvbf_force_update (current_cpu);
4653 }
4654
4655 return vpc;
4656 #undef FLD
4657 }
4658
4659 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4660
4661 static SEM_PC
4662 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4663 {
4664 #define FLD(f) abuf->fields.sfmt_lddcu.f
4665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4666 int UNUSED written = 0;
4667 IADDR UNUSED pc = abuf->addr;
4668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4669
4670 {
4671 SI tmp_address;
4672 {
4673 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4674 {
4675 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4676 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4677 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4678 }
4679 }
4680 {
4681 SI opval = tmp_address;
4682 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4683 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4684 }
4685 frvbf_force_update (current_cpu);
4686 }
4687
4688 return vpc;
4689 #undef FLD
4690 }
4691
4692 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4693
4694 static SEM_PC
4695 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4696 {
4697 #define FLD(f) abuf->fields.sfmt_clddfu.f
4698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4699 int UNUSED written = 0;
4700 IADDR UNUSED pc = abuf->addr;
4701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4702
4703 {
4704 BI tmp_do_op;
4705 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4706 if (tmp_do_op) {
4707 {
4708 SI tmp_address;
4709 {
4710 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4711 {
4712 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4713 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4714 written |= (1 << 6);
4715 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4716 }
4717 }
4718 {
4719 SI opval = tmp_address;
4720 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4721 written |= (1 << 7);
4722 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4723 }
4724 frvbf_force_update (current_cpu);
4725 }
4726 }
4727 }
4728
4729 abuf->written = written;
4730 return vpc;
4731 #undef FLD
4732 }
4733
4734 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4735
4736 static SEM_PC
4737 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4738 {
4739 #define FLD(f) abuf->fields.sfmt_cstdu.f
4740 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4741 int UNUSED written = 0;
4742 IADDR UNUSED pc = abuf->addr;
4743 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4744
4745 {
4746 SI tmp_address;
4747 {
4748 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4749 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4750 }
4751 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4752 {
4753 {
4754 SI opval = tmp_address;
4755 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4756 written |= (1 << 5);
4757 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4758 }
4759 frvbf_force_update (current_cpu);
4760 }
4761 }
4762 }
4763
4764 abuf->written = written;
4765 return vpc;
4766 #undef FLD
4767 }
4768
4769 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4770
4771 static SEM_PC
4772 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4773 {
4774 #define FLD(f) abuf->fields.sfmt_cstdu.f
4775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4776 int UNUSED written = 0;
4777 IADDR UNUSED pc = abuf->addr;
4778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4779
4780 {
4781 BI tmp_do_op;
4782 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4783 if (tmp_do_op) {
4784 {
4785 SI tmp_address;
4786 {
4787 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4788 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4789 }
4790 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4791 {
4792 {
4793 SI opval = tmp_address;
4794 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4795 written |= (1 << 6);
4796 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4797 }
4798 frvbf_force_update (current_cpu);
4799 }
4800 }
4801 }
4802 }
4803 }
4804
4805 abuf->written = written;
4806 return vpc;
4807 #undef FLD
4808 }
4809
4810 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4811
4812 static SEM_PC
4813 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4814 {
4815 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4816 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4817 int UNUSED written = 0;
4818 IADDR UNUSED pc = abuf->addr;
4819 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4820
4821 {
4822 SI tmp_address;
4823 {
4824 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4825 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4826 }
4827 {
4828 SI opval = tmp_address;
4829 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4830 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4831 }
4832 frvbf_force_update (current_cpu);
4833 }
4834
4835 return vpc;
4836 #undef FLD
4837 }
4838
4839 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4840
4841 static SEM_PC
4842 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4843 {
4844 #define FLD(f) abuf->fields.sfmt_stdcu.f
4845 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4846 int UNUSED written = 0;
4847 IADDR UNUSED pc = abuf->addr;
4848 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4849
4850 {
4851 SI tmp_address;
4852 {
4853 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4854 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4855 }
4856 {
4857 SI opval = tmp_address;
4858 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4859 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4860 }
4861 frvbf_force_update (current_cpu);
4862 }
4863
4864 return vpc;
4865 #undef FLD
4866 }
4867
4868 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4869
4870 static SEM_PC
4871 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4872 {
4873 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4874 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4875 int UNUSED written = 0;
4876 IADDR UNUSED pc = abuf->addr;
4877 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4878
4879 {
4880 BI tmp_do_op;
4881 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4882 if (tmp_do_op) {
4883 {
4884 SI tmp_address;
4885 {
4886 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4887 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4888 }
4889 {
4890 SI opval = tmp_address;
4891 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4892 written |= (1 << 6);
4893 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4894 }
4895 frvbf_force_update (current_cpu);
4896 }
4897 }
4898 }
4899
4900 abuf->written = written;
4901 return vpc;
4902 #undef FLD
4903 }
4904
4905 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4906
4907 static SEM_PC
4908 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4909 {
4910 #define FLD(f) abuf->fields.sfmt_swapi.f
4911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4912 int UNUSED written = 0;
4913 IADDR UNUSED pc = abuf->addr;
4914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4915
4916 {
4917 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4918 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4919 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4920 }
4921
4922 return vpc;
4923 #undef FLD
4924 }
4925
4926 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4927
4928 static SEM_PC
4929 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4930 {
4931 #define FLD(f) abuf->fields.sfmt_swapi.f
4932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4933 int UNUSED written = 0;
4934 IADDR UNUSED pc = abuf->addr;
4935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4936
4937 {
4938 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4939 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4940 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4941 }
4942
4943 return vpc;
4944 #undef FLD
4945 }
4946
4947 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4948
4949 static SEM_PC
4950 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4951 {
4952 #define FLD(f) abuf->fields.sfmt_swapi.f
4953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4954 int UNUSED written = 0;
4955 IADDR UNUSED pc = abuf->addr;
4956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4957
4958 {
4959 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4960 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4961 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4962 }
4963
4964 return vpc;
4965 #undef FLD
4966 }
4967
4968 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4969
4970 static SEM_PC
4971 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4972 {
4973 #define FLD(f) abuf->fields.sfmt_swapi.f
4974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4975 int UNUSED written = 0;
4976 IADDR UNUSED pc = abuf->addr;
4977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4978
4979 {
4980 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4981 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4982 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4983 }
4984
4985 return vpc;
4986 #undef FLD
4987 }
4988
4989 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4990
4991 static SEM_PC
4992 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4993 {
4994 #define FLD(f) abuf->fields.sfmt_swapi.f
4995 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4996 int UNUSED written = 0;
4997 IADDR UNUSED pc = abuf->addr;
4998 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4999
5000 {
5001 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5002 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5003 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5004 }
5005
5006 return vpc;
5007 #undef FLD
5008 }
5009
5010 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5011
5012 static SEM_PC
5013 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5014 {
5015 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5017 int UNUSED written = 0;
5018 IADDR UNUSED pc = abuf->addr;
5019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5020
5021 {
5022 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5023 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5024 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5025 }
5026
5027 return vpc;
5028 #undef FLD
5029 }
5030
5031 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5032
5033 static SEM_PC
5034 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5035 {
5036 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5037 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5038 int UNUSED written = 0;
5039 IADDR UNUSED pc = abuf->addr;
5040 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5041
5042 {
5043 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5044 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5045 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5046 }
5047
5048 return vpc;
5049 #undef FLD
5050 }
5051
5052 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5053
5054 static SEM_PC
5055 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5056 {
5057 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5058 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5059 int UNUSED written = 0;
5060 IADDR UNUSED pc = abuf->addr;
5061 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5062
5063 {
5064 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5065 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5066 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5067 }
5068
5069 return vpc;
5070 #undef FLD
5071 }
5072
5073 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5074
5075 static SEM_PC
5076 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5077 {
5078 #define FLD(f) abuf->fields.sfmt_swapi.f
5079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5080 int UNUSED written = 0;
5081 IADDR UNUSED pc = abuf->addr;
5082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5083
5084 {
5085 BI tmp_do_op;
5086 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5087 if (tmp_do_op) {
5088 {
5089 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5090 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5091 written |= (1 << 5);
5092 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5093 }
5094 }
5095 }
5096
5097 abuf->written = written;
5098 return vpc;
5099 #undef FLD
5100 }
5101
5102 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5103
5104 static SEM_PC
5105 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5106 {
5107 #define FLD(f) abuf->fields.sfmt_swapi.f
5108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5109 int UNUSED written = 0;
5110 IADDR UNUSED pc = abuf->addr;
5111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5112
5113 {
5114 BI tmp_do_op;
5115 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5116 if (tmp_do_op) {
5117 {
5118 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5119 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5120 written |= (1 << 5);
5121 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5122 }
5123 }
5124 }
5125
5126 abuf->written = written;
5127 return vpc;
5128 #undef FLD
5129 }
5130
5131 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5132
5133 static SEM_PC
5134 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5135 {
5136 #define FLD(f) abuf->fields.sfmt_swapi.f
5137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5138 int UNUSED written = 0;
5139 IADDR UNUSED pc = abuf->addr;
5140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5141
5142 {
5143 BI tmp_do_op;
5144 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5145 if (tmp_do_op) {
5146 {
5147 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5148 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5149 written |= (1 << 5);
5150 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5151 }
5152 }
5153 }
5154
5155 abuf->written = written;
5156 return vpc;
5157 #undef FLD
5158 }
5159
5160 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5161
5162 static SEM_PC
5163 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5164 {
5165 #define FLD(f) abuf->fields.sfmt_swapi.f
5166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5167 int UNUSED written = 0;
5168 IADDR UNUSED pc = abuf->addr;
5169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5170
5171 {
5172 BI tmp_do_op;
5173 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5174 if (tmp_do_op) {
5175 {
5176 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5177 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5178 written |= (1 << 5);
5179 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5180 }
5181 }
5182 }
5183
5184 abuf->written = written;
5185 return vpc;
5186 #undef FLD
5187 }
5188
5189 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5190
5191 static SEM_PC
5192 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5193 {
5194 #define FLD(f) abuf->fields.sfmt_swapi.f
5195 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5196 int UNUSED written = 0;
5197 IADDR UNUSED pc = abuf->addr;
5198 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5199
5200 {
5201 BI tmp_do_op;
5202 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5203 if (tmp_do_op) {
5204 {
5205 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5206 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5207 written |= (1 << 5);
5208 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5209 }
5210 }
5211 }
5212
5213 abuf->written = written;
5214 return vpc;
5215 #undef FLD
5216 }
5217
5218 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5219
5220 static SEM_PC
5221 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5222 {
5223 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5225 int UNUSED written = 0;
5226 IADDR UNUSED pc = abuf->addr;
5227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5228
5229 {
5230 BI tmp_do_op;
5231 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5232 if (tmp_do_op) {
5233 {
5234 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5235 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5236 written |= (1 << 5);
5237 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5238 }
5239 }
5240 }
5241
5242 abuf->written = written;
5243 return vpc;
5244 #undef FLD
5245 }
5246
5247 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5248
5249 static SEM_PC
5250 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5251 {
5252 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5253 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5254 int UNUSED written = 0;
5255 IADDR UNUSED pc = abuf->addr;
5256 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5257
5258 {
5259 BI tmp_do_op;
5260 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5261 if (tmp_do_op) {
5262 {
5263 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5264 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5265 written |= (1 << 5);
5266 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5267 }
5268 }
5269 }
5270
5271 abuf->written = written;
5272 return vpc;
5273 #undef FLD
5274 }
5275
5276 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5277
5278 static SEM_PC
5279 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5280 {
5281 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5283 int UNUSED written = 0;
5284 IADDR UNUSED pc = abuf->addr;
5285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5286
5287 {
5288 BI tmp_do_op;
5289 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5290 if (tmp_do_op) {
5291 {
5292 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5293 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5294 written |= (1 << 5);
5295 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5296 }
5297 }
5298 }
5299
5300 abuf->written = written;
5301 return vpc;
5302 #undef FLD
5303 }
5304
5305 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5306
5307 static SEM_PC
5308 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5309 {
5310 #define FLD(f) abuf->fields.sfmt_smuli.f
5311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5312 int UNUSED written = 0;
5313 IADDR UNUSED pc = abuf->addr;
5314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5315
5316 {
5317 SI tmp_address;
5318 if (NESI (FLD (f_GRk), 0)) {
5319 {
5320 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5321 {
5322 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5323 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5324 written |= (1 << 4);
5325 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5326 }
5327 }
5328 }
5329 }
5330
5331 abuf->written = written;
5332 return vpc;
5333 #undef FLD
5334 }
5335
5336 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5337
5338 static SEM_PC
5339 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5340 {
5341 #define FLD(f) abuf->fields.sfmt_lddfi.f
5342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5343 int UNUSED written = 0;
5344 IADDR UNUSED pc = abuf->addr;
5345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5346
5347 {
5348 SI tmp_address;
5349 {
5350 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5351 {
5352 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5353 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5354 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5355 }
5356 }
5357 }
5358
5359 return vpc;
5360 #undef FLD
5361 }
5362
5363 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5364
5365 static SEM_PC
5366 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5367 {
5368 #define FLD(f) abuf->fields.sfmt_smuli.f
5369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5370 int UNUSED written = 0;
5371 IADDR UNUSED pc = abuf->addr;
5372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5373
5374 {
5375 SI tmp_address;
5376 {
5377 BI tmp_do_op;
5378 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5379 if (tmp_do_op) {
5380 if (NESI (FLD (f_GRk), 0)) {
5381 {
5382 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5383 {
5384 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5385 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5386 written |= (1 << 5);
5387 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5388 }
5389 }
5390 }
5391 }
5392 }
5393 }
5394
5395 abuf->written = written;
5396 return vpc;
5397 #undef FLD
5398 }
5399
5400 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5401
5402 static SEM_PC
5403 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5404 {
5405 #define FLD(f) abuf->fields.sfmt_lddfi.f
5406 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5407 int UNUSED written = 0;
5408 IADDR UNUSED pc = abuf->addr;
5409 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5410
5411 {
5412 SI tmp_address;
5413 {
5414 BI tmp_do_op;
5415 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5416 if (tmp_do_op) {
5417 {
5418 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5419 {
5420 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5421 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5422 written |= (1 << 5);
5423 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5424 }
5425 }
5426 }
5427 }
5428 }
5429
5430 abuf->written = written;
5431 return vpc;
5432 #undef FLD
5433 }
5434
5435 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5436
5437 static SEM_PC
5438 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5439 {
5440 #define FLD(f) abuf->fields.sfmt_stdi.f
5441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5442 int UNUSED written = 0;
5443 IADDR UNUSED pc = abuf->addr;
5444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5445
5446 {
5447 SI tmp_address;
5448 {
5449 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5450 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5451 }
5452 }
5453
5454 return vpc;
5455 #undef FLD
5456 }
5457
5458 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5459
5460 static SEM_PC
5461 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5462 {
5463 #define FLD(f) abuf->fields.sfmt_stdfi.f
5464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5465 int UNUSED written = 0;
5466 IADDR UNUSED pc = abuf->addr;
5467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5468
5469 {
5470 SI tmp_address;
5471 {
5472 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5473 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5474 }
5475 }
5476
5477 return vpc;
5478 #undef FLD
5479 }
5480
5481 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5482
5483 static SEM_PC
5484 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5485 {
5486 #define FLD(f) abuf->fields.sfmt_stdfi.f
5487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5488 int UNUSED written = 0;
5489 IADDR UNUSED pc = abuf->addr;
5490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5491
5492 {
5493 SI tmp_address;
5494 {
5495 BI tmp_do_op;
5496 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5497 if (tmp_do_op) {
5498 {
5499 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5500 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5501 }
5502 }
5503 }
5504 }
5505
5506 return vpc;
5507 #undef FLD
5508 }
5509
5510 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5511
5512 static SEM_PC
5513 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5514 {
5515 #define FLD(f) abuf->fields.sfmt_cswap.f
5516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5517 int UNUSED written = 0;
5518 IADDR UNUSED pc = abuf->addr;
5519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5520
5521 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)));
5522
5523 return vpc;
5524 #undef FLD
5525 }
5526
5527 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5528
5529 static SEM_PC
5530 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5531 {
5532 #define FLD(f) abuf->fields.sfmt_cswap.f
5533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5534 int UNUSED written = 0;
5535 IADDR UNUSED pc = abuf->addr;
5536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5537
5538 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)));
5539
5540 return vpc;
5541 #undef FLD
5542 }
5543
5544 /* st: st$pack $GRk,@($GRi,$GRj) */
5545
5546 static SEM_PC
5547 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5548 {
5549 #define FLD(f) abuf->fields.sfmt_cswap.f
5550 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5551 int UNUSED written = 0;
5552 IADDR UNUSED pc = abuf->addr;
5553 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5554
5555 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)));
5556
5557 return vpc;
5558 #undef FLD
5559 }
5560
5561 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5562
5563 static SEM_PC
5564 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5565 {
5566 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5567 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5568 int UNUSED written = 0;
5569 IADDR UNUSED pc = abuf->addr;
5570 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5571
5572 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)));
5573
5574 return vpc;
5575 #undef FLD
5576 }
5577
5578 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5579
5580 static SEM_PC
5581 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5582 {
5583 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5584 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5585 int UNUSED written = 0;
5586 IADDR UNUSED pc = abuf->addr;
5587 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5588
5589 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)));
5590
5591 return vpc;
5592 #undef FLD
5593 }
5594
5595 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5596
5597 static SEM_PC
5598 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5599 {
5600 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5602 int UNUSED written = 0;
5603 IADDR UNUSED pc = abuf->addr;
5604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5605
5606 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)));
5607
5608 return vpc;
5609 #undef FLD
5610 }
5611
5612 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5613
5614 static SEM_PC
5615 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5616 {
5617 #define FLD(f) abuf->fields.sfmt_stcu.f
5618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5619 int UNUSED written = 0;
5620 IADDR UNUSED pc = abuf->addr;
5621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5622
5623 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)]));
5624
5625 return vpc;
5626 #undef FLD
5627 }
5628
5629 /* std: std$pack $GRdoublek,@($GRi,$GRj) */
5630
5631 static SEM_PC
5632 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5633 {
5634 #define FLD(f) abuf->fields.sfmt_cstdu.f
5635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5636 int UNUSED written = 0;
5637 IADDR UNUSED pc = abuf->addr;
5638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5639
5640 {
5641 SI tmp_address;
5642 {
5643 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5644 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5645 }
5646 }
5647
5648 return vpc;
5649 #undef FLD
5650 }
5651
5652 /* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
5653
5654 static SEM_PC
5655 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5656 {
5657 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5659 int UNUSED written = 0;
5660 IADDR UNUSED pc = abuf->addr;
5661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5662
5663 {
5664 SI tmp_address;
5665 {
5666 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5667 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5668 }
5669 }
5670
5671 return vpc;
5672 #undef FLD
5673 }
5674
5675 /* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
5676
5677 static SEM_PC
5678 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5679 {
5680 #define FLD(f) abuf->fields.sfmt_stdcu.f
5681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5682 int UNUSED written = 0;
5683 IADDR UNUSED pc = abuf->addr;
5684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5685
5686 {
5687 SI tmp_address;
5688 {
5689 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5690 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5691 }
5692 }
5693
5694 return vpc;
5695 #undef FLD
5696 }
5697
5698 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5699
5700 static SEM_PC
5701 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5702 {
5703 #define FLD(f) abuf->fields.sfmt_smulcc.f
5704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5705 int UNUSED written = 0;
5706 IADDR UNUSED pc = abuf->addr;
5707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5708
5709 {
5710 SI tmp_address;
5711 {
5712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5713 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5714 }
5715 }
5716
5717 return vpc;
5718 #undef FLD
5719 }
5720
5721 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5722
5723 static SEM_PC
5724 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5725 {
5726 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5728 int UNUSED written = 0;
5729 IADDR UNUSED pc = abuf->addr;
5730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5731
5732 {
5733 SI tmp_address;
5734 {
5735 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5736 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5737 }
5738 }
5739
5740 return vpc;
5741 #undef FLD
5742 }
5743
5744 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5745
5746 static SEM_PC
5747 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5748 {
5749 #define FLD(f) abuf->fields.sfmt_stdcu.f
5750 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5751 int UNUSED written = 0;
5752 IADDR UNUSED pc = abuf->addr;
5753 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5754
5755 {
5756 SI tmp_address;
5757 {
5758 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5759 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5760 }
5761 }
5762
5763 return vpc;
5764 #undef FLD
5765 }
5766
5767 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5768
5769 static SEM_PC
5770 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5771 {
5772 #define FLD(f) abuf->fields.sfmt_cstbu.f
5773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5774 int UNUSED written = 0;
5775 IADDR UNUSED pc = abuf->addr;
5776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5777
5778 {
5779 USI tmp_address;
5780 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5781 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5782 {
5783 SI opval = tmp_address;
5784 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5785 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5786 }
5787 }
5788
5789 return vpc;
5790 #undef FLD
5791 }
5792
5793 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5794
5795 static SEM_PC
5796 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5797 {
5798 #define FLD(f) abuf->fields.sfmt_cstbu.f
5799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5800 int UNUSED written = 0;
5801 IADDR UNUSED pc = abuf->addr;
5802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5803
5804 {
5805 USI tmp_address;
5806 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5807 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5808 {
5809 SI opval = tmp_address;
5810 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5811 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5812 }
5813 }
5814
5815 return vpc;
5816 #undef FLD
5817 }
5818
5819 /* stu: stu$pack $GRk,@($GRi,$GRj) */
5820
5821 static SEM_PC
5822 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5823 {
5824 #define FLD(f) abuf->fields.sfmt_cstbu.f
5825 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5826 int UNUSED written = 0;
5827 IADDR UNUSED pc = abuf->addr;
5828 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5829
5830 {
5831 USI tmp_address;
5832 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5833 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5834 {
5835 SI opval = tmp_address;
5836 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5837 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5838 }
5839 }
5840
5841 return vpc;
5842 #undef FLD
5843 }
5844
5845 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5846
5847 static SEM_PC
5848 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5849 {
5850 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5852 int UNUSED written = 0;
5853 IADDR UNUSED pc = abuf->addr;
5854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5855
5856 {
5857 USI tmp_address;
5858 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5859 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5860 {
5861 SI opval = tmp_address;
5862 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5863 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5864 }
5865 }
5866
5867 return vpc;
5868 #undef FLD
5869 }
5870
5871 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5872
5873 static SEM_PC
5874 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5875 {
5876 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5877 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5878 int UNUSED written = 0;
5879 IADDR UNUSED pc = abuf->addr;
5880 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5881
5882 {
5883 USI tmp_address;
5884 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5885 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5886 {
5887 SI opval = tmp_address;
5888 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5889 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5890 }
5891 }
5892
5893 return vpc;
5894 #undef FLD
5895 }
5896
5897 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5898
5899 static SEM_PC
5900 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5901 {
5902 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5904 int UNUSED written = 0;
5905 IADDR UNUSED pc = abuf->addr;
5906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5907
5908 {
5909 USI tmp_address;
5910 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5911 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5912 {
5913 SI opval = tmp_address;
5914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5915 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5916 }
5917 }
5918
5919 return vpc;
5920 #undef FLD
5921 }
5922
5923 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5924
5925 static SEM_PC
5926 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5927 {
5928 #define FLD(f) abuf->fields.sfmt_stcu.f
5929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5930 int UNUSED written = 0;
5931 IADDR UNUSED pc = abuf->addr;
5932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5933
5934 {
5935 USI tmp_address;
5936 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5937 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5938 {
5939 SI opval = tmp_address;
5940 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5941 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5942 }
5943 }
5944
5945 return vpc;
5946 #undef FLD
5947 }
5948
5949 /* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
5950
5951 static SEM_PC
5952 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5953 {
5954 #define FLD(f) abuf->fields.sfmt_cstdu.f
5955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5956 int UNUSED written = 0;
5957 IADDR UNUSED pc = abuf->addr;
5958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5959
5960 {
5961 SI tmp_address;
5962 {
5963 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5964 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5965 }
5966 {
5967 SI opval = tmp_address;
5968 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5969 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5970 }
5971 }
5972
5973 return vpc;
5974 #undef FLD
5975 }
5976
5977 /* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
5978
5979 static SEM_PC
5980 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5981 {
5982 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5983 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5984 int UNUSED written = 0;
5985 IADDR UNUSED pc = abuf->addr;
5986 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5987
5988 {
5989 SI tmp_address;
5990 {
5991 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5992 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5993 }
5994 {
5995 SI opval = tmp_address;
5996 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5997 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5998 }
5999 }
6000
6001 return vpc;
6002 #undef FLD
6003 }
6004
6005 /* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
6006
6007 static SEM_PC
6008 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6009 {
6010 #define FLD(f) abuf->fields.sfmt_stdcu.f
6011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6012 int UNUSED written = 0;
6013 IADDR UNUSED pc = abuf->addr;
6014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6015
6016 {
6017 SI tmp_address;
6018 {
6019 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6020 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6021 }
6022 {
6023 SI opval = tmp_address;
6024 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6025 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6026 }
6027 }
6028
6029 return vpc;
6030 #undef FLD
6031 }
6032
6033 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6034
6035 static SEM_PC
6036 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6037 {
6038 #define FLD(f) abuf->fields.sfmt_cstdu.f
6039 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6040 int UNUSED written = 0;
6041 IADDR UNUSED pc = abuf->addr;
6042 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6043
6044 {
6045 SI tmp_address;
6046 {
6047 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6048 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6049 }
6050 {
6051 SI opval = tmp_address;
6052 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6053 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6054 }
6055 }
6056
6057 return vpc;
6058 #undef FLD
6059 }
6060
6061 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6062
6063 static SEM_PC
6064 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6065 {
6066 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6067 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6068 int UNUSED written = 0;
6069 IADDR UNUSED pc = abuf->addr;
6070 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6071
6072 {
6073 SI tmp_address;
6074 {
6075 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6076 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6077 }
6078 {
6079 SI opval = tmp_address;
6080 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6081 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6082 }
6083 }
6084
6085 return vpc;
6086 #undef FLD
6087 }
6088
6089 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6090
6091 static SEM_PC
6092 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6093 {
6094 #define FLD(f) abuf->fields.sfmt_stdcu.f
6095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6096 int UNUSED written = 0;
6097 IADDR UNUSED pc = abuf->addr;
6098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6099
6100 {
6101 SI tmp_address;
6102 {
6103 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6104 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6105 }
6106 {
6107 SI opval = tmp_address;
6108 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6109 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6110 }
6111 }
6112
6113 return vpc;
6114 #undef FLD
6115 }
6116
6117 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6118
6119 static SEM_PC
6120 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6121 {
6122 #define FLD(f) abuf->fields.sfmt_cswap.f
6123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6124 int UNUSED written = 0;
6125 IADDR UNUSED pc = abuf->addr;
6126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6127
6128 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6129 {
6130 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6131 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6132 written |= (1 << 5);
6133 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6134 }
6135 }
6136
6137 abuf->written = written;
6138 return vpc;
6139 #undef FLD
6140 }
6141
6142 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6143
6144 static SEM_PC
6145 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6146 {
6147 #define FLD(f) abuf->fields.sfmt_cswap.f
6148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6149 int UNUSED written = 0;
6150 IADDR UNUSED pc = abuf->addr;
6151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6152
6153 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6154 {
6155 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6156 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6157 written |= (1 << 5);
6158 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6159 }
6160 }
6161
6162 abuf->written = written;
6163 return vpc;
6164 #undef FLD
6165 }
6166
6167 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6168
6169 static SEM_PC
6170 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6171 {
6172 #define FLD(f) abuf->fields.sfmt_cswap.f
6173 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6174 int UNUSED written = 0;
6175 IADDR UNUSED pc = abuf->addr;
6176 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6177
6178 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6179 {
6180 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6181 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6182 written |= (1 << 5);
6183 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6184 }
6185 }
6186
6187 abuf->written = written;
6188 return vpc;
6189 #undef FLD
6190 }
6191
6192 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6193
6194 static SEM_PC
6195 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6196 {
6197 #define FLD(f) abuf->fields.sfmt_cswap.f
6198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6199 int UNUSED written = 0;
6200 IADDR UNUSED pc = abuf->addr;
6201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6202
6203 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6204 {
6205 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6206 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6207 written |= (1 << 5);
6208 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6209 }
6210 }
6211
6212 abuf->written = written;
6213 return vpc;
6214 #undef FLD
6215 }
6216
6217 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6218
6219 static SEM_PC
6220 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6221 {
6222 #define FLD(f) abuf->fields.sfmt_cswap.f
6223 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6224 int UNUSED written = 0;
6225 IADDR UNUSED pc = abuf->addr;
6226 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6227
6228 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6229 {
6230 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6231 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6232 written |= (1 << 5);
6233 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6234 }
6235 }
6236
6237 abuf->written = written;
6238 return vpc;
6239 #undef FLD
6240 }
6241
6242 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6243
6244 static SEM_PC
6245 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6246 {
6247 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6249 int UNUSED written = 0;
6250 IADDR UNUSED pc = abuf->addr;
6251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6252
6253 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6254 {
6255 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6256 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6257 written |= (1 << 5);
6258 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6259 }
6260 }
6261
6262 abuf->written = written;
6263 return vpc;
6264 #undef FLD
6265 }
6266
6267 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6268
6269 static SEM_PC
6270 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6271 {
6272 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6274 int UNUSED written = 0;
6275 IADDR UNUSED pc = abuf->addr;
6276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6277
6278 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6279 {
6280 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6281 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6282 written |= (1 << 5);
6283 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6284 }
6285 }
6286
6287 abuf->written = written;
6288 return vpc;
6289 #undef FLD
6290 }
6291
6292 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6293
6294 static SEM_PC
6295 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6296 {
6297 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6299 int UNUSED written = 0;
6300 IADDR UNUSED pc = abuf->addr;
6301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6302
6303 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6304 {
6305 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6306 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6307 written |= (1 << 5);
6308 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6309 }
6310 }
6311
6312 abuf->written = written;
6313 return vpc;
6314 #undef FLD
6315 }
6316
6317 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6318
6319 static SEM_PC
6320 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6321 {
6322 #define FLD(f) abuf->fields.sfmt_clddu.f
6323 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6324 int UNUSED written = 0;
6325 IADDR UNUSED pc = abuf->addr;
6326 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6327
6328 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6329 {
6330 SI tmp_address;
6331 if (NESI (FLD (f_GRk), 0)) {
6332 {
6333 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6334 {
6335 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6336 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6337 written |= (1 << 6);
6338 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6339 }
6340 }
6341 }
6342 }
6343 }
6344
6345 abuf->written = written;
6346 return vpc;
6347 #undef FLD
6348 }
6349
6350 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6351
6352 static SEM_PC
6353 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6354 {
6355 #define FLD(f) abuf->fields.sfmt_clddfu.f
6356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6357 int UNUSED written = 0;
6358 IADDR UNUSED pc = abuf->addr;
6359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6360
6361 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6362 {
6363 SI tmp_address;
6364 {
6365 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6366 {
6367 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6368 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6369 written |= (1 << 5);
6370 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6371 }
6372 }
6373 }
6374 }
6375
6376 abuf->written = written;
6377 return vpc;
6378 #undef FLD
6379 }
6380
6381 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6382
6383 static SEM_PC
6384 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6385 {
6386 #define FLD(f) abuf->fields.sfmt_cswap.f
6387 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6388 int UNUSED written = 0;
6389 IADDR UNUSED pc = abuf->addr;
6390 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6391
6392 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6393 {
6394 SI tmp_address;
6395 {
6396 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6397 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6398 }
6399 }
6400 }
6401
6402 return vpc;
6403 #undef FLD
6404 }
6405
6406 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6407
6408 static SEM_PC
6409 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6410 {
6411 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6413 int UNUSED written = 0;
6414 IADDR UNUSED pc = abuf->addr;
6415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6416
6417 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6418 {
6419 SI tmp_address;
6420 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6421 {
6422 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6423 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6424 written |= (1 << 8);
6425 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6426 }
6427 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6428 {
6429 SI opval = tmp_address;
6430 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6431 written |= (1 << 7);
6432 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6433 }
6434 }
6435 }
6436 }
6437
6438 abuf->written = written;
6439 return vpc;
6440 #undef FLD
6441 }
6442
6443 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6444
6445 static SEM_PC
6446 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6447 {
6448 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6450 int UNUSED written = 0;
6451 IADDR UNUSED pc = abuf->addr;
6452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6453
6454 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6455 {
6456 SI tmp_address;
6457 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6458 {
6459 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6460 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6461 written |= (1 << 8);
6462 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6463 }
6464 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6465 {
6466 SI opval = tmp_address;
6467 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6468 written |= (1 << 7);
6469 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6470 }
6471 }
6472 }
6473 }
6474
6475 abuf->written = written;
6476 return vpc;
6477 #undef FLD
6478 }
6479
6480 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6481
6482 static SEM_PC
6483 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6484 {
6485 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6487 int UNUSED written = 0;
6488 IADDR UNUSED pc = abuf->addr;
6489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6490
6491 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6492 {
6493 SI tmp_address;
6494 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6495 {
6496 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6497 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6498 written |= (1 << 8);
6499 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6500 }
6501 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6502 {
6503 SI opval = tmp_address;
6504 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6505 written |= (1 << 7);
6506 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6507 }
6508 }
6509 }
6510 }
6511
6512 abuf->written = written;
6513 return vpc;
6514 #undef FLD
6515 }
6516
6517 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6518
6519 static SEM_PC
6520 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6521 {
6522 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6524 int UNUSED written = 0;
6525 IADDR UNUSED pc = abuf->addr;
6526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6527
6528 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6529 {
6530 SI tmp_address;
6531 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6532 {
6533 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6534 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6535 written |= (1 << 8);
6536 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6537 }
6538 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6539 {
6540 SI opval = tmp_address;
6541 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6542 written |= (1 << 7);
6543 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6544 }
6545 }
6546 }
6547 }
6548
6549 abuf->written = written;
6550 return vpc;
6551 #undef FLD
6552 }
6553
6554 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6555
6556 static SEM_PC
6557 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6558 {
6559 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6561 int UNUSED written = 0;
6562 IADDR UNUSED pc = abuf->addr;
6563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6564
6565 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6566 {
6567 SI tmp_address;
6568 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6569 {
6570 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6571 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6572 written |= (1 << 8);
6573 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6574 }
6575 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6576 {
6577 SI opval = tmp_address;
6578 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6579 written |= (1 << 7);
6580 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6581 }
6582 }
6583 }
6584 }
6585
6586 abuf->written = written;
6587 return vpc;
6588 #undef FLD
6589 }
6590
6591 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6592
6593 static SEM_PC
6594 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6595 {
6596 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6598 int UNUSED written = 0;
6599 IADDR UNUSED pc = abuf->addr;
6600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6601
6602 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6603 {
6604 SI tmp_address;
6605 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6606 {
6607 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6608 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6609 written |= (1 << 5);
6610 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6611 }
6612 {
6613 SI opval = tmp_address;
6614 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6615 written |= (1 << 6);
6616 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6617 }
6618 }
6619 }
6620
6621 abuf->written = written;
6622 return vpc;
6623 #undef FLD
6624 }
6625
6626 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6627
6628 static SEM_PC
6629 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6630 {
6631 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6633 int UNUSED written = 0;
6634 IADDR UNUSED pc = abuf->addr;
6635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6636
6637 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6638 {
6639 SI tmp_address;
6640 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6641 {
6642 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6643 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6644 written |= (1 << 5);
6645 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6646 }
6647 {
6648 SI opval = tmp_address;
6649 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6650 written |= (1 << 6);
6651 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6652 }
6653 }
6654 }
6655
6656 abuf->written = written;
6657 return vpc;
6658 #undef FLD
6659 }
6660
6661 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6662
6663 static SEM_PC
6664 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6665 {
6666 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6668 int UNUSED written = 0;
6669 IADDR UNUSED pc = abuf->addr;
6670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6671
6672 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6673 {
6674 SI tmp_address;
6675 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6676 {
6677 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6678 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6679 written |= (1 << 5);
6680 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6681 }
6682 {
6683 SI opval = tmp_address;
6684 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6685 written |= (1 << 6);
6686 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6687 }
6688 }
6689 }
6690
6691 abuf->written = written;
6692 return vpc;
6693 #undef FLD
6694 }
6695
6696 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6697
6698 static SEM_PC
6699 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6700 {
6701 #define FLD(f) abuf->fields.sfmt_clddu.f
6702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6703 int UNUSED written = 0;
6704 IADDR UNUSED pc = abuf->addr;
6705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6706
6707 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6708 {
6709 SI tmp_address;
6710 if (NESI (FLD (f_GRk), 0)) {
6711 {
6712 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6713 {
6714 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6715 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6716 written |= (1 << 7);
6717 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6718 }
6719 }
6720 }
6721 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6722 {
6723 SI opval = tmp_address;
6724 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6725 written |= (1 << 8);
6726 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6727 }
6728 }
6729 }
6730 }
6731
6732 abuf->written = written;
6733 return vpc;
6734 #undef FLD
6735 }
6736
6737 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6738
6739 static SEM_PC
6740 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6741 {
6742 #define FLD(f) abuf->fields.sfmt_clddfu.f
6743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6744 int UNUSED written = 0;
6745 IADDR UNUSED pc = abuf->addr;
6746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6747
6748 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6749 {
6750 SI tmp_address;
6751 {
6752 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6753 {
6754 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6755 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6756 written |= (1 << 5);
6757 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6758 }
6759 }
6760 {
6761 SI opval = tmp_address;
6762 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6763 written |= (1 << 6);
6764 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6765 }
6766 }
6767 }
6768
6769 abuf->written = written;
6770 return vpc;
6771 #undef FLD
6772 }
6773
6774 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6775
6776 static SEM_PC
6777 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6778 {
6779 #define FLD(f) abuf->fields.sfmt_cstdu.f
6780 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6781 int UNUSED written = 0;
6782 IADDR UNUSED pc = abuf->addr;
6783 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6784
6785 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6786 {
6787 SI tmp_address;
6788 {
6789 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6790 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6791 }
6792 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6793 {
6794 SI opval = tmp_address;
6795 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6796 written |= (1 << 7);
6797 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6798 }
6799 }
6800 }
6801 }
6802
6803 abuf->written = written;
6804 return vpc;
6805 #undef FLD
6806 }
6807
6808 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6809
6810 static SEM_PC
6811 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6812 {
6813 #define FLD(f) abuf->fields.sfmt_cswap.f
6814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6815 int UNUSED written = 0;
6816 IADDR UNUSED pc = abuf->addr;
6817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6818
6819 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6820 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)));
6821 }
6822
6823 return vpc;
6824 #undef FLD
6825 }
6826
6827 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6828
6829 static SEM_PC
6830 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6831 {
6832 #define FLD(f) abuf->fields.sfmt_cswap.f
6833 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6834 int UNUSED written = 0;
6835 IADDR UNUSED pc = abuf->addr;
6836 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6837
6838 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6839 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)));
6840 }
6841
6842 return vpc;
6843 #undef FLD
6844 }
6845
6846 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6847
6848 static SEM_PC
6849 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6850 {
6851 #define FLD(f) abuf->fields.sfmt_cswap.f
6852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6853 int UNUSED written = 0;
6854 IADDR UNUSED pc = abuf->addr;
6855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6856
6857 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6858 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)));
6859 }
6860
6861 return vpc;
6862 #undef FLD
6863 }
6864
6865 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6866
6867 static SEM_PC
6868 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6869 {
6870 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6871 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6872 int UNUSED written = 0;
6873 IADDR UNUSED pc = abuf->addr;
6874 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6875
6876 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6877 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)));
6878 }
6879
6880 return vpc;
6881 #undef FLD
6882 }
6883
6884 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6885
6886 static SEM_PC
6887 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6888 {
6889 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6890 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6891 int UNUSED written = 0;
6892 IADDR UNUSED pc = abuf->addr;
6893 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6894
6895 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6896 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)));
6897 }
6898
6899 return vpc;
6900 #undef FLD
6901 }
6902
6903 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6904
6905 static SEM_PC
6906 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6907 {
6908 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6909 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6910 int UNUSED written = 0;
6911 IADDR UNUSED pc = abuf->addr;
6912 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6913
6914 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6915 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)));
6916 }
6917
6918 return vpc;
6919 #undef FLD
6920 }
6921
6922 /* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
6923
6924 static SEM_PC
6925 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6926 {
6927 #define FLD(f) abuf->fields.sfmt_cstdu.f
6928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6929 int UNUSED written = 0;
6930 IADDR UNUSED pc = abuf->addr;
6931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6932
6933 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6934 {
6935 SI tmp_address;
6936 {
6937 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6938 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6939 }
6940 }
6941 }
6942
6943 return vpc;
6944 #undef FLD
6945 }
6946
6947 /* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
6948
6949 static SEM_PC
6950 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6951 {
6952 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6953 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6954 int UNUSED written = 0;
6955 IADDR UNUSED pc = abuf->addr;
6956 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6957
6958 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6959 {
6960 SI tmp_address;
6961 {
6962 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6963 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6964 }
6965 }
6966 }
6967
6968 return vpc;
6969 #undef FLD
6970 }
6971
6972 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6973
6974 static SEM_PC
6975 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6976 {
6977 #define FLD(f) abuf->fields.sfmt_cswap.f
6978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6979 int UNUSED written = 0;
6980 IADDR UNUSED pc = abuf->addr;
6981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6982
6983 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6984 {
6985 SI tmp_address;
6986 {
6987 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6988 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6989 }
6990 }
6991 }
6992
6993 return vpc;
6994 #undef FLD
6995 }
6996
6997 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6998
6999 static SEM_PC
7000 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7001 {
7002 #define FLD(f) abuf->fields.sfmt_cstbu.f
7003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7004 int UNUSED written = 0;
7005 IADDR UNUSED pc = abuf->addr;
7006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7007
7008 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7009 {
7010 SI tmp_address;
7011 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7012 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7013 {
7014 SI opval = tmp_address;
7015 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7016 written |= (1 << 6);
7017 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7018 }
7019 }
7020 }
7021
7022 abuf->written = written;
7023 return vpc;
7024 #undef FLD
7025 }
7026
7027 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7028
7029 static SEM_PC
7030 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7031 {
7032 #define FLD(f) abuf->fields.sfmt_cstbu.f
7033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7034 int UNUSED written = 0;
7035 IADDR UNUSED pc = abuf->addr;
7036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7037
7038 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7039 {
7040 SI tmp_address;
7041 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7042 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7043 {
7044 SI opval = tmp_address;
7045 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7046 written |= (1 << 6);
7047 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7048 }
7049 }
7050 }
7051
7052 abuf->written = written;
7053 return vpc;
7054 #undef FLD
7055 }
7056
7057 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7058
7059 static SEM_PC
7060 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7061 {
7062 #define FLD(f) abuf->fields.sfmt_cstbu.f
7063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7064 int UNUSED written = 0;
7065 IADDR UNUSED pc = abuf->addr;
7066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7067
7068 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7069 {
7070 SI tmp_address;
7071 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7072 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7073 {
7074 SI opval = tmp_address;
7075 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7076 written |= (1 << 6);
7077 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7078 }
7079 }
7080 }
7081
7082 abuf->written = written;
7083 return vpc;
7084 #undef FLD
7085 }
7086
7087 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7088
7089 static SEM_PC
7090 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7091 {
7092 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7093 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7094 int UNUSED written = 0;
7095 IADDR UNUSED pc = abuf->addr;
7096 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7097
7098 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7099 {
7100 SI tmp_address;
7101 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7102 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7103 {
7104 SI opval = tmp_address;
7105 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7106 written |= (1 << 6);
7107 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7108 }
7109 }
7110 }
7111
7112 abuf->written = written;
7113 return vpc;
7114 #undef FLD
7115 }
7116
7117 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7118
7119 static SEM_PC
7120 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7121 {
7122 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7124 int UNUSED written = 0;
7125 IADDR UNUSED pc = abuf->addr;
7126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7127
7128 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7129 {
7130 SI tmp_address;
7131 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7132 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7133 {
7134 SI opval = tmp_address;
7135 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7136 written |= (1 << 6);
7137 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7138 }
7139 }
7140 }
7141
7142 abuf->written = written;
7143 return vpc;
7144 #undef FLD
7145 }
7146
7147 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7148
7149 static SEM_PC
7150 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7151 {
7152 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7154 int UNUSED written = 0;
7155 IADDR UNUSED pc = abuf->addr;
7156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7157
7158 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7159 {
7160 SI tmp_address;
7161 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7162 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7163 {
7164 SI opval = tmp_address;
7165 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7166 written |= (1 << 6);
7167 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7168 }
7169 }
7170 }
7171
7172 abuf->written = written;
7173 return vpc;
7174 #undef FLD
7175 }
7176
7177 /* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
7178
7179 static SEM_PC
7180 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7181 {
7182 #define FLD(f) abuf->fields.sfmt_cstdu.f
7183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7184 int UNUSED written = 0;
7185 IADDR UNUSED pc = abuf->addr;
7186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7187
7188 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7189 {
7190 SI tmp_address;
7191 {
7192 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7193 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7194 }
7195 {
7196 SI opval = tmp_address;
7197 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7198 written |= (1 << 6);
7199 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7200 }
7201 }
7202 }
7203
7204 abuf->written = written;
7205 return vpc;
7206 #undef FLD
7207 }
7208
7209 /* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
7210
7211 static SEM_PC
7212 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7213 {
7214 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7216 int UNUSED written = 0;
7217 IADDR UNUSED pc = abuf->addr;
7218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7219
7220 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7221 {
7222 SI tmp_address;
7223 {
7224 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7225 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7226 }
7227 {
7228 SI opval = tmp_address;
7229 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7230 written |= (1 << 6);
7231 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7232 }
7233 }
7234 }
7235
7236 abuf->written = written;
7237 return vpc;
7238 #undef FLD
7239 }
7240
7241 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7242
7243 static SEM_PC
7244 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7245 {
7246 #define FLD(f) abuf->fields.sfmt_swapi.f
7247 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7248 int UNUSED written = 0;
7249 IADDR UNUSED pc = abuf->addr;
7250 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7251
7252 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7253
7254 return vpc;
7255 #undef FLD
7256 }
7257
7258 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7259
7260 static SEM_PC
7261 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7262 {
7263 #define FLD(f) abuf->fields.sfmt_swapi.f
7264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7265 int UNUSED written = 0;
7266 IADDR UNUSED pc = abuf->addr;
7267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7268
7269 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7270
7271 return vpc;
7272 #undef FLD
7273 }
7274
7275 /* sti: sti$pack $GRk,@($GRi,$d12) */
7276
7277 static SEM_PC
7278 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7279 {
7280 #define FLD(f) abuf->fields.sfmt_swapi.f
7281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7282 int UNUSED written = 0;
7283 IADDR UNUSED pc = abuf->addr;
7284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7285
7286 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7287
7288 return vpc;
7289 #undef FLD
7290 }
7291
7292 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7293
7294 static SEM_PC
7295 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7296 {
7297 #define FLD(f) abuf->fields.sfmt_stbfi.f
7298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7299 int UNUSED written = 0;
7300 IADDR UNUSED pc = abuf->addr;
7301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7302
7303 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7304
7305 return vpc;
7306 #undef FLD
7307 }
7308
7309 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7310
7311 static SEM_PC
7312 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7313 {
7314 #define FLD(f) abuf->fields.sfmt_stbfi.f
7315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7316 int UNUSED written = 0;
7317 IADDR UNUSED pc = abuf->addr;
7318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7319
7320 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7321
7322 return vpc;
7323 #undef FLD
7324 }
7325
7326 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7327
7328 static SEM_PC
7329 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7330 {
7331 #define FLD(f) abuf->fields.sfmt_stbfi.f
7332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7333 int UNUSED written = 0;
7334 IADDR UNUSED pc = abuf->addr;
7335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7336
7337 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7338
7339 return vpc;
7340 #undef FLD
7341 }
7342
7343 /* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
7344
7345 static SEM_PC
7346 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7347 {
7348 #define FLD(f) abuf->fields.sfmt_stdi.f
7349 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7350 int UNUSED written = 0;
7351 IADDR UNUSED pc = abuf->addr;
7352 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7353
7354 {
7355 SI tmp_address;
7356 {
7357 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7358 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7359 }
7360 }
7361
7362 return vpc;
7363 #undef FLD
7364 }
7365
7366 /* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
7367
7368 static SEM_PC
7369 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7370 {
7371 #define FLD(f) abuf->fields.sfmt_stdfi.f
7372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7373 int UNUSED written = 0;
7374 IADDR UNUSED pc = abuf->addr;
7375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7376
7377 {
7378 SI tmp_address;
7379 {
7380 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7381 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7382 }
7383 }
7384
7385 return vpc;
7386 #undef FLD
7387 }
7388
7389 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7390
7391 static SEM_PC
7392 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7393 {
7394 #define FLD(f) abuf->fields.sfmt_stdi.f
7395 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7396 int UNUSED written = 0;
7397 IADDR UNUSED pc = abuf->addr;
7398 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7399
7400 {
7401 SI tmp_address;
7402 {
7403 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7404 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7405 }
7406 }
7407
7408 return vpc;
7409 #undef FLD
7410 }
7411
7412 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7413
7414 static SEM_PC
7415 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7416 {
7417 #define FLD(f) abuf->fields.sfmt_stdfi.f
7418 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7419 int UNUSED written = 0;
7420 IADDR UNUSED pc = abuf->addr;
7421 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7422
7423 {
7424 SI tmp_address;
7425 {
7426 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7427 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7428 }
7429 }
7430
7431 return vpc;
7432 #undef FLD
7433 }
7434
7435 /* swap: swap$pack @($GRi,$GRj),$GRk */
7436
7437 static SEM_PC
7438 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7439 {
7440 #define FLD(f) abuf->fields.sfmt_cswap.f
7441 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7442 int UNUSED written = 0;
7443 IADDR UNUSED pc = abuf->addr;
7444 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7445
7446 {
7447 SI tmp_tmp;
7448 SI tmp_address;
7449 tmp_tmp = GET_H_GR (FLD (f_GRk));
7450 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7451 frvbf_check_swap_address (current_cpu, tmp_address);
7452 {
7453 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7454 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7455 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7456 }
7457 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7458 }
7459
7460 return vpc;
7461 #undef FLD
7462 }
7463
7464 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7465
7466 static SEM_PC
7467 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7468 {
7469 #define FLD(f) abuf->fields.sfmt_swapi.f
7470 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7471 int UNUSED written = 0;
7472 IADDR UNUSED pc = abuf->addr;
7473 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7474
7475 {
7476 SI tmp_tmp;
7477 SI tmp_address;
7478 tmp_tmp = GET_H_GR (FLD (f_GRk));
7479 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7480 frvbf_check_swap_address (current_cpu, tmp_address);
7481 {
7482 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7483 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7484 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7485 }
7486 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7487 }
7488
7489 return vpc;
7490 #undef FLD
7491 }
7492
7493 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7494
7495 static SEM_PC
7496 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7497 {
7498 #define FLD(f) abuf->fields.sfmt_cswap.f
7499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7500 int UNUSED written = 0;
7501 IADDR UNUSED pc = abuf->addr;
7502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7503
7504 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7505 {
7506 SI tmp_tmp;
7507 SI tmp_address;
7508 tmp_tmp = GET_H_GR (FLD (f_GRk));
7509 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7510 frvbf_check_swap_address (current_cpu, tmp_address);
7511 {
7512 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7513 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7514 written |= (1 << 6);
7515 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7516 }
7517 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7518 }
7519 }
7520
7521 abuf->written = written;
7522 return vpc;
7523 #undef FLD
7524 }
7525
7526 /* movgf: movgf$pack $GRj,$FRintk */
7527
7528 static SEM_PC
7529 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7530 {
7531 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7533 int UNUSED written = 0;
7534 IADDR UNUSED pc = abuf->addr;
7535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7536
7537 {
7538 SI opval = GET_H_GR (FLD (f_GRj));
7539 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7540 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7541 }
7542
7543 return vpc;
7544 #undef FLD
7545 }
7546
7547 /* movfg: movfg$pack $FRintk,$GRj */
7548
7549 static SEM_PC
7550 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7551 {
7552 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7554 int UNUSED written = 0;
7555 IADDR UNUSED pc = abuf->addr;
7556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7557
7558 {
7559 SI opval = GET_H_FR_INT (FLD (f_FRk));
7560 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7561 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7562 }
7563
7564 return vpc;
7565 #undef FLD
7566 }
7567
7568 /* movgfd: movgfd$pack $GRj,$FRintk */
7569
7570 static SEM_PC
7571 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7572 {
7573 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7575 int UNUSED written = 0;
7576 IADDR UNUSED pc = abuf->addr;
7577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7578
7579 if (EQSI (FLD (f_GRj), 0)) {
7580 {
7581 {
7582 SI opval = 0;
7583 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7584 written |= (1 << 4);
7585 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7586 }
7587 {
7588 USI opval = 0;
7589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7590 written |= (1 << 5);
7591 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7592 }
7593 }
7594 } else {
7595 {
7596 {
7597 SI opval = GET_H_GR (FLD (f_GRj));
7598 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7599 written |= (1 << 4);
7600 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7601 }
7602 {
7603 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7604 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7605 written |= (1 << 5);
7606 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7607 }
7608 }
7609 }
7610
7611 abuf->written = written;
7612 return vpc;
7613 #undef FLD
7614 }
7615
7616 /* movfgd: movfgd$pack $FRintk,$GRj */
7617
7618 static SEM_PC
7619 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7620 {
7621 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7623 int UNUSED written = 0;
7624 IADDR UNUSED pc = abuf->addr;
7625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7626
7627 if (NESI (FLD (f_GRj), 0)) {
7628 {
7629 {
7630 SI opval = GET_H_FR_INT (FLD (f_FRk));
7631 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7632 written |= (1 << 4);
7633 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7634 }
7635 {
7636 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7637 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7638 written |= (1 << 5);
7639 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7640 }
7641 }
7642 }
7643
7644 abuf->written = written;
7645 return vpc;
7646 #undef FLD
7647 }
7648
7649 /* movgfq: movgfq$pack $GRj,$FRintk */
7650
7651 static SEM_PC
7652 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7653 {
7654 #define FLD(f) abuf->fields.sfmt_movgfq.f
7655 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7656 int UNUSED written = 0;
7657 IADDR UNUSED pc = abuf->addr;
7658 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7659
7660 if (EQSI (FLD (f_GRj), 0)) {
7661 {
7662 {
7663 SI opval = 0;
7664 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7665 written |= (1 << 6);
7666 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7667 }
7668 {
7669 USI opval = 0;
7670 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7671 written |= (1 << 7);
7672 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7673 }
7674 {
7675 USI opval = 0;
7676 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7677 written |= (1 << 8);
7678 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7679 }
7680 {
7681 USI opval = 0;
7682 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7683 written |= (1 << 9);
7684 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7685 }
7686 }
7687 } else {
7688 {
7689 {
7690 SI opval = GET_H_GR (FLD (f_GRj));
7691 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7692 written |= (1 << 6);
7693 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7694 }
7695 {
7696 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7697 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7698 written |= (1 << 7);
7699 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7700 }
7701 {
7702 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7703 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7704 written |= (1 << 8);
7705 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7706 }
7707 {
7708 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7709 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7710 written |= (1 << 9);
7711 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7712 }
7713 }
7714 }
7715
7716 abuf->written = written;
7717 return vpc;
7718 #undef FLD
7719 }
7720
7721 /* movfgq: movfgq$pack $FRintk,$GRj */
7722
7723 static SEM_PC
7724 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7725 {
7726 #define FLD(f) abuf->fields.sfmt_movfgq.f
7727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7728 int UNUSED written = 0;
7729 IADDR UNUSED pc = abuf->addr;
7730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7731
7732 if (NESI (FLD (f_GRj), 0)) {
7733 {
7734 {
7735 SI opval = GET_H_FR_INT (FLD (f_FRk));
7736 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7737 written |= (1 << 6);
7738 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7739 }
7740 {
7741 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7742 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7743 written |= (1 << 7);
7744 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7745 }
7746 {
7747 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7748 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
7749 written |= (1 << 8);
7750 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7751 }
7752 {
7753 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7754 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
7755 written |= (1 << 9);
7756 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7757 }
7758 }
7759 }
7760
7761 abuf->written = written;
7762 return vpc;
7763 #undef FLD
7764 }
7765
7766 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7767
7768 static SEM_PC
7769 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7770 {
7771 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7772 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7773 int UNUSED written = 0;
7774 IADDR UNUSED pc = abuf->addr;
7775 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7776
7777 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7778 {
7779 SI opval = GET_H_GR (FLD (f_GRj));
7780 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7781 written |= (1 << 3);
7782 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7783 }
7784 }
7785
7786 abuf->written = written;
7787 return vpc;
7788 #undef FLD
7789 }
7790
7791 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7792
7793 static SEM_PC
7794 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7795 {
7796 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7797 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7798 int UNUSED written = 0;
7799 IADDR UNUSED pc = abuf->addr;
7800 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7801
7802 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7803 {
7804 SI opval = GET_H_FR_INT (FLD (f_FRk));
7805 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7806 written |= (1 << 3);
7807 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7808 }
7809 }
7810
7811 abuf->written = written;
7812 return vpc;
7813 #undef FLD
7814 }
7815
7816 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7817
7818 static SEM_PC
7819 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7820 {
7821 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7823 int UNUSED written = 0;
7824 IADDR UNUSED pc = abuf->addr;
7825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7826
7827 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7828 if (EQSI (FLD (f_GRj), 0)) {
7829 {
7830 {
7831 SI opval = 0;
7832 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7833 written |= (1 << 6);
7834 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7835 }
7836 {
7837 USI opval = 0;
7838 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7839 written |= (1 << 7);
7840 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7841 }
7842 }
7843 } else {
7844 {
7845 {
7846 SI opval = GET_H_GR (FLD (f_GRj));
7847 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7848 written |= (1 << 6);
7849 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7850 }
7851 {
7852 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7853 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7854 written |= (1 << 7);
7855 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7856 }
7857 }
7858 }
7859 }
7860
7861 abuf->written = written;
7862 return vpc;
7863 #undef FLD
7864 }
7865
7866 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7867
7868 static SEM_PC
7869 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7870 {
7871 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7873 int UNUSED written = 0;
7874 IADDR UNUSED pc = abuf->addr;
7875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7876
7877 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7878 {
7879 {
7880 SI opval = GET_H_FR_INT (FLD (f_FRk));
7881 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7882 written |= (1 << 6);
7883 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7884 }
7885 {
7886 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7887 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7888 written |= (1 << 7);
7889 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7890 }
7891 }
7892 }
7893
7894 abuf->written = written;
7895 return vpc;
7896 #undef FLD
7897 }
7898
7899 /* movgs: movgs$pack $GRj,$spr */
7900
7901 static SEM_PC
7902 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7903 {
7904 #define FLD(f) abuf->fields.sfmt_movgs.f
7905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7906 int UNUSED written = 0;
7907 IADDR UNUSED pc = abuf->addr;
7908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7909
7910 {
7911 USI opval = GET_H_GR (FLD (f_GRj));
7912 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7913 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7914 }
7915
7916 return vpc;
7917 #undef FLD
7918 }
7919
7920 /* movsg: movsg$pack $spr,$GRj */
7921
7922 static SEM_PC
7923 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7924 {
7925 #define FLD(f) abuf->fields.sfmt_movsg.f
7926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7927 int UNUSED written = 0;
7928 IADDR UNUSED pc = abuf->addr;
7929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7930
7931 {
7932 SI opval = GET_H_SPR (FLD (f_spr));
7933 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7934 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7935 }
7936
7937 return vpc;
7938 #undef FLD
7939 }
7940
7941 /* bra: bra$pack $hint_taken$label16 */
7942
7943 static SEM_PC
7944 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7945 {
7946 #define FLD(f) abuf->fields.sfmt_fbne.f
7947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7948 int UNUSED written = 0;
7949 IADDR UNUSED pc = abuf->addr;
7950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7951
7952 {
7953 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7954 {
7955 USI opval = FLD (i_label16);
7956 sim_queue_pc_write (current_cpu, opval);
7957 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7958 }
7959 }
7960
7961 return vpc;
7962 #undef FLD
7963 }
7964
7965 /* bno: bno$pack$hint_not_taken */
7966
7967 static SEM_PC
7968 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7969 {
7970 #define FLD(f) abuf->fields.sfmt_fbne.f
7971 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7972 int UNUSED written = 0;
7973 IADDR UNUSED pc = abuf->addr;
7974 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7975
7976 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7977
7978 return vpc;
7979 #undef FLD
7980 }
7981
7982 /* beq: beq$pack $ICCi_2,$hint,$label16 */
7983
7984 static SEM_PC
7985 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7986 {
7987 #define FLD(f) abuf->fields.sfmt_beq.f
7988 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7989 int UNUSED written = 0;
7990 IADDR UNUSED pc = abuf->addr;
7991 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7992
7993 {
7994 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7995 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7996 {
7997 USI opval = FLD (i_label16);
7998 sim_queue_pc_write (current_cpu, opval);
7999 written |= (1 << 3);
8000 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8001 }
8002 }
8003 }
8004
8005 abuf->written = written;
8006 return vpc;
8007 #undef FLD
8008 }
8009
8010 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8011
8012 static SEM_PC
8013 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8014 {
8015 #define FLD(f) abuf->fields.sfmt_beq.f
8016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8017 int UNUSED written = 0;
8018 IADDR UNUSED pc = abuf->addr;
8019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8020
8021 {
8022 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8023 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8024 {
8025 USI opval = FLD (i_label16);
8026 sim_queue_pc_write (current_cpu, opval);
8027 written |= (1 << 3);
8028 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8029 }
8030 }
8031 }
8032
8033 abuf->written = written;
8034 return vpc;
8035 #undef FLD
8036 }
8037
8038 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8039
8040 static SEM_PC
8041 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8042 {
8043 #define FLD(f) abuf->fields.sfmt_beq.f
8044 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8045 int UNUSED written = 0;
8046 IADDR UNUSED pc = abuf->addr;
8047 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8048
8049 {
8050 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8051 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))))) {
8052 {
8053 USI opval = FLD (i_label16);
8054 sim_queue_pc_write (current_cpu, opval);
8055 written |= (1 << 3);
8056 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8057 }
8058 }
8059 }
8060
8061 abuf->written = written;
8062 return vpc;
8063 #undef FLD
8064 }
8065
8066 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8067
8068 static SEM_PC
8069 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8070 {
8071 #define FLD(f) abuf->fields.sfmt_beq.f
8072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8073 int UNUSED written = 0;
8074 IADDR UNUSED pc = abuf->addr;
8075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8076
8077 {
8078 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8079 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)))))) {
8080 {
8081 USI opval = FLD (i_label16);
8082 sim_queue_pc_write (current_cpu, opval);
8083 written |= (1 << 3);
8084 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8085 }
8086 }
8087 }
8088
8089 abuf->written = written;
8090 return vpc;
8091 #undef FLD
8092 }
8093
8094 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8095
8096 static SEM_PC
8097 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8098 {
8099 #define FLD(f) abuf->fields.sfmt_beq.f
8100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8101 int UNUSED written = 0;
8102 IADDR UNUSED pc = abuf->addr;
8103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8104
8105 {
8106 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8107 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)))) {
8108 {
8109 USI opval = FLD (i_label16);
8110 sim_queue_pc_write (current_cpu, opval);
8111 written |= (1 << 3);
8112 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8113 }
8114 }
8115 }
8116
8117 abuf->written = written;
8118 return vpc;
8119 #undef FLD
8120 }
8121
8122 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8123
8124 static SEM_PC
8125 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8126 {
8127 #define FLD(f) abuf->fields.sfmt_beq.f
8128 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8129 int UNUSED written = 0;
8130 IADDR UNUSED pc = abuf->addr;
8131 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8132
8133 {
8134 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8135 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))))) {
8136 {
8137 USI opval = FLD (i_label16);
8138 sim_queue_pc_write (current_cpu, opval);
8139 written |= (1 << 3);
8140 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8141 }
8142 }
8143 }
8144
8145 abuf->written = written;
8146 return vpc;
8147 #undef FLD
8148 }
8149
8150 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8151
8152 static SEM_PC
8153 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8154 {
8155 #define FLD(f) abuf->fields.sfmt_beq.f
8156 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8157 int UNUSED written = 0;
8158 IADDR UNUSED pc = abuf->addr;
8159 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8160
8161 {
8162 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8163 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8164 {
8165 USI opval = FLD (i_label16);
8166 sim_queue_pc_write (current_cpu, opval);
8167 written |= (1 << 3);
8168 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8169 }
8170 }
8171 }
8172
8173 abuf->written = written;
8174 return vpc;
8175 #undef FLD
8176 }
8177
8178 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8179
8180 static SEM_PC
8181 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8182 {
8183 #define FLD(f) abuf->fields.sfmt_beq.f
8184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8185 int UNUSED written = 0;
8186 IADDR UNUSED pc = abuf->addr;
8187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8188
8189 {
8190 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8191 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))))) {
8192 {
8193 USI opval = FLD (i_label16);
8194 sim_queue_pc_write (current_cpu, opval);
8195 written |= (1 << 3);
8196 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8197 }
8198 }
8199 }
8200
8201 abuf->written = written;
8202 return vpc;
8203 #undef FLD
8204 }
8205
8206 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8207
8208 static SEM_PC
8209 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8210 {
8211 #define FLD(f) abuf->fields.sfmt_beq.f
8212 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8213 int UNUSED written = 0;
8214 IADDR UNUSED pc = abuf->addr;
8215 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8216
8217 {
8218 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8219 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8220 {
8221 USI opval = FLD (i_label16);
8222 sim_queue_pc_write (current_cpu, opval);
8223 written |= (1 << 3);
8224 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8225 }
8226 }
8227 }
8228
8229 abuf->written = written;
8230 return vpc;
8231 #undef FLD
8232 }
8233
8234 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8235
8236 static SEM_PC
8237 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8238 {
8239 #define FLD(f) abuf->fields.sfmt_beq.f
8240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8241 int UNUSED written = 0;
8242 IADDR UNUSED pc = abuf->addr;
8243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8244
8245 {
8246 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8247 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8248 {
8249 USI opval = FLD (i_label16);
8250 sim_queue_pc_write (current_cpu, opval);
8251 written |= (1 << 3);
8252 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8253 }
8254 }
8255 }
8256
8257 abuf->written = written;
8258 return vpc;
8259 #undef FLD
8260 }
8261
8262 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8263
8264 static SEM_PC
8265 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8266 {
8267 #define FLD(f) abuf->fields.sfmt_beq.f
8268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8269 int UNUSED written = 0;
8270 IADDR UNUSED pc = abuf->addr;
8271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8272
8273 {
8274 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8275 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8276 {
8277 USI opval = FLD (i_label16);
8278 sim_queue_pc_write (current_cpu, opval);
8279 written |= (1 << 3);
8280 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8281 }
8282 }
8283 }
8284
8285 abuf->written = written;
8286 return vpc;
8287 #undef FLD
8288 }
8289
8290 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8291
8292 static SEM_PC
8293 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8294 {
8295 #define FLD(f) abuf->fields.sfmt_beq.f
8296 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8297 int UNUSED written = 0;
8298 IADDR UNUSED pc = abuf->addr;
8299 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8300
8301 {
8302 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8303 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8304 {
8305 USI opval = FLD (i_label16);
8306 sim_queue_pc_write (current_cpu, opval);
8307 written |= (1 << 3);
8308 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8309 }
8310 }
8311 }
8312
8313 abuf->written = written;
8314 return vpc;
8315 #undef FLD
8316 }
8317
8318 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8319
8320 static SEM_PC
8321 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8322 {
8323 #define FLD(f) abuf->fields.sfmt_beq.f
8324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8325 int UNUSED written = 0;
8326 IADDR UNUSED pc = abuf->addr;
8327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8328
8329 {
8330 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8331 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8332 {
8333 USI opval = FLD (i_label16);
8334 sim_queue_pc_write (current_cpu, opval);
8335 written |= (1 << 3);
8336 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8337 }
8338 }
8339 }
8340
8341 abuf->written = written;
8342 return vpc;
8343 #undef FLD
8344 }
8345
8346 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8347
8348 static SEM_PC
8349 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8350 {
8351 #define FLD(f) abuf->fields.sfmt_beq.f
8352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8353 int UNUSED written = 0;
8354 IADDR UNUSED pc = abuf->addr;
8355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8356
8357 {
8358 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8359 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8360 {
8361 USI opval = FLD (i_label16);
8362 sim_queue_pc_write (current_cpu, opval);
8363 written |= (1 << 3);
8364 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8365 }
8366 }
8367 }
8368
8369 abuf->written = written;
8370 return vpc;
8371 #undef FLD
8372 }
8373
8374 /* fbra: fbra$pack $hint_taken$label16 */
8375
8376 static SEM_PC
8377 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8378 {
8379 #define FLD(f) abuf->fields.sfmt_fbne.f
8380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8381 int UNUSED written = 0;
8382 IADDR UNUSED pc = abuf->addr;
8383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8384
8385 {
8386 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8387 {
8388 USI opval = FLD (i_label16);
8389 sim_queue_pc_write (current_cpu, opval);
8390 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8391 }
8392 }
8393
8394 return vpc;
8395 #undef FLD
8396 }
8397
8398 /* fbno: fbno$pack$hint_not_taken */
8399
8400 static SEM_PC
8401 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8402 {
8403 #define FLD(f) abuf->fields.sfmt_fbne.f
8404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8405 int UNUSED written = 0;
8406 IADDR UNUSED pc = abuf->addr;
8407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8408
8409 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8410
8411 return vpc;
8412 #undef FLD
8413 }
8414
8415 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8416
8417 static SEM_PC
8418 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8419 {
8420 #define FLD(f) abuf->fields.sfmt_fbne.f
8421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8422 int UNUSED written = 0;
8423 IADDR UNUSED pc = abuf->addr;
8424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8425
8426 {
8427 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8428 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))))) {
8429 {
8430 USI opval = FLD (i_label16);
8431 sim_queue_pc_write (current_cpu, opval);
8432 written |= (1 << 3);
8433 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8434 }
8435 }
8436 }
8437
8438 abuf->written = written;
8439 return vpc;
8440 #undef FLD
8441 }
8442
8443 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8444
8445 static SEM_PC
8446 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8447 {
8448 #define FLD(f) abuf->fields.sfmt_fbne.f
8449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8450 int UNUSED written = 0;
8451 IADDR UNUSED pc = abuf->addr;
8452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8453
8454 {
8455 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8456 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8457 {
8458 USI opval = FLD (i_label16);
8459 sim_queue_pc_write (current_cpu, opval);
8460 written |= (1 << 3);
8461 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8462 }
8463 }
8464 }
8465
8466 abuf->written = written;
8467 return vpc;
8468 #undef FLD
8469 }
8470
8471 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8472
8473 static SEM_PC
8474 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8475 {
8476 #define FLD(f) abuf->fields.sfmt_fbne.f
8477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8478 int UNUSED written = 0;
8479 IADDR UNUSED pc = abuf->addr;
8480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8481
8482 {
8483 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8484 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)))) {
8485 {
8486 USI opval = FLD (i_label16);
8487 sim_queue_pc_write (current_cpu, opval);
8488 written |= (1 << 3);
8489 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8490 }
8491 }
8492 }
8493
8494 abuf->written = written;
8495 return vpc;
8496 #undef FLD
8497 }
8498
8499 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8500
8501 static SEM_PC
8502 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8503 {
8504 #define FLD(f) abuf->fields.sfmt_fbne.f
8505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8506 int UNUSED written = 0;
8507 IADDR UNUSED pc = abuf->addr;
8508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8509
8510 {
8511 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8512 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8513 {
8514 USI opval = FLD (i_label16);
8515 sim_queue_pc_write (current_cpu, opval);
8516 written |= (1 << 3);
8517 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8518 }
8519 }
8520 }
8521
8522 abuf->written = written;
8523 return vpc;
8524 #undef FLD
8525 }
8526
8527 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8528
8529 static SEM_PC
8530 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8531 {
8532 #define FLD(f) abuf->fields.sfmt_fbne.f
8533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8534 int UNUSED written = 0;
8535 IADDR UNUSED pc = abuf->addr;
8536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8537
8538 {
8539 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8540 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8541 {
8542 USI opval = FLD (i_label16);
8543 sim_queue_pc_write (current_cpu, opval);
8544 written |= (1 << 3);
8545 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8546 }
8547 }
8548 }
8549
8550 abuf->written = written;
8551 return vpc;
8552 #undef FLD
8553 }
8554
8555 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8556
8557 static SEM_PC
8558 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8559 {
8560 #define FLD(f) abuf->fields.sfmt_fbne.f
8561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8562 int UNUSED written = 0;
8563 IADDR UNUSED pc = abuf->addr;
8564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8565
8566 {
8567 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8568 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)))) {
8569 {
8570 USI opval = FLD (i_label16);
8571 sim_queue_pc_write (current_cpu, opval);
8572 written |= (1 << 3);
8573 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8574 }
8575 }
8576 }
8577
8578 abuf->written = written;
8579 return vpc;
8580 #undef FLD
8581 }
8582
8583 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8584
8585 static SEM_PC
8586 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8587 {
8588 #define FLD(f) abuf->fields.sfmt_fbne.f
8589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8590 int UNUSED written = 0;
8591 IADDR UNUSED pc = abuf->addr;
8592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8593
8594 {
8595 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8596 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8597 {
8598 USI opval = FLD (i_label16);
8599 sim_queue_pc_write (current_cpu, opval);
8600 written |= (1 << 3);
8601 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8602 }
8603 }
8604 }
8605
8606 abuf->written = written;
8607 return vpc;
8608 #undef FLD
8609 }
8610
8611 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8612
8613 static SEM_PC
8614 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8615 {
8616 #define FLD(f) abuf->fields.sfmt_fbne.f
8617 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8618 int UNUSED written = 0;
8619 IADDR UNUSED pc = abuf->addr;
8620 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8621
8622 {
8623 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8624 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))))) {
8625 {
8626 USI opval = FLD (i_label16);
8627 sim_queue_pc_write (current_cpu, opval);
8628 written |= (1 << 3);
8629 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8630 }
8631 }
8632 }
8633
8634 abuf->written = written;
8635 return vpc;
8636 #undef FLD
8637 }
8638
8639 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8640
8641 static SEM_PC
8642 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8643 {
8644 #define FLD(f) abuf->fields.sfmt_fbne.f
8645 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8646 int UNUSED written = 0;
8647 IADDR UNUSED pc = abuf->addr;
8648 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8649
8650 {
8651 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8652 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8653 {
8654 USI opval = FLD (i_label16);
8655 sim_queue_pc_write (current_cpu, opval);
8656 written |= (1 << 3);
8657 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8658 }
8659 }
8660 }
8661
8662 abuf->written = written;
8663 return vpc;
8664 #undef FLD
8665 }
8666
8667 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8668
8669 static SEM_PC
8670 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8671 {
8672 #define FLD(f) abuf->fields.sfmt_fbne.f
8673 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8674 int UNUSED written = 0;
8675 IADDR UNUSED pc = abuf->addr;
8676 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8677
8678 {
8679 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8680 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)))) {
8681 {
8682 USI opval = FLD (i_label16);
8683 sim_queue_pc_write (current_cpu, opval);
8684 written |= (1 << 3);
8685 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8686 }
8687 }
8688 }
8689
8690 abuf->written = written;
8691 return vpc;
8692 #undef FLD
8693 }
8694
8695 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8696
8697 static SEM_PC
8698 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8699 {
8700 #define FLD(f) abuf->fields.sfmt_fbne.f
8701 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8702 int UNUSED written = 0;
8703 IADDR UNUSED pc = abuf->addr;
8704 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8705
8706 {
8707 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8708 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8709 {
8710 USI opval = FLD (i_label16);
8711 sim_queue_pc_write (current_cpu, opval);
8712 written |= (1 << 3);
8713 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8714 }
8715 }
8716 }
8717
8718 abuf->written = written;
8719 return vpc;
8720 #undef FLD
8721 }
8722
8723 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8724
8725 static SEM_PC
8726 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8727 {
8728 #define FLD(f) abuf->fields.sfmt_fbne.f
8729 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8730 int UNUSED written = 0;
8731 IADDR UNUSED pc = abuf->addr;
8732 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8733
8734 {
8735 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8736 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))))) {
8737 {
8738 USI opval = FLD (i_label16);
8739 sim_queue_pc_write (current_cpu, opval);
8740 written |= (1 << 3);
8741 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8742 }
8743 }
8744 }
8745
8746 abuf->written = written;
8747 return vpc;
8748 #undef FLD
8749 }
8750
8751 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8752
8753 static SEM_PC
8754 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8755 {
8756 #define FLD(f) abuf->fields.sfmt_fbne.f
8757 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8758 int UNUSED written = 0;
8759 IADDR UNUSED pc = abuf->addr;
8760 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8761
8762 {
8763 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8764 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8765 {
8766 USI opval = FLD (i_label16);
8767 sim_queue_pc_write (current_cpu, opval);
8768 written |= (1 << 3);
8769 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8770 }
8771 }
8772 }
8773
8774 abuf->written = written;
8775 return vpc;
8776 #undef FLD
8777 }
8778
8779 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8780
8781 static SEM_PC
8782 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8783 {
8784 #define FLD(f) abuf->fields.sfmt_fbne.f
8785 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8786 int UNUSED written = 0;
8787 IADDR UNUSED pc = abuf->addr;
8788 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8789
8790 {
8791 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8792 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))))) {
8793 {
8794 USI opval = FLD (i_label16);
8795 sim_queue_pc_write (current_cpu, opval);
8796 written |= (1 << 3);
8797 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8798 }
8799 }
8800 }
8801
8802 abuf->written = written;
8803 return vpc;
8804 #undef FLD
8805 }
8806
8807 /* bctrlr: bctrlr$pack $ccond,$hint */
8808
8809 static SEM_PC
8810 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8811 {
8812 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8814 int UNUSED written = 0;
8815 IADDR UNUSED pc = abuf->addr;
8816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8817
8818 {
8819 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8820 {
8821 SI tmp_tmp;
8822 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8823 {
8824 USI opval = tmp_tmp;
8825 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8826 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8827 }
8828 if (EQSI (FLD (f_ccond), 0)) {
8829 if (NESI (tmp_tmp, 0)) {
8830 {
8831 USI opval = GET_H_SPR (((UINT) 272));
8832 sim_queue_pc_write (current_cpu, opval);
8833 written |= (1 << 5);
8834 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8835 }
8836 }
8837 } else {
8838 if (EQSI (tmp_tmp, 0)) {
8839 {
8840 USI opval = GET_H_SPR (((UINT) 272));
8841 sim_queue_pc_write (current_cpu, opval);
8842 written |= (1 << 5);
8843 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8844 }
8845 }
8846 }
8847 }
8848 }
8849
8850 abuf->written = written;
8851 return vpc;
8852 #undef FLD
8853 }
8854
8855 /* bralr: bralr$pack$hint_taken */
8856
8857 static SEM_PC
8858 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8859 {
8860 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8862 int UNUSED written = 0;
8863 IADDR UNUSED pc = abuf->addr;
8864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8865
8866 {
8867 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8868 {
8869 USI opval = GET_H_SPR (((UINT) 272));
8870 sim_queue_pc_write (current_cpu, opval);
8871 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8872 }
8873 }
8874
8875 return vpc;
8876 #undef FLD
8877 }
8878
8879 /* bnolr: bnolr$pack$hint_not_taken */
8880
8881 static SEM_PC
8882 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8883 {
8884 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8886 int UNUSED written = 0;
8887 IADDR UNUSED pc = abuf->addr;
8888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8889
8890 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8891
8892 return vpc;
8893 #undef FLD
8894 }
8895
8896 /* beqlr: beqlr$pack $ICCi_2,$hint */
8897
8898 static SEM_PC
8899 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8900 {
8901 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8902 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8903 int UNUSED written = 0;
8904 IADDR UNUSED pc = abuf->addr;
8905 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8906
8907 {
8908 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8909 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8910 {
8911 USI opval = GET_H_SPR (((UINT) 272));
8912 sim_queue_pc_write (current_cpu, opval);
8913 written |= (1 << 3);
8914 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8915 }
8916 }
8917 }
8918
8919 abuf->written = written;
8920 return vpc;
8921 #undef FLD
8922 }
8923
8924 /* bnelr: bnelr$pack $ICCi_2,$hint */
8925
8926 static SEM_PC
8927 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8928 {
8929 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8931 int UNUSED written = 0;
8932 IADDR UNUSED pc = abuf->addr;
8933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8934
8935 {
8936 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8937 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8938 {
8939 USI opval = GET_H_SPR (((UINT) 272));
8940 sim_queue_pc_write (current_cpu, opval);
8941 written |= (1 << 3);
8942 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8943 }
8944 }
8945 }
8946
8947 abuf->written = written;
8948 return vpc;
8949 #undef FLD
8950 }
8951
8952 /* blelr: blelr$pack $ICCi_2,$hint */
8953
8954 static SEM_PC
8955 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8956 {
8957 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8958 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8959 int UNUSED written = 0;
8960 IADDR UNUSED pc = abuf->addr;
8961 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8962
8963 {
8964 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8965 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))))) {
8966 {
8967 USI opval = GET_H_SPR (((UINT) 272));
8968 sim_queue_pc_write (current_cpu, opval);
8969 written |= (1 << 3);
8970 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8971 }
8972 }
8973 }
8974
8975 abuf->written = written;
8976 return vpc;
8977 #undef FLD
8978 }
8979
8980 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
8981
8982 static SEM_PC
8983 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8984 {
8985 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8986 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8987 int UNUSED written = 0;
8988 IADDR UNUSED pc = abuf->addr;
8989 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8990
8991 {
8992 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8993 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)))))) {
8994 {
8995 USI opval = GET_H_SPR (((UINT) 272));
8996 sim_queue_pc_write (current_cpu, opval);
8997 written |= (1 << 3);
8998 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8999 }
9000 }
9001 }
9002
9003 abuf->written = written;
9004 return vpc;
9005 #undef FLD
9006 }
9007
9008 /* bltlr: bltlr$pack $ICCi_2,$hint */
9009
9010 static SEM_PC
9011 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9012 {
9013 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9014 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9015 int UNUSED written = 0;
9016 IADDR UNUSED pc = abuf->addr;
9017 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9018
9019 {
9020 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9021 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)))) {
9022 {
9023 USI opval = GET_H_SPR (((UINT) 272));
9024 sim_queue_pc_write (current_cpu, opval);
9025 written |= (1 << 3);
9026 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9027 }
9028 }
9029 }
9030
9031 abuf->written = written;
9032 return vpc;
9033 #undef FLD
9034 }
9035
9036 /* bgelr: bgelr$pack $ICCi_2,$hint */
9037
9038 static SEM_PC
9039 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9040 {
9041 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9043 int UNUSED written = 0;
9044 IADDR UNUSED pc = abuf->addr;
9045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9046
9047 {
9048 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9049 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))))) {
9050 {
9051 USI opval = GET_H_SPR (((UINT) 272));
9052 sim_queue_pc_write (current_cpu, opval);
9053 written |= (1 << 3);
9054 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9055 }
9056 }
9057 }
9058
9059 abuf->written = written;
9060 return vpc;
9061 #undef FLD
9062 }
9063
9064 /* blslr: blslr$pack $ICCi_2,$hint */
9065
9066 static SEM_PC
9067 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9068 {
9069 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9070 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9071 int UNUSED written = 0;
9072 IADDR UNUSED pc = abuf->addr;
9073 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9074
9075 {
9076 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9077 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9078 {
9079 USI opval = GET_H_SPR (((UINT) 272));
9080 sim_queue_pc_write (current_cpu, opval);
9081 written |= (1 << 3);
9082 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9083 }
9084 }
9085 }
9086
9087 abuf->written = written;
9088 return vpc;
9089 #undef FLD
9090 }
9091
9092 /* bhilr: bhilr$pack $ICCi_2,$hint */
9093
9094 static SEM_PC
9095 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9096 {
9097 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9099 int UNUSED written = 0;
9100 IADDR UNUSED pc = abuf->addr;
9101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9102
9103 {
9104 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9105 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))))) {
9106 {
9107 USI opval = GET_H_SPR (((UINT) 272));
9108 sim_queue_pc_write (current_cpu, opval);
9109 written |= (1 << 3);
9110 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9111 }
9112 }
9113 }
9114
9115 abuf->written = written;
9116 return vpc;
9117 #undef FLD
9118 }
9119
9120 /* bclr: bclr$pack $ICCi_2,$hint */
9121
9122 static SEM_PC
9123 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9124 {
9125 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9127 int UNUSED written = 0;
9128 IADDR UNUSED pc = abuf->addr;
9129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9130
9131 {
9132 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9133 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9134 {
9135 USI opval = GET_H_SPR (((UINT) 272));
9136 sim_queue_pc_write (current_cpu, opval);
9137 written |= (1 << 3);
9138 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9139 }
9140 }
9141 }
9142
9143 abuf->written = written;
9144 return vpc;
9145 #undef FLD
9146 }
9147
9148 /* bnclr: bnclr$pack $ICCi_2,$hint */
9149
9150 static SEM_PC
9151 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9152 {
9153 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9155 int UNUSED written = 0;
9156 IADDR UNUSED pc = abuf->addr;
9157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9158
9159 {
9160 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9161 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9162 {
9163 USI opval = GET_H_SPR (((UINT) 272));
9164 sim_queue_pc_write (current_cpu, opval);
9165 written |= (1 << 3);
9166 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9167 }
9168 }
9169 }
9170
9171 abuf->written = written;
9172 return vpc;
9173 #undef FLD
9174 }
9175
9176 /* bnlr: bnlr$pack $ICCi_2,$hint */
9177
9178 static SEM_PC
9179 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9180 {
9181 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9183 int UNUSED written = 0;
9184 IADDR UNUSED pc = abuf->addr;
9185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9186
9187 {
9188 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9189 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9190 {
9191 USI opval = GET_H_SPR (((UINT) 272));
9192 sim_queue_pc_write (current_cpu, opval);
9193 written |= (1 << 3);
9194 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9195 }
9196 }
9197 }
9198
9199 abuf->written = written;
9200 return vpc;
9201 #undef FLD
9202 }
9203
9204 /* bplr: bplr$pack $ICCi_2,$hint */
9205
9206 static SEM_PC
9207 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9208 {
9209 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9211 int UNUSED written = 0;
9212 IADDR UNUSED pc = abuf->addr;
9213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9214
9215 {
9216 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9217 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9218 {
9219 USI opval = GET_H_SPR (((UINT) 272));
9220 sim_queue_pc_write (current_cpu, opval);
9221 written |= (1 << 3);
9222 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9223 }
9224 }
9225 }
9226
9227 abuf->written = written;
9228 return vpc;
9229 #undef FLD
9230 }
9231
9232 /* bvlr: bvlr$pack $ICCi_2,$hint */
9233
9234 static SEM_PC
9235 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9236 {
9237 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9239 int UNUSED written = 0;
9240 IADDR UNUSED pc = abuf->addr;
9241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9242
9243 {
9244 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9245 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9246 {
9247 USI opval = GET_H_SPR (((UINT) 272));
9248 sim_queue_pc_write (current_cpu, opval);
9249 written |= (1 << 3);
9250 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9251 }
9252 }
9253 }
9254
9255 abuf->written = written;
9256 return vpc;
9257 #undef FLD
9258 }
9259
9260 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9261
9262 static SEM_PC
9263 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9264 {
9265 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9267 int UNUSED written = 0;
9268 IADDR UNUSED pc = abuf->addr;
9269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9270
9271 {
9272 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9273 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9274 {
9275 USI opval = GET_H_SPR (((UINT) 272));
9276 sim_queue_pc_write (current_cpu, opval);
9277 written |= (1 << 3);
9278 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9279 }
9280 }
9281 }
9282
9283 abuf->written = written;
9284 return vpc;
9285 #undef FLD
9286 }
9287
9288 /* fbralr: fbralr$pack$hint_taken */
9289
9290 static SEM_PC
9291 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9292 {
9293 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9295 int UNUSED written = 0;
9296 IADDR UNUSED pc = abuf->addr;
9297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9298
9299 {
9300 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9301 {
9302 USI opval = GET_H_SPR (((UINT) 272));
9303 sim_queue_pc_write (current_cpu, opval);
9304 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9305 }
9306 }
9307
9308 return vpc;
9309 #undef FLD
9310 }
9311
9312 /* fbnolr: fbnolr$pack$hint_not_taken */
9313
9314 static SEM_PC
9315 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9316 {
9317 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9319 int UNUSED written = 0;
9320 IADDR UNUSED pc = abuf->addr;
9321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9322
9323 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9324
9325 return vpc;
9326 #undef FLD
9327 }
9328
9329 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9330
9331 static SEM_PC
9332 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9333 {
9334 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9336 int UNUSED written = 0;
9337 IADDR UNUSED pc = abuf->addr;
9338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9339
9340 {
9341 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9342 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9343 {
9344 USI opval = GET_H_SPR (((UINT) 272));
9345 sim_queue_pc_write (current_cpu, opval);
9346 written |= (1 << 3);
9347 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9348 }
9349 }
9350 }
9351
9352 abuf->written = written;
9353 return vpc;
9354 #undef FLD
9355 }
9356
9357 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9358
9359 static SEM_PC
9360 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9361 {
9362 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9364 int UNUSED written = 0;
9365 IADDR UNUSED pc = abuf->addr;
9366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9367
9368 {
9369 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9370 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))))) {
9371 {
9372 USI opval = GET_H_SPR (((UINT) 272));
9373 sim_queue_pc_write (current_cpu, opval);
9374 written |= (1 << 3);
9375 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9376 }
9377 }
9378 }
9379
9380 abuf->written = written;
9381 return vpc;
9382 #undef FLD
9383 }
9384
9385 /* fblglr: fblglr$pack $FCCi_2,$hint */
9386
9387 static SEM_PC
9388 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9389 {
9390 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9391 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9392 int UNUSED written = 0;
9393 IADDR UNUSED pc = abuf->addr;
9394 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9395
9396 {
9397 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9398 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)))) {
9399 {
9400 USI opval = GET_H_SPR (((UINT) 272));
9401 sim_queue_pc_write (current_cpu, opval);
9402 written |= (1 << 3);
9403 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9404 }
9405 }
9406 }
9407
9408 abuf->written = written;
9409 return vpc;
9410 #undef FLD
9411 }
9412
9413 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9414
9415 static SEM_PC
9416 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9417 {
9418 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9420 int UNUSED written = 0;
9421 IADDR UNUSED pc = abuf->addr;
9422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9423
9424 {
9425 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9426 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9427 {
9428 USI opval = GET_H_SPR (((UINT) 272));
9429 sim_queue_pc_write (current_cpu, opval);
9430 written |= (1 << 3);
9431 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9432 }
9433 }
9434 }
9435
9436 abuf->written = written;
9437 return vpc;
9438 #undef FLD
9439 }
9440
9441 /* fbullr: fbullr$pack $FCCi_2,$hint */
9442
9443 static SEM_PC
9444 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9445 {
9446 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9448 int UNUSED written = 0;
9449 IADDR UNUSED pc = abuf->addr;
9450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9451
9452 {
9453 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9454 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9455 {
9456 USI opval = GET_H_SPR (((UINT) 272));
9457 sim_queue_pc_write (current_cpu, opval);
9458 written |= (1 << 3);
9459 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9460 }
9461 }
9462 }
9463
9464 abuf->written = written;
9465 return vpc;
9466 #undef FLD
9467 }
9468
9469 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9470
9471 static SEM_PC
9472 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9473 {
9474 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9476 int UNUSED written = 0;
9477 IADDR UNUSED pc = abuf->addr;
9478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9479
9480 {
9481 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9482 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)))) {
9483 {
9484 USI opval = GET_H_SPR (((UINT) 272));
9485 sim_queue_pc_write (current_cpu, opval);
9486 written |= (1 << 3);
9487 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9488 }
9489 }
9490 }
9491
9492 abuf->written = written;
9493 return vpc;
9494 #undef FLD
9495 }
9496
9497 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9498
9499 static SEM_PC
9500 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9501 {
9502 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9504 int UNUSED written = 0;
9505 IADDR UNUSED pc = abuf->addr;
9506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9507
9508 {
9509 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9510 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9511 {
9512 USI opval = GET_H_SPR (((UINT) 272));
9513 sim_queue_pc_write (current_cpu, opval);
9514 written |= (1 << 3);
9515 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9516 }
9517 }
9518 }
9519
9520 abuf->written = written;
9521 return vpc;
9522 #undef FLD
9523 }
9524
9525 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9526
9527 static SEM_PC
9528 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9529 {
9530 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9532 int UNUSED written = 0;
9533 IADDR UNUSED pc = abuf->addr;
9534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9535
9536 {
9537 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9538 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))))) {
9539 {
9540 USI opval = GET_H_SPR (((UINT) 272));
9541 sim_queue_pc_write (current_cpu, opval);
9542 written |= (1 << 3);
9543 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9544 }
9545 }
9546 }
9547
9548 abuf->written = written;
9549 return vpc;
9550 #undef FLD
9551 }
9552
9553 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9554
9555 static SEM_PC
9556 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9557 {
9558 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9559 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9560 int UNUSED written = 0;
9561 IADDR UNUSED pc = abuf->addr;
9562 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9563
9564 {
9565 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9566 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9567 {
9568 USI opval = GET_H_SPR (((UINT) 272));
9569 sim_queue_pc_write (current_cpu, opval);
9570 written |= (1 << 3);
9571 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9572 }
9573 }
9574 }
9575
9576 abuf->written = written;
9577 return vpc;
9578 #undef FLD
9579 }
9580
9581 /* fblelr: fblelr$pack $FCCi_2,$hint */
9582
9583 static SEM_PC
9584 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9585 {
9586 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9588 int UNUSED written = 0;
9589 IADDR UNUSED pc = abuf->addr;
9590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9591
9592 {
9593 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9594 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)))) {
9595 {
9596 USI opval = GET_H_SPR (((UINT) 272));
9597 sim_queue_pc_write (current_cpu, opval);
9598 written |= (1 << 3);
9599 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9600 }
9601 }
9602 }
9603
9604 abuf->written = written;
9605 return vpc;
9606 #undef FLD
9607 }
9608
9609 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9610
9611 static SEM_PC
9612 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9613 {
9614 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9615 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9616 int UNUSED written = 0;
9617 IADDR UNUSED pc = abuf->addr;
9618 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9619
9620 {
9621 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9622 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9623 {
9624 USI opval = GET_H_SPR (((UINT) 272));
9625 sim_queue_pc_write (current_cpu, opval);
9626 written |= (1 << 3);
9627 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9628 }
9629 }
9630 }
9631
9632 abuf->written = written;
9633 return vpc;
9634 #undef FLD
9635 }
9636
9637 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9638
9639 static SEM_PC
9640 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9641 {
9642 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9643 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9644 int UNUSED written = 0;
9645 IADDR UNUSED pc = abuf->addr;
9646 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9647
9648 {
9649 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9650 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))))) {
9651 {
9652 USI opval = GET_H_SPR (((UINT) 272));
9653 sim_queue_pc_write (current_cpu, opval);
9654 written |= (1 << 3);
9655 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9656 }
9657 }
9658 }
9659
9660 abuf->written = written;
9661 return vpc;
9662 #undef FLD
9663 }
9664
9665 /* fbulr: fbulr$pack $FCCi_2,$hint */
9666
9667 static SEM_PC
9668 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9669 {
9670 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9671 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9672 int UNUSED written = 0;
9673 IADDR UNUSED pc = abuf->addr;
9674 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9675
9676 {
9677 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9678 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9679 {
9680 USI opval = GET_H_SPR (((UINT) 272));
9681 sim_queue_pc_write (current_cpu, opval);
9682 written |= (1 << 3);
9683 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9684 }
9685 }
9686 }
9687
9688 abuf->written = written;
9689 return vpc;
9690 #undef FLD
9691 }
9692
9693 /* fbolr: fbolr$pack $FCCi_2,$hint */
9694
9695 static SEM_PC
9696 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9697 {
9698 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9700 int UNUSED written = 0;
9701 IADDR UNUSED pc = abuf->addr;
9702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9703
9704 {
9705 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9706 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))))) {
9707 {
9708 USI opval = GET_H_SPR (((UINT) 272));
9709 sim_queue_pc_write (current_cpu, opval);
9710 written |= (1 << 3);
9711 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9712 }
9713 }
9714 }
9715
9716 abuf->written = written;
9717 return vpc;
9718 #undef FLD
9719 }
9720
9721 /* bcralr: bcralr$pack $ccond$hint_taken */
9722
9723 static SEM_PC
9724 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9725 {
9726 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9727 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9728 int UNUSED written = 0;
9729 IADDR UNUSED pc = abuf->addr;
9730 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9731
9732 {
9733 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9734 {
9735 SI tmp_tmp;
9736 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9737 {
9738 USI opval = tmp_tmp;
9739 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9740 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9741 }
9742 if (EQSI (FLD (f_ccond), 0)) {
9743 if (NESI (tmp_tmp, 0)) {
9744 {
9745 USI opval = GET_H_SPR (((UINT) 272));
9746 sim_queue_pc_write (current_cpu, opval);
9747 written |= (1 << 5);
9748 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9749 }
9750 }
9751 } else {
9752 if (EQSI (tmp_tmp, 0)) {
9753 {
9754 USI opval = GET_H_SPR (((UINT) 272));
9755 sim_queue_pc_write (current_cpu, opval);
9756 written |= (1 << 5);
9757 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9758 }
9759 }
9760 }
9761 }
9762 }
9763
9764 abuf->written = written;
9765 return vpc;
9766 #undef FLD
9767 }
9768
9769 /* bcnolr: bcnolr$pack$hint_not_taken */
9770
9771 static SEM_PC
9772 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9773 {
9774 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9776 int UNUSED written = 0;
9777 IADDR UNUSED pc = abuf->addr;
9778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9779
9780 {
9781 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9782 {
9783 SI tmp_tmp;
9784 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9785 {
9786 USI opval = tmp_tmp;
9787 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9788 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9789 }
9790 ((void) 0); /*nop*/
9791 }
9792 }
9793
9794 return vpc;
9795 #undef FLD
9796 }
9797
9798 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9799
9800 static SEM_PC
9801 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9802 {
9803 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9804 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9805 int UNUSED written = 0;
9806 IADDR UNUSED pc = abuf->addr;
9807 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9808
9809 {
9810 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9811 {
9812 SI tmp_tmp;
9813 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9814 {
9815 USI opval = tmp_tmp;
9816 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9817 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9818 }
9819 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9820 if (EQSI (FLD (f_ccond), 0)) {
9821 if (NESI (tmp_tmp, 0)) {
9822 {
9823 USI opval = GET_H_SPR (((UINT) 272));
9824 sim_queue_pc_write (current_cpu, opval);
9825 written |= (1 << 6);
9826 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9827 }
9828 }
9829 } else {
9830 if (EQSI (tmp_tmp, 0)) {
9831 {
9832 USI opval = GET_H_SPR (((UINT) 272));
9833 sim_queue_pc_write (current_cpu, opval);
9834 written |= (1 << 6);
9835 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9836 }
9837 }
9838 }
9839 }
9840 }
9841 }
9842
9843 abuf->written = written;
9844 return vpc;
9845 #undef FLD
9846 }
9847
9848 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9849
9850 static SEM_PC
9851 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9852 {
9853 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9854 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9855 int UNUSED written = 0;
9856 IADDR UNUSED pc = abuf->addr;
9857 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9858
9859 {
9860 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9861 {
9862 SI tmp_tmp;
9863 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9864 {
9865 USI opval = tmp_tmp;
9866 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9867 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9868 }
9869 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9870 if (EQSI (FLD (f_ccond), 0)) {
9871 if (NESI (tmp_tmp, 0)) {
9872 {
9873 USI opval = GET_H_SPR (((UINT) 272));
9874 sim_queue_pc_write (current_cpu, opval);
9875 written |= (1 << 6);
9876 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9877 }
9878 }
9879 } else {
9880 if (EQSI (tmp_tmp, 0)) {
9881 {
9882 USI opval = GET_H_SPR (((UINT) 272));
9883 sim_queue_pc_write (current_cpu, opval);
9884 written |= (1 << 6);
9885 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9886 }
9887 }
9888 }
9889 }
9890 }
9891 }
9892
9893 abuf->written = written;
9894 return vpc;
9895 #undef FLD
9896 }
9897
9898 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9899
9900 static SEM_PC
9901 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9902 {
9903 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9905 int UNUSED written = 0;
9906 IADDR UNUSED pc = abuf->addr;
9907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9908
9909 {
9910 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9911 {
9912 SI tmp_tmp;
9913 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9914 {
9915 USI opval = tmp_tmp;
9916 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9917 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9918 }
9919 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))))) {
9920 if (EQSI (FLD (f_ccond), 0)) {
9921 if (NESI (tmp_tmp, 0)) {
9922 {
9923 USI opval = GET_H_SPR (((UINT) 272));
9924 sim_queue_pc_write (current_cpu, opval);
9925 written |= (1 << 6);
9926 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9927 }
9928 }
9929 } else {
9930 if (EQSI (tmp_tmp, 0)) {
9931 {
9932 USI opval = GET_H_SPR (((UINT) 272));
9933 sim_queue_pc_write (current_cpu, opval);
9934 written |= (1 << 6);
9935 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9936 }
9937 }
9938 }
9939 }
9940 }
9941 }
9942
9943 abuf->written = written;
9944 return vpc;
9945 #undef FLD
9946 }
9947
9948 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9949
9950 static SEM_PC
9951 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9952 {
9953 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9955 int UNUSED written = 0;
9956 IADDR UNUSED pc = abuf->addr;
9957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9958
9959 {
9960 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9961 {
9962 SI tmp_tmp;
9963 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9964 {
9965 USI opval = tmp_tmp;
9966 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9967 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9968 }
9969 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)))))) {
9970 if (EQSI (FLD (f_ccond), 0)) {
9971 if (NESI (tmp_tmp, 0)) {
9972 {
9973 USI opval = GET_H_SPR (((UINT) 272));
9974 sim_queue_pc_write (current_cpu, opval);
9975 written |= (1 << 6);
9976 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9977 }
9978 }
9979 } else {
9980 if (EQSI (tmp_tmp, 0)) {
9981 {
9982 USI opval = GET_H_SPR (((UINT) 272));
9983 sim_queue_pc_write (current_cpu, opval);
9984 written |= (1 << 6);
9985 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9986 }
9987 }
9988 }
9989 }
9990 }
9991 }
9992
9993 abuf->written = written;
9994 return vpc;
9995 #undef FLD
9996 }
9997
9998 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
9999
10000 static SEM_PC
10001 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10002 {
10003 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10005 int UNUSED written = 0;
10006 IADDR UNUSED pc = abuf->addr;
10007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10008
10009 {
10010 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10011 {
10012 SI tmp_tmp;
10013 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10014 {
10015 USI opval = tmp_tmp;
10016 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10017 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10018 }
10019 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)))) {
10020 if (EQSI (FLD (f_ccond), 0)) {
10021 if (NESI (tmp_tmp, 0)) {
10022 {
10023 USI opval = GET_H_SPR (((UINT) 272));
10024 sim_queue_pc_write (current_cpu, opval);
10025 written |= (1 << 6);
10026 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10027 }
10028 }
10029 } else {
10030 if (EQSI (tmp_tmp, 0)) {
10031 {
10032 USI opval = GET_H_SPR (((UINT) 272));
10033 sim_queue_pc_write (current_cpu, opval);
10034 written |= (1 << 6);
10035 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10036 }
10037 }
10038 }
10039 }
10040 }
10041 }
10042
10043 abuf->written = written;
10044 return vpc;
10045 #undef FLD
10046 }
10047
10048 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10049
10050 static SEM_PC
10051 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10052 {
10053 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10055 int UNUSED written = 0;
10056 IADDR UNUSED pc = abuf->addr;
10057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10058
10059 {
10060 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10061 {
10062 SI tmp_tmp;
10063 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10064 {
10065 USI opval = tmp_tmp;
10066 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10067 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10068 }
10069 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))))) {
10070 if (EQSI (FLD (f_ccond), 0)) {
10071 if (NESI (tmp_tmp, 0)) {
10072 {
10073 USI opval = GET_H_SPR (((UINT) 272));
10074 sim_queue_pc_write (current_cpu, opval);
10075 written |= (1 << 6);
10076 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10077 }
10078 }
10079 } else {
10080 if (EQSI (tmp_tmp, 0)) {
10081 {
10082 USI opval = GET_H_SPR (((UINT) 272));
10083 sim_queue_pc_write (current_cpu, opval);
10084 written |= (1 << 6);
10085 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10086 }
10087 }
10088 }
10089 }
10090 }
10091 }
10092
10093 abuf->written = written;
10094 return vpc;
10095 #undef FLD
10096 }
10097
10098 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10099
10100 static SEM_PC
10101 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10102 {
10103 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10104 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10105 int UNUSED written = 0;
10106 IADDR UNUSED pc = abuf->addr;
10107 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10108
10109 {
10110 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10111 {
10112 SI tmp_tmp;
10113 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10114 {
10115 USI opval = tmp_tmp;
10116 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10117 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10118 }
10119 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10120 if (EQSI (FLD (f_ccond), 0)) {
10121 if (NESI (tmp_tmp, 0)) {
10122 {
10123 USI opval = GET_H_SPR (((UINT) 272));
10124 sim_queue_pc_write (current_cpu, opval);
10125 written |= (1 << 6);
10126 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10127 }
10128 }
10129 } else {
10130 if (EQSI (tmp_tmp, 0)) {
10131 {
10132 USI opval = GET_H_SPR (((UINT) 272));
10133 sim_queue_pc_write (current_cpu, opval);
10134 written |= (1 << 6);
10135 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10136 }
10137 }
10138 }
10139 }
10140 }
10141 }
10142
10143 abuf->written = written;
10144 return vpc;
10145 #undef FLD
10146 }
10147
10148 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10149
10150 static SEM_PC
10151 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10152 {
10153 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10155 int UNUSED written = 0;
10156 IADDR UNUSED pc = abuf->addr;
10157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10158
10159 {
10160 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10161 {
10162 SI tmp_tmp;
10163 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10164 {
10165 USI opval = tmp_tmp;
10166 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10167 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10168 }
10169 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))))) {
10170 if (EQSI (FLD (f_ccond), 0)) {
10171 if (NESI (tmp_tmp, 0)) {
10172 {
10173 USI opval = GET_H_SPR (((UINT) 272));
10174 sim_queue_pc_write (current_cpu, opval);
10175 written |= (1 << 6);
10176 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10177 }
10178 }
10179 } else {
10180 if (EQSI (tmp_tmp, 0)) {
10181 {
10182 USI opval = GET_H_SPR (((UINT) 272));
10183 sim_queue_pc_write (current_cpu, opval);
10184 written |= (1 << 6);
10185 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10186 }
10187 }
10188 }
10189 }
10190 }
10191 }
10192
10193 abuf->written = written;
10194 return vpc;
10195 #undef FLD
10196 }
10197
10198 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10199
10200 static SEM_PC
10201 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10202 {
10203 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10204 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10205 int UNUSED written = 0;
10206 IADDR UNUSED pc = abuf->addr;
10207 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10208
10209 {
10210 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10211 {
10212 SI tmp_tmp;
10213 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10214 {
10215 USI opval = tmp_tmp;
10216 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10217 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10218 }
10219 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10220 if (EQSI (FLD (f_ccond), 0)) {
10221 if (NESI (tmp_tmp, 0)) {
10222 {
10223 USI opval = GET_H_SPR (((UINT) 272));
10224 sim_queue_pc_write (current_cpu, opval);
10225 written |= (1 << 6);
10226 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10227 }
10228 }
10229 } else {
10230 if (EQSI (tmp_tmp, 0)) {
10231 {
10232 USI opval = GET_H_SPR (((UINT) 272));
10233 sim_queue_pc_write (current_cpu, opval);
10234 written |= (1 << 6);
10235 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10236 }
10237 }
10238 }
10239 }
10240 }
10241 }
10242
10243 abuf->written = written;
10244 return vpc;
10245 #undef FLD
10246 }
10247
10248 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10249
10250 static SEM_PC
10251 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10252 {
10253 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10255 int UNUSED written = 0;
10256 IADDR UNUSED pc = abuf->addr;
10257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10258
10259 {
10260 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10261 {
10262 SI tmp_tmp;
10263 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10264 {
10265 USI opval = tmp_tmp;
10266 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10267 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10268 }
10269 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10270 if (EQSI (FLD (f_ccond), 0)) {
10271 if (NESI (tmp_tmp, 0)) {
10272 {
10273 USI opval = GET_H_SPR (((UINT) 272));
10274 sim_queue_pc_write (current_cpu, opval);
10275 written |= (1 << 6);
10276 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10277 }
10278 }
10279 } else {
10280 if (EQSI (tmp_tmp, 0)) {
10281 {
10282 USI opval = GET_H_SPR (((UINT) 272));
10283 sim_queue_pc_write (current_cpu, opval);
10284 written |= (1 << 6);
10285 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10286 }
10287 }
10288 }
10289 }
10290 }
10291 }
10292
10293 abuf->written = written;
10294 return vpc;
10295 #undef FLD
10296 }
10297
10298 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10299
10300 static SEM_PC
10301 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10302 {
10303 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10305 int UNUSED written = 0;
10306 IADDR UNUSED pc = abuf->addr;
10307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10308
10309 {
10310 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10311 {
10312 SI tmp_tmp;
10313 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10314 {
10315 USI opval = tmp_tmp;
10316 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10317 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10318 }
10319 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10320 if (EQSI (FLD (f_ccond), 0)) {
10321 if (NESI (tmp_tmp, 0)) {
10322 {
10323 USI opval = GET_H_SPR (((UINT) 272));
10324 sim_queue_pc_write (current_cpu, opval);
10325 written |= (1 << 6);
10326 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10327 }
10328 }
10329 } else {
10330 if (EQSI (tmp_tmp, 0)) {
10331 {
10332 USI opval = GET_H_SPR (((UINT) 272));
10333 sim_queue_pc_write (current_cpu, opval);
10334 written |= (1 << 6);
10335 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10336 }
10337 }
10338 }
10339 }
10340 }
10341 }
10342
10343 abuf->written = written;
10344 return vpc;
10345 #undef FLD
10346 }
10347
10348 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10349
10350 static SEM_PC
10351 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10352 {
10353 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10355 int UNUSED written = 0;
10356 IADDR UNUSED pc = abuf->addr;
10357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10358
10359 {
10360 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10361 {
10362 SI tmp_tmp;
10363 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10364 {
10365 USI opval = tmp_tmp;
10366 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10367 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10368 }
10369 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10370 if (EQSI (FLD (f_ccond), 0)) {
10371 if (NESI (tmp_tmp, 0)) {
10372 {
10373 USI opval = GET_H_SPR (((UINT) 272));
10374 sim_queue_pc_write (current_cpu, opval);
10375 written |= (1 << 6);
10376 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10377 }
10378 }
10379 } else {
10380 if (EQSI (tmp_tmp, 0)) {
10381 {
10382 USI opval = GET_H_SPR (((UINT) 272));
10383 sim_queue_pc_write (current_cpu, opval);
10384 written |= (1 << 6);
10385 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10386 }
10387 }
10388 }
10389 }
10390 }
10391 }
10392
10393 abuf->written = written;
10394 return vpc;
10395 #undef FLD
10396 }
10397
10398 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10399
10400 static SEM_PC
10401 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10402 {
10403 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10405 int UNUSED written = 0;
10406 IADDR UNUSED pc = abuf->addr;
10407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10408
10409 {
10410 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10411 {
10412 SI tmp_tmp;
10413 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10414 {
10415 USI opval = tmp_tmp;
10416 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10417 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10418 }
10419 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10420 if (EQSI (FLD (f_ccond), 0)) {
10421 if (NESI (tmp_tmp, 0)) {
10422 {
10423 USI opval = GET_H_SPR (((UINT) 272));
10424 sim_queue_pc_write (current_cpu, opval);
10425 written |= (1 << 6);
10426 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10427 }
10428 }
10429 } else {
10430 if (EQSI (tmp_tmp, 0)) {
10431 {
10432 USI opval = GET_H_SPR (((UINT) 272));
10433 sim_queue_pc_write (current_cpu, opval);
10434 written |= (1 << 6);
10435 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10436 }
10437 }
10438 }
10439 }
10440 }
10441 }
10442
10443 abuf->written = written;
10444 return vpc;
10445 #undef FLD
10446 }
10447
10448 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10449
10450 static SEM_PC
10451 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10452 {
10453 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10455 int UNUSED written = 0;
10456 IADDR UNUSED pc = abuf->addr;
10457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10458
10459 {
10460 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10461 {
10462 SI tmp_tmp;
10463 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10464 {
10465 USI opval = tmp_tmp;
10466 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10467 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10468 }
10469 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10470 if (EQSI (FLD (f_ccond), 0)) {
10471 if (NESI (tmp_tmp, 0)) {
10472 {
10473 USI opval = GET_H_SPR (((UINT) 272));
10474 sim_queue_pc_write (current_cpu, opval);
10475 written |= (1 << 6);
10476 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10477 }
10478 }
10479 } else {
10480 if (EQSI (tmp_tmp, 0)) {
10481 {
10482 USI opval = GET_H_SPR (((UINT) 272));
10483 sim_queue_pc_write (current_cpu, opval);
10484 written |= (1 << 6);
10485 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10486 }
10487 }
10488 }
10489 }
10490 }
10491 }
10492
10493 abuf->written = written;
10494 return vpc;
10495 #undef FLD
10496 }
10497
10498 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10499
10500 static SEM_PC
10501 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10502 {
10503 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10505 int UNUSED written = 0;
10506 IADDR UNUSED pc = abuf->addr;
10507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10508
10509 {
10510 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10511 {
10512 SI tmp_tmp;
10513 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10514 {
10515 USI opval = tmp_tmp;
10516 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10517 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10518 }
10519 if (EQSI (FLD (f_ccond), 0)) {
10520 if (NESI (tmp_tmp, 0)) {
10521 {
10522 USI opval = GET_H_SPR (((UINT) 272));
10523 sim_queue_pc_write (current_cpu, opval);
10524 written |= (1 << 5);
10525 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10526 }
10527 }
10528 } else {
10529 if (EQSI (tmp_tmp, 0)) {
10530 {
10531 USI opval = GET_H_SPR (((UINT) 272));
10532 sim_queue_pc_write (current_cpu, opval);
10533 written |= (1 << 5);
10534 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10535 }
10536 }
10537 }
10538 }
10539 }
10540
10541 abuf->written = written;
10542 return vpc;
10543 #undef FLD
10544 }
10545
10546 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10547
10548 static SEM_PC
10549 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10550 {
10551 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10553 int UNUSED written = 0;
10554 IADDR UNUSED pc = abuf->addr;
10555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10556
10557 {
10558 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10559 {
10560 SI tmp_tmp;
10561 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10562 {
10563 USI opval = tmp_tmp;
10564 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10565 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10566 }
10567 ((void) 0); /*nop*/
10568 }
10569 }
10570
10571 return vpc;
10572 #undef FLD
10573 }
10574
10575 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10576
10577 static SEM_PC
10578 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10579 {
10580 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10582 int UNUSED written = 0;
10583 IADDR UNUSED pc = abuf->addr;
10584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10585
10586 {
10587 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10588 {
10589 SI tmp_tmp;
10590 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10591 {
10592 USI opval = tmp_tmp;
10593 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10594 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10595 }
10596 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10597 if (EQSI (FLD (f_ccond), 0)) {
10598 if (NESI (tmp_tmp, 0)) {
10599 {
10600 USI opval = GET_H_SPR (((UINT) 272));
10601 sim_queue_pc_write (current_cpu, opval);
10602 written |= (1 << 6);
10603 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10604 }
10605 }
10606 } else {
10607 if (EQSI (tmp_tmp, 0)) {
10608 {
10609 USI opval = GET_H_SPR (((UINT) 272));
10610 sim_queue_pc_write (current_cpu, opval);
10611 written |= (1 << 6);
10612 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10613 }
10614 }
10615 }
10616 }
10617 }
10618 }
10619
10620 abuf->written = written;
10621 return vpc;
10622 #undef FLD
10623 }
10624
10625 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10626
10627 static SEM_PC
10628 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10629 {
10630 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10631 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10632 int UNUSED written = 0;
10633 IADDR UNUSED pc = abuf->addr;
10634 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10635
10636 {
10637 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10638 {
10639 SI tmp_tmp;
10640 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10641 {
10642 USI opval = tmp_tmp;
10643 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10644 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10645 }
10646 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))))) {
10647 if (EQSI (FLD (f_ccond), 0)) {
10648 if (NESI (tmp_tmp, 0)) {
10649 {
10650 USI opval = GET_H_SPR (((UINT) 272));
10651 sim_queue_pc_write (current_cpu, opval);
10652 written |= (1 << 6);
10653 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10654 }
10655 }
10656 } else {
10657 if (EQSI (tmp_tmp, 0)) {
10658 {
10659 USI opval = GET_H_SPR (((UINT) 272));
10660 sim_queue_pc_write (current_cpu, opval);
10661 written |= (1 << 6);
10662 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10663 }
10664 }
10665 }
10666 }
10667 }
10668 }
10669
10670 abuf->written = written;
10671 return vpc;
10672 #undef FLD
10673 }
10674
10675 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10676
10677 static SEM_PC
10678 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10679 {
10680 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10682 int UNUSED written = 0;
10683 IADDR UNUSED pc = abuf->addr;
10684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10685
10686 {
10687 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10688 {
10689 SI tmp_tmp;
10690 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10691 {
10692 USI opval = tmp_tmp;
10693 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10694 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10695 }
10696 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)))) {
10697 if (EQSI (FLD (f_ccond), 0)) {
10698 if (NESI (tmp_tmp, 0)) {
10699 {
10700 USI opval = GET_H_SPR (((UINT) 272));
10701 sim_queue_pc_write (current_cpu, opval);
10702 written |= (1 << 6);
10703 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10704 }
10705 }
10706 } else {
10707 if (EQSI (tmp_tmp, 0)) {
10708 {
10709 USI opval = GET_H_SPR (((UINT) 272));
10710 sim_queue_pc_write (current_cpu, opval);
10711 written |= (1 << 6);
10712 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10713 }
10714 }
10715 }
10716 }
10717 }
10718 }
10719
10720 abuf->written = written;
10721 return vpc;
10722 #undef FLD
10723 }
10724
10725 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10726
10727 static SEM_PC
10728 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10729 {
10730 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10732 int UNUSED written = 0;
10733 IADDR UNUSED pc = abuf->addr;
10734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10735
10736 {
10737 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10738 {
10739 SI tmp_tmp;
10740 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10741 {
10742 USI opval = tmp_tmp;
10743 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10744 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10745 }
10746 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10747 if (EQSI (FLD (f_ccond), 0)) {
10748 if (NESI (tmp_tmp, 0)) {
10749 {
10750 USI opval = GET_H_SPR (((UINT) 272));
10751 sim_queue_pc_write (current_cpu, opval);
10752 written |= (1 << 6);
10753 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10754 }
10755 }
10756 } else {
10757 if (EQSI (tmp_tmp, 0)) {
10758 {
10759 USI opval = GET_H_SPR (((UINT) 272));
10760 sim_queue_pc_write (current_cpu, opval);
10761 written |= (1 << 6);
10762 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10763 }
10764 }
10765 }
10766 }
10767 }
10768 }
10769
10770 abuf->written = written;
10771 return vpc;
10772 #undef FLD
10773 }
10774
10775 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10776
10777 static SEM_PC
10778 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10779 {
10780 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10782 int UNUSED written = 0;
10783 IADDR UNUSED pc = abuf->addr;
10784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10785
10786 {
10787 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10788 {
10789 SI tmp_tmp;
10790 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10791 {
10792 USI opval = tmp_tmp;
10793 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10794 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10795 }
10796 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10797 if (EQSI (FLD (f_ccond), 0)) {
10798 if (NESI (tmp_tmp, 0)) {
10799 {
10800 USI opval = GET_H_SPR (((UINT) 272));
10801 sim_queue_pc_write (current_cpu, opval);
10802 written |= (1 << 6);
10803 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10804 }
10805 }
10806 } else {
10807 if (EQSI (tmp_tmp, 0)) {
10808 {
10809 USI opval = GET_H_SPR (((UINT) 272));
10810 sim_queue_pc_write (current_cpu, opval);
10811 written |= (1 << 6);
10812 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10813 }
10814 }
10815 }
10816 }
10817 }
10818 }
10819
10820 abuf->written = written;
10821 return vpc;
10822 #undef FLD
10823 }
10824
10825 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10826
10827 static SEM_PC
10828 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10829 {
10830 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10831 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10832 int UNUSED written = 0;
10833 IADDR UNUSED pc = abuf->addr;
10834 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10835
10836 {
10837 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10838 {
10839 SI tmp_tmp;
10840 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10841 {
10842 USI opval = tmp_tmp;
10843 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10844 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10845 }
10846 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)))) {
10847 if (EQSI (FLD (f_ccond), 0)) {
10848 if (NESI (tmp_tmp, 0)) {
10849 {
10850 USI opval = GET_H_SPR (((UINT) 272));
10851 sim_queue_pc_write (current_cpu, opval);
10852 written |= (1 << 6);
10853 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10854 }
10855 }
10856 } else {
10857 if (EQSI (tmp_tmp, 0)) {
10858 {
10859 USI opval = GET_H_SPR (((UINT) 272));
10860 sim_queue_pc_write (current_cpu, opval);
10861 written |= (1 << 6);
10862 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10863 }
10864 }
10865 }
10866 }
10867 }
10868 }
10869
10870 abuf->written = written;
10871 return vpc;
10872 #undef FLD
10873 }
10874
10875 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10876
10877 static SEM_PC
10878 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10879 {
10880 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10882 int UNUSED written = 0;
10883 IADDR UNUSED pc = abuf->addr;
10884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10885
10886 {
10887 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10888 {
10889 SI tmp_tmp;
10890 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10891 {
10892 USI opval = tmp_tmp;
10893 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10894 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10895 }
10896 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10897 if (EQSI (FLD (f_ccond), 0)) {
10898 if (NESI (tmp_tmp, 0)) {
10899 {
10900 USI opval = GET_H_SPR (((UINT) 272));
10901 sim_queue_pc_write (current_cpu, opval);
10902 written |= (1 << 6);
10903 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10904 }
10905 }
10906 } else {
10907 if (EQSI (tmp_tmp, 0)) {
10908 {
10909 USI opval = GET_H_SPR (((UINT) 272));
10910 sim_queue_pc_write (current_cpu, opval);
10911 written |= (1 << 6);
10912 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10913 }
10914 }
10915 }
10916 }
10917 }
10918 }
10919
10920 abuf->written = written;
10921 return vpc;
10922 #undef FLD
10923 }
10924
10925 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10926
10927 static SEM_PC
10928 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10929 {
10930 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10932 int UNUSED written = 0;
10933 IADDR UNUSED pc = abuf->addr;
10934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10935
10936 {
10937 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10938 {
10939 SI tmp_tmp;
10940 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10941 {
10942 USI opval = tmp_tmp;
10943 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10944 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10945 }
10946 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))))) {
10947 if (EQSI (FLD (f_ccond), 0)) {
10948 if (NESI (tmp_tmp, 0)) {
10949 {
10950 USI opval = GET_H_SPR (((UINT) 272));
10951 sim_queue_pc_write (current_cpu, opval);
10952 written |= (1 << 6);
10953 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10954 }
10955 }
10956 } else {
10957 if (EQSI (tmp_tmp, 0)) {
10958 {
10959 USI opval = GET_H_SPR (((UINT) 272));
10960 sim_queue_pc_write (current_cpu, opval);
10961 written |= (1 << 6);
10962 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10963 }
10964 }
10965 }
10966 }
10967 }
10968 }
10969
10970 abuf->written = written;
10971 return vpc;
10972 #undef FLD
10973 }
10974
10975 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10976
10977 static SEM_PC
10978 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10979 {
10980 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10982 int UNUSED written = 0;
10983 IADDR UNUSED pc = abuf->addr;
10984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10985
10986 {
10987 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10988 {
10989 SI tmp_tmp;
10990 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10991 {
10992 USI opval = tmp_tmp;
10993 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10994 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10995 }
10996 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10997 if (EQSI (FLD (f_ccond), 0)) {
10998 if (NESI (tmp_tmp, 0)) {
10999 {
11000 USI opval = GET_H_SPR (((UINT) 272));
11001 sim_queue_pc_write (current_cpu, opval);
11002 written |= (1 << 6);
11003 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11004 }
11005 }
11006 } else {
11007 if (EQSI (tmp_tmp, 0)) {
11008 {
11009 USI opval = GET_H_SPR (((UINT) 272));
11010 sim_queue_pc_write (current_cpu, opval);
11011 written |= (1 << 6);
11012 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11013 }
11014 }
11015 }
11016 }
11017 }
11018 }
11019
11020 abuf->written = written;
11021 return vpc;
11022 #undef FLD
11023 }
11024
11025 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11026
11027 static SEM_PC
11028 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11029 {
11030 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11032 int UNUSED written = 0;
11033 IADDR UNUSED pc = abuf->addr;
11034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11035
11036 {
11037 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11038 {
11039 SI tmp_tmp;
11040 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11041 {
11042 USI opval = tmp_tmp;
11043 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11044 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11045 }
11046 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)))) {
11047 if (EQSI (FLD (f_ccond), 0)) {
11048 if (NESI (tmp_tmp, 0)) {
11049 {
11050 USI opval = GET_H_SPR (((UINT) 272));
11051 sim_queue_pc_write (current_cpu, opval);
11052 written |= (1 << 6);
11053 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11054 }
11055 }
11056 } else {
11057 if (EQSI (tmp_tmp, 0)) {
11058 {
11059 USI opval = GET_H_SPR (((UINT) 272));
11060 sim_queue_pc_write (current_cpu, opval);
11061 written |= (1 << 6);
11062 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11063 }
11064 }
11065 }
11066 }
11067 }
11068 }
11069
11070 abuf->written = written;
11071 return vpc;
11072 #undef FLD
11073 }
11074
11075 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11076
11077 static SEM_PC
11078 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11079 {
11080 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11082 int UNUSED written = 0;
11083 IADDR UNUSED pc = abuf->addr;
11084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11085
11086 {
11087 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11088 {
11089 SI tmp_tmp;
11090 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11091 {
11092 USI opval = tmp_tmp;
11093 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11094 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11095 }
11096 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11097 if (EQSI (FLD (f_ccond), 0)) {
11098 if (NESI (tmp_tmp, 0)) {
11099 {
11100 USI opval = GET_H_SPR (((UINT) 272));
11101 sim_queue_pc_write (current_cpu, opval);
11102 written |= (1 << 6);
11103 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11104 }
11105 }
11106 } else {
11107 if (EQSI (tmp_tmp, 0)) {
11108 {
11109 USI opval = GET_H_SPR (((UINT) 272));
11110 sim_queue_pc_write (current_cpu, opval);
11111 written |= (1 << 6);
11112 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11113 }
11114 }
11115 }
11116 }
11117 }
11118 }
11119
11120 abuf->written = written;
11121 return vpc;
11122 #undef FLD
11123 }
11124
11125 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11126
11127 static SEM_PC
11128 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11129 {
11130 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11132 int UNUSED written = 0;
11133 IADDR UNUSED pc = abuf->addr;
11134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11135
11136 {
11137 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11138 {
11139 SI tmp_tmp;
11140 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11141 {
11142 USI opval = tmp_tmp;
11143 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11144 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11145 }
11146 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))))) {
11147 if (EQSI (FLD (f_ccond), 0)) {
11148 if (NESI (tmp_tmp, 0)) {
11149 {
11150 USI opval = GET_H_SPR (((UINT) 272));
11151 sim_queue_pc_write (current_cpu, opval);
11152 written |= (1 << 6);
11153 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11154 }
11155 }
11156 } else {
11157 if (EQSI (tmp_tmp, 0)) {
11158 {
11159 USI opval = GET_H_SPR (((UINT) 272));
11160 sim_queue_pc_write (current_cpu, opval);
11161 written |= (1 << 6);
11162 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11163 }
11164 }
11165 }
11166 }
11167 }
11168 }
11169
11170 abuf->written = written;
11171 return vpc;
11172 #undef FLD
11173 }
11174
11175 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11176
11177 static SEM_PC
11178 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11179 {
11180 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11182 int UNUSED written = 0;
11183 IADDR UNUSED pc = abuf->addr;
11184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11185
11186 {
11187 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11188 {
11189 SI tmp_tmp;
11190 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11191 {
11192 USI opval = tmp_tmp;
11193 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11194 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11195 }
11196 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11197 if (EQSI (FLD (f_ccond), 0)) {
11198 if (NESI (tmp_tmp, 0)) {
11199 {
11200 USI opval = GET_H_SPR (((UINT) 272));
11201 sim_queue_pc_write (current_cpu, opval);
11202 written |= (1 << 6);
11203 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11204 }
11205 }
11206 } else {
11207 if (EQSI (tmp_tmp, 0)) {
11208 {
11209 USI opval = GET_H_SPR (((UINT) 272));
11210 sim_queue_pc_write (current_cpu, opval);
11211 written |= (1 << 6);
11212 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11213 }
11214 }
11215 }
11216 }
11217 }
11218 }
11219
11220 abuf->written = written;
11221 return vpc;
11222 #undef FLD
11223 }
11224
11225 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11226
11227 static SEM_PC
11228 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11229 {
11230 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11232 int UNUSED written = 0;
11233 IADDR UNUSED pc = abuf->addr;
11234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11235
11236 {
11237 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11238 {
11239 SI tmp_tmp;
11240 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11241 {
11242 USI opval = tmp_tmp;
11243 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11244 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11245 }
11246 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))))) {
11247 if (EQSI (FLD (f_ccond), 0)) {
11248 if (NESI (tmp_tmp, 0)) {
11249 {
11250 USI opval = GET_H_SPR (((UINT) 272));
11251 sim_queue_pc_write (current_cpu, opval);
11252 written |= (1 << 6);
11253 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11254 }
11255 }
11256 } else {
11257 if (EQSI (tmp_tmp, 0)) {
11258 {
11259 USI opval = GET_H_SPR (((UINT) 272));
11260 sim_queue_pc_write (current_cpu, opval);
11261 written |= (1 << 6);
11262 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11263 }
11264 }
11265 }
11266 }
11267 }
11268 }
11269
11270 abuf->written = written;
11271 return vpc;
11272 #undef FLD
11273 }
11274
11275 /* jmpl: jmpl$pack @($GRi,$GRj) */
11276
11277 static SEM_PC
11278 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11279 {
11280 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11281 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11282 int UNUSED written = 0;
11283 IADDR UNUSED pc = abuf->addr;
11284 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11285
11286 {
11287 if (EQSI (FLD (f_LI), 1)) {
11288 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11289 }
11290 {
11291 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11292 sim_queue_pc_write (current_cpu, opval);
11293 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11294 }
11295 frvbf_model_branch (current_cpu, pc, 2);
11296 }
11297
11298 return vpc;
11299 #undef FLD
11300 }
11301
11302 /* calll: calll$pack $callann($GRi,$GRj) */
11303
11304 static SEM_PC
11305 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11306 {
11307 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11309 int UNUSED written = 0;
11310 IADDR UNUSED pc = abuf->addr;
11311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11312
11313 {
11314 if (EQSI (FLD (f_LI), 1)) {
11315 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11316 }
11317 {
11318 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11319 sim_queue_pc_write (current_cpu, opval);
11320 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11321 }
11322 frvbf_model_branch (current_cpu, pc, 2);
11323 }
11324
11325 return vpc;
11326 #undef FLD
11327 }
11328
11329 /* jmpil: jmpil$pack @($GRi,$s12) */
11330
11331 static SEM_PC
11332 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11333 {
11334 #define FLD(f) abuf->fields.sfmt_jmpil.f
11335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11336 int UNUSED written = 0;
11337 IADDR UNUSED pc = abuf->addr;
11338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11339
11340 {
11341 if (EQSI (FLD (f_LI), 1)) {
11342 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11343 }
11344 {
11345 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11346 sim_queue_pc_write (current_cpu, opval);
11347 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11348 }
11349 frvbf_model_branch (current_cpu, pc, 2);
11350 }
11351
11352 return vpc;
11353 #undef FLD
11354 }
11355
11356 /* callil: callil$pack @($GRi,$s12) */
11357
11358 static SEM_PC
11359 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11360 {
11361 #define FLD(f) abuf->fields.sfmt_jmpil.f
11362 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11363 int UNUSED written = 0;
11364 IADDR UNUSED pc = abuf->addr;
11365 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11366
11367 {
11368 if (EQSI (FLD (f_LI), 1)) {
11369 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11370 }
11371 {
11372 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11373 sim_queue_pc_write (current_cpu, opval);
11374 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11375 }
11376 frvbf_model_branch (current_cpu, pc, 2);
11377 }
11378
11379 return vpc;
11380 #undef FLD
11381 }
11382
11383 /* call: call$pack $label24 */
11384
11385 static SEM_PC
11386 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11387 {
11388 #define FLD(f) abuf->fields.sfmt_call.f
11389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11390 int UNUSED written = 0;
11391 IADDR UNUSED pc = abuf->addr;
11392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11393
11394 {
11395 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11396 {
11397 USI opval = FLD (i_label24);
11398 sim_queue_pc_write (current_cpu, opval);
11399 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11400 }
11401 frvbf_model_branch (current_cpu, pc, 2);
11402 }
11403
11404 return vpc;
11405 #undef FLD
11406 }
11407
11408 /* rett: rett$pack $debug */
11409
11410 static SEM_PC
11411 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11412 {
11413 #define FLD(f) abuf->fields.sfmt_rett.f
11414 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11415 int UNUSED written = 0;
11416 IADDR UNUSED pc = abuf->addr;
11417 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11418
11419 {
11420 {
11421 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11422 sim_queue_pc_write (current_cpu, opval);
11423 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11424 }
11425 frvbf_model_branch (current_cpu, pc, 2);
11426 }
11427
11428 return vpc;
11429 #undef FLD
11430 }
11431
11432 /* rei: rei$pack $eir */
11433
11434 static SEM_PC
11435 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11436 {
11437 #define FLD(f) abuf->fields.sfmt_empty.f
11438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11439 int UNUSED written = 0;
11440 IADDR UNUSED pc = abuf->addr;
11441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11442
11443 ((void) 0); /*nop*/
11444
11445 return vpc;
11446 #undef FLD
11447 }
11448
11449 /* tra: tra$pack $GRi,$GRj */
11450
11451 static SEM_PC
11452 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11453 {
11454 #define FLD(f) abuf->fields.sfmt_ftne.f
11455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11456 int UNUSED written = 0;
11457 IADDR UNUSED pc = abuf->addr;
11458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11459
11460 {
11461 ; /*clobber*/
11462 ; /*clobber*/
11463 ; /*clobber*/
11464 ; /*clobber*/
11465 if (NEBI (CPU (h_psr_esr), 0)) {
11466 {
11467 ; /*clobber*/
11468 ; /*clobber*/
11469 ; /*clobber*/
11470 ; /*clobber*/
11471 }
11472 }
11473 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11474 }
11475
11476 abuf->written = written;
11477 return vpc;
11478 #undef FLD
11479 }
11480
11481 /* tno: tno$pack */
11482
11483 static SEM_PC
11484 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11485 {
11486 #define FLD(f) abuf->fields.sfmt_empty.f
11487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11488 int UNUSED written = 0;
11489 IADDR UNUSED pc = abuf->addr;
11490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11491
11492 ((void) 0); /*nop*/
11493
11494 return vpc;
11495 #undef FLD
11496 }
11497
11498 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11499
11500 static SEM_PC
11501 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11502 {
11503 #define FLD(f) abuf->fields.sfmt_teq.f
11504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11505 int UNUSED written = 0;
11506 IADDR UNUSED pc = abuf->addr;
11507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11508
11509 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11510 {
11511 ; /*clobber*/
11512 ; /*clobber*/
11513 ; /*clobber*/
11514 ; /*clobber*/
11515 if (NEBI (CPU (h_psr_esr), 0)) {
11516 {
11517 ; /*clobber*/
11518 ; /*clobber*/
11519 ; /*clobber*/
11520 ; /*clobber*/
11521 }
11522 }
11523 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11524 }
11525 }
11526
11527 abuf->written = written;
11528 return vpc;
11529 #undef FLD
11530 }
11531
11532 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11533
11534 static SEM_PC
11535 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11536 {
11537 #define FLD(f) abuf->fields.sfmt_teq.f
11538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11539 int UNUSED written = 0;
11540 IADDR UNUSED pc = abuf->addr;
11541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11542
11543 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11544 {
11545 ; /*clobber*/
11546 ; /*clobber*/
11547 ; /*clobber*/
11548 ; /*clobber*/
11549 if (NEBI (CPU (h_psr_esr), 0)) {
11550 {
11551 ; /*clobber*/
11552 ; /*clobber*/
11553 ; /*clobber*/
11554 ; /*clobber*/
11555 }
11556 }
11557 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11558 }
11559 }
11560
11561 abuf->written = written;
11562 return vpc;
11563 #undef FLD
11564 }
11565
11566 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11567
11568 static SEM_PC
11569 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11570 {
11571 #define FLD(f) abuf->fields.sfmt_teq.f
11572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11573 int UNUSED written = 0;
11574 IADDR UNUSED pc = abuf->addr;
11575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11576
11577 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))))) {
11578 {
11579 ; /*clobber*/
11580 ; /*clobber*/
11581 ; /*clobber*/
11582 ; /*clobber*/
11583 if (NEBI (CPU (h_psr_esr), 0)) {
11584 {
11585 ; /*clobber*/
11586 ; /*clobber*/
11587 ; /*clobber*/
11588 ; /*clobber*/
11589 }
11590 }
11591 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11592 }
11593 }
11594
11595 abuf->written = written;
11596 return vpc;
11597 #undef FLD
11598 }
11599
11600 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11601
11602 static SEM_PC
11603 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11604 {
11605 #define FLD(f) abuf->fields.sfmt_teq.f
11606 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11607 int UNUSED written = 0;
11608 IADDR UNUSED pc = abuf->addr;
11609 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11610
11611 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)))))) {
11612 {
11613 ; /*clobber*/
11614 ; /*clobber*/
11615 ; /*clobber*/
11616 ; /*clobber*/
11617 if (NEBI (CPU (h_psr_esr), 0)) {
11618 {
11619 ; /*clobber*/
11620 ; /*clobber*/
11621 ; /*clobber*/
11622 ; /*clobber*/
11623 }
11624 }
11625 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11626 }
11627 }
11628
11629 abuf->written = written;
11630 return vpc;
11631 #undef FLD
11632 }
11633
11634 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11635
11636 static SEM_PC
11637 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11638 {
11639 #define FLD(f) abuf->fields.sfmt_teq.f
11640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11641 int UNUSED written = 0;
11642 IADDR UNUSED pc = abuf->addr;
11643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11644
11645 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)))) {
11646 {
11647 ; /*clobber*/
11648 ; /*clobber*/
11649 ; /*clobber*/
11650 ; /*clobber*/
11651 if (NEBI (CPU (h_psr_esr), 0)) {
11652 {
11653 ; /*clobber*/
11654 ; /*clobber*/
11655 ; /*clobber*/
11656 ; /*clobber*/
11657 }
11658 }
11659 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11660 }
11661 }
11662
11663 abuf->written = written;
11664 return vpc;
11665 #undef FLD
11666 }
11667
11668 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11669
11670 static SEM_PC
11671 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11672 {
11673 #define FLD(f) abuf->fields.sfmt_teq.f
11674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11675 int UNUSED written = 0;
11676 IADDR UNUSED pc = abuf->addr;
11677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11678
11679 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))))) {
11680 {
11681 ; /*clobber*/
11682 ; /*clobber*/
11683 ; /*clobber*/
11684 ; /*clobber*/
11685 if (NEBI (CPU (h_psr_esr), 0)) {
11686 {
11687 ; /*clobber*/
11688 ; /*clobber*/
11689 ; /*clobber*/
11690 ; /*clobber*/
11691 }
11692 }
11693 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11694 }
11695 }
11696
11697 abuf->written = written;
11698 return vpc;
11699 #undef FLD
11700 }
11701
11702 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11703
11704 static SEM_PC
11705 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11706 {
11707 #define FLD(f) abuf->fields.sfmt_teq.f
11708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11709 int UNUSED written = 0;
11710 IADDR UNUSED pc = abuf->addr;
11711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11712
11713 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11714 {
11715 ; /*clobber*/
11716 ; /*clobber*/
11717 ; /*clobber*/
11718 ; /*clobber*/
11719 if (NEBI (CPU (h_psr_esr), 0)) {
11720 {
11721 ; /*clobber*/
11722 ; /*clobber*/
11723 ; /*clobber*/
11724 ; /*clobber*/
11725 }
11726 }
11727 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11728 }
11729 }
11730
11731 abuf->written = written;
11732 return vpc;
11733 #undef FLD
11734 }
11735
11736 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11737
11738 static SEM_PC
11739 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11740 {
11741 #define FLD(f) abuf->fields.sfmt_teq.f
11742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11743 int UNUSED written = 0;
11744 IADDR UNUSED pc = abuf->addr;
11745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11746
11747 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))))) {
11748 {
11749 ; /*clobber*/
11750 ; /*clobber*/
11751 ; /*clobber*/
11752 ; /*clobber*/
11753 if (NEBI (CPU (h_psr_esr), 0)) {
11754 {
11755 ; /*clobber*/
11756 ; /*clobber*/
11757 ; /*clobber*/
11758 ; /*clobber*/
11759 }
11760 }
11761 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11762 }
11763 }
11764
11765 abuf->written = written;
11766 return vpc;
11767 #undef FLD
11768 }
11769
11770 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
11771
11772 static SEM_PC
11773 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11774 {
11775 #define FLD(f) abuf->fields.sfmt_teq.f
11776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11777 int UNUSED written = 0;
11778 IADDR UNUSED pc = abuf->addr;
11779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11780
11781 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11782 {
11783 ; /*clobber*/
11784 ; /*clobber*/
11785 ; /*clobber*/
11786 ; /*clobber*/
11787 if (NEBI (CPU (h_psr_esr), 0)) {
11788 {
11789 ; /*clobber*/
11790 ; /*clobber*/
11791 ; /*clobber*/
11792 ; /*clobber*/
11793 }
11794 }
11795 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11796 }
11797 }
11798
11799 abuf->written = written;
11800 return vpc;
11801 #undef FLD
11802 }
11803
11804 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11805
11806 static SEM_PC
11807 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11808 {
11809 #define FLD(f) abuf->fields.sfmt_teq.f
11810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11811 int UNUSED written = 0;
11812 IADDR UNUSED pc = abuf->addr;
11813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11814
11815 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11816 {
11817 ; /*clobber*/
11818 ; /*clobber*/
11819 ; /*clobber*/
11820 ; /*clobber*/
11821 if (NEBI (CPU (h_psr_esr), 0)) {
11822 {
11823 ; /*clobber*/
11824 ; /*clobber*/
11825 ; /*clobber*/
11826 ; /*clobber*/
11827 }
11828 }
11829 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11830 }
11831 }
11832
11833 abuf->written = written;
11834 return vpc;
11835 #undef FLD
11836 }
11837
11838 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
11839
11840 static SEM_PC
11841 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11842 {
11843 #define FLD(f) abuf->fields.sfmt_teq.f
11844 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11845 int UNUSED written = 0;
11846 IADDR UNUSED pc = abuf->addr;
11847 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11848
11849 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11850 {
11851 ; /*clobber*/
11852 ; /*clobber*/
11853 ; /*clobber*/
11854 ; /*clobber*/
11855 if (NEBI (CPU (h_psr_esr), 0)) {
11856 {
11857 ; /*clobber*/
11858 ; /*clobber*/
11859 ; /*clobber*/
11860 ; /*clobber*/
11861 }
11862 }
11863 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11864 }
11865 }
11866
11867 abuf->written = written;
11868 return vpc;
11869 #undef FLD
11870 }
11871
11872 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
11873
11874 static SEM_PC
11875 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11876 {
11877 #define FLD(f) abuf->fields.sfmt_teq.f
11878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11879 int UNUSED written = 0;
11880 IADDR UNUSED pc = abuf->addr;
11881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11882
11883 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11884 {
11885 ; /*clobber*/
11886 ; /*clobber*/
11887 ; /*clobber*/
11888 ; /*clobber*/
11889 if (NEBI (CPU (h_psr_esr), 0)) {
11890 {
11891 ; /*clobber*/
11892 ; /*clobber*/
11893 ; /*clobber*/
11894 ; /*clobber*/
11895 }
11896 }
11897 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11898 }
11899 }
11900
11901 abuf->written = written;
11902 return vpc;
11903 #undef FLD
11904 }
11905
11906 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
11907
11908 static SEM_PC
11909 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11910 {
11911 #define FLD(f) abuf->fields.sfmt_teq.f
11912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11913 int UNUSED written = 0;
11914 IADDR UNUSED pc = abuf->addr;
11915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11916
11917 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11918 {
11919 ; /*clobber*/
11920 ; /*clobber*/
11921 ; /*clobber*/
11922 ; /*clobber*/
11923 if (NEBI (CPU (h_psr_esr), 0)) {
11924 {
11925 ; /*clobber*/
11926 ; /*clobber*/
11927 ; /*clobber*/
11928 ; /*clobber*/
11929 }
11930 }
11931 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11932 }
11933 }
11934
11935 abuf->written = written;
11936 return vpc;
11937 #undef FLD
11938 }
11939
11940 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11941
11942 static SEM_PC
11943 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11944 {
11945 #define FLD(f) abuf->fields.sfmt_teq.f
11946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11947 int UNUSED written = 0;
11948 IADDR UNUSED pc = abuf->addr;
11949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11950
11951 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11952 {
11953 ; /*clobber*/
11954 ; /*clobber*/
11955 ; /*clobber*/
11956 ; /*clobber*/
11957 if (NEBI (CPU (h_psr_esr), 0)) {
11958 {
11959 ; /*clobber*/
11960 ; /*clobber*/
11961 ; /*clobber*/
11962 ; /*clobber*/
11963 }
11964 }
11965 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11966 }
11967 }
11968
11969 abuf->written = written;
11970 return vpc;
11971 #undef FLD
11972 }
11973
11974 /* ftra: ftra$pack $GRi,$GRj */
11975
11976 static SEM_PC
11977 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11978 {
11979 #define FLD(f) abuf->fields.sfmt_ftne.f
11980 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11981 int UNUSED written = 0;
11982 IADDR UNUSED pc = abuf->addr;
11983 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11984
11985 {
11986 ; /*clobber*/
11987 ; /*clobber*/
11988 ; /*clobber*/
11989 ; /*clobber*/
11990 if (NEBI (CPU (h_psr_esr), 0)) {
11991 {
11992 ; /*clobber*/
11993 ; /*clobber*/
11994 ; /*clobber*/
11995 ; /*clobber*/
11996 }
11997 }
11998 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11999 }
12000
12001 abuf->written = written;
12002 return vpc;
12003 #undef FLD
12004 }
12005
12006 /* ftno: ftno$pack */
12007
12008 static SEM_PC
12009 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12010 {
12011 #define FLD(f) abuf->fields.sfmt_empty.f
12012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12013 int UNUSED written = 0;
12014 IADDR UNUSED pc = abuf->addr;
12015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12016
12017 ((void) 0); /*nop*/
12018
12019 return vpc;
12020 #undef FLD
12021 }
12022
12023 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12024
12025 static SEM_PC
12026 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12027 {
12028 #define FLD(f) abuf->fields.sfmt_ftne.f
12029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12030 int UNUSED written = 0;
12031 IADDR UNUSED pc = abuf->addr;
12032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12033
12034 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))))) {
12035 {
12036 ; /*clobber*/
12037 ; /*clobber*/
12038 ; /*clobber*/
12039 ; /*clobber*/
12040 if (NEBI (CPU (h_psr_esr), 0)) {
12041 {
12042 ; /*clobber*/
12043 ; /*clobber*/
12044 ; /*clobber*/
12045 ; /*clobber*/
12046 }
12047 }
12048 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12049 }
12050 }
12051
12052 abuf->written = written;
12053 return vpc;
12054 #undef FLD
12055 }
12056
12057 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12058
12059 static SEM_PC
12060 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12061 {
12062 #define FLD(f) abuf->fields.sfmt_ftne.f
12063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12064 int UNUSED written = 0;
12065 IADDR UNUSED pc = abuf->addr;
12066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12067
12068 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12069 {
12070 ; /*clobber*/
12071 ; /*clobber*/
12072 ; /*clobber*/
12073 ; /*clobber*/
12074 if (NEBI (CPU (h_psr_esr), 0)) {
12075 {
12076 ; /*clobber*/
12077 ; /*clobber*/
12078 ; /*clobber*/
12079 ; /*clobber*/
12080 }
12081 }
12082 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12083 }
12084 }
12085
12086 abuf->written = written;
12087 return vpc;
12088 #undef FLD
12089 }
12090
12091 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12092
12093 static SEM_PC
12094 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12095 {
12096 #define FLD(f) abuf->fields.sfmt_ftne.f
12097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12098 int UNUSED written = 0;
12099 IADDR UNUSED pc = abuf->addr;
12100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12101
12102 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)))) {
12103 {
12104 ; /*clobber*/
12105 ; /*clobber*/
12106 ; /*clobber*/
12107 ; /*clobber*/
12108 if (NEBI (CPU (h_psr_esr), 0)) {
12109 {
12110 ; /*clobber*/
12111 ; /*clobber*/
12112 ; /*clobber*/
12113 ; /*clobber*/
12114 }
12115 }
12116 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12117 }
12118 }
12119
12120 abuf->written = written;
12121 return vpc;
12122 #undef FLD
12123 }
12124
12125 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12126
12127 static SEM_PC
12128 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12129 {
12130 #define FLD(f) abuf->fields.sfmt_ftne.f
12131 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12132 int UNUSED written = 0;
12133 IADDR UNUSED pc = abuf->addr;
12134 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12135
12136 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12137 {
12138 ; /*clobber*/
12139 ; /*clobber*/
12140 ; /*clobber*/
12141 ; /*clobber*/
12142 if (NEBI (CPU (h_psr_esr), 0)) {
12143 {
12144 ; /*clobber*/
12145 ; /*clobber*/
12146 ; /*clobber*/
12147 ; /*clobber*/
12148 }
12149 }
12150 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12151 }
12152 }
12153
12154 abuf->written = written;
12155 return vpc;
12156 #undef FLD
12157 }
12158
12159 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12160
12161 static SEM_PC
12162 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12163 {
12164 #define FLD(f) abuf->fields.sfmt_ftne.f
12165 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12166 int UNUSED written = 0;
12167 IADDR UNUSED pc = abuf->addr;
12168 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12169
12170 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12171 {
12172 ; /*clobber*/
12173 ; /*clobber*/
12174 ; /*clobber*/
12175 ; /*clobber*/
12176 if (NEBI (CPU (h_psr_esr), 0)) {
12177 {
12178 ; /*clobber*/
12179 ; /*clobber*/
12180 ; /*clobber*/
12181 ; /*clobber*/
12182 }
12183 }
12184 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12185 }
12186 }
12187
12188 abuf->written = written;
12189 return vpc;
12190 #undef FLD
12191 }
12192
12193 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12194
12195 static SEM_PC
12196 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12197 {
12198 #define FLD(f) abuf->fields.sfmt_ftne.f
12199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12200 int UNUSED written = 0;
12201 IADDR UNUSED pc = abuf->addr;
12202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12203
12204 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)))) {
12205 {
12206 ; /*clobber*/
12207 ; /*clobber*/
12208 ; /*clobber*/
12209 ; /*clobber*/
12210 if (NEBI (CPU (h_psr_esr), 0)) {
12211 {
12212 ; /*clobber*/
12213 ; /*clobber*/
12214 ; /*clobber*/
12215 ; /*clobber*/
12216 }
12217 }
12218 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12219 }
12220 }
12221
12222 abuf->written = written;
12223 return vpc;
12224 #undef FLD
12225 }
12226
12227 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12228
12229 static SEM_PC
12230 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12231 {
12232 #define FLD(f) abuf->fields.sfmt_ftne.f
12233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12234 int UNUSED written = 0;
12235 IADDR UNUSED pc = abuf->addr;
12236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12237
12238 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12239 {
12240 ; /*clobber*/
12241 ; /*clobber*/
12242 ; /*clobber*/
12243 ; /*clobber*/
12244 if (NEBI (CPU (h_psr_esr), 0)) {
12245 {
12246 ; /*clobber*/
12247 ; /*clobber*/
12248 ; /*clobber*/
12249 ; /*clobber*/
12250 }
12251 }
12252 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12253 }
12254 }
12255
12256 abuf->written = written;
12257 return vpc;
12258 #undef FLD
12259 }
12260
12261 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12262
12263 static SEM_PC
12264 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12265 {
12266 #define FLD(f) abuf->fields.sfmt_ftne.f
12267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12268 int UNUSED written = 0;
12269 IADDR UNUSED pc = abuf->addr;
12270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12271
12272 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))))) {
12273 {
12274 ; /*clobber*/
12275 ; /*clobber*/
12276 ; /*clobber*/
12277 ; /*clobber*/
12278 if (NEBI (CPU (h_psr_esr), 0)) {
12279 {
12280 ; /*clobber*/
12281 ; /*clobber*/
12282 ; /*clobber*/
12283 ; /*clobber*/
12284 }
12285 }
12286 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12287 }
12288 }
12289
12290 abuf->written = written;
12291 return vpc;
12292 #undef FLD
12293 }
12294
12295 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12296
12297 static SEM_PC
12298 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12299 {
12300 #define FLD(f) abuf->fields.sfmt_ftne.f
12301 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12302 int UNUSED written = 0;
12303 IADDR UNUSED pc = abuf->addr;
12304 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12305
12306 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12307 {
12308 ; /*clobber*/
12309 ; /*clobber*/
12310 ; /*clobber*/
12311 ; /*clobber*/
12312 if (NEBI (CPU (h_psr_esr), 0)) {
12313 {
12314 ; /*clobber*/
12315 ; /*clobber*/
12316 ; /*clobber*/
12317 ; /*clobber*/
12318 }
12319 }
12320 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12321 }
12322 }
12323
12324 abuf->written = written;
12325 return vpc;
12326 #undef FLD
12327 }
12328
12329 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12330
12331 static SEM_PC
12332 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12333 {
12334 #define FLD(f) abuf->fields.sfmt_ftne.f
12335 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12336 int UNUSED written = 0;
12337 IADDR UNUSED pc = abuf->addr;
12338 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12339
12340 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)))) {
12341 {
12342 ; /*clobber*/
12343 ; /*clobber*/
12344 ; /*clobber*/
12345 ; /*clobber*/
12346 if (NEBI (CPU (h_psr_esr), 0)) {
12347 {
12348 ; /*clobber*/
12349 ; /*clobber*/
12350 ; /*clobber*/
12351 ; /*clobber*/
12352 }
12353 }
12354 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12355 }
12356 }
12357
12358 abuf->written = written;
12359 return vpc;
12360 #undef FLD
12361 }
12362
12363 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12364
12365 static SEM_PC
12366 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12367 {
12368 #define FLD(f) abuf->fields.sfmt_ftne.f
12369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12370 int UNUSED written = 0;
12371 IADDR UNUSED pc = abuf->addr;
12372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12373
12374 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12375 {
12376 ; /*clobber*/
12377 ; /*clobber*/
12378 ; /*clobber*/
12379 ; /*clobber*/
12380 if (NEBI (CPU (h_psr_esr), 0)) {
12381 {
12382 ; /*clobber*/
12383 ; /*clobber*/
12384 ; /*clobber*/
12385 ; /*clobber*/
12386 }
12387 }
12388 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12389 }
12390 }
12391
12392 abuf->written = written;
12393 return vpc;
12394 #undef FLD
12395 }
12396
12397 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12398
12399 static SEM_PC
12400 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12401 {
12402 #define FLD(f) abuf->fields.sfmt_ftne.f
12403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12404 int UNUSED written = 0;
12405 IADDR UNUSED pc = abuf->addr;
12406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12407
12408 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))))) {
12409 {
12410 ; /*clobber*/
12411 ; /*clobber*/
12412 ; /*clobber*/
12413 ; /*clobber*/
12414 if (NEBI (CPU (h_psr_esr), 0)) {
12415 {
12416 ; /*clobber*/
12417 ; /*clobber*/
12418 ; /*clobber*/
12419 ; /*clobber*/
12420 }
12421 }
12422 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12423 }
12424 }
12425
12426 abuf->written = written;
12427 return vpc;
12428 #undef FLD
12429 }
12430
12431 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12432
12433 static SEM_PC
12434 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12435 {
12436 #define FLD(f) abuf->fields.sfmt_ftne.f
12437 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12438 int UNUSED written = 0;
12439 IADDR UNUSED pc = abuf->addr;
12440 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12441
12442 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12443 {
12444 ; /*clobber*/
12445 ; /*clobber*/
12446 ; /*clobber*/
12447 ; /*clobber*/
12448 if (NEBI (CPU (h_psr_esr), 0)) {
12449 {
12450 ; /*clobber*/
12451 ; /*clobber*/
12452 ; /*clobber*/
12453 ; /*clobber*/
12454 }
12455 }
12456 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12457 }
12458 }
12459
12460 abuf->written = written;
12461 return vpc;
12462 #undef FLD
12463 }
12464
12465 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12466
12467 static SEM_PC
12468 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12469 {
12470 #define FLD(f) abuf->fields.sfmt_ftne.f
12471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12472 int UNUSED written = 0;
12473 IADDR UNUSED pc = abuf->addr;
12474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12475
12476 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))))) {
12477 {
12478 ; /*clobber*/
12479 ; /*clobber*/
12480 ; /*clobber*/
12481 ; /*clobber*/
12482 if (NEBI (CPU (h_psr_esr), 0)) {
12483 {
12484 ; /*clobber*/
12485 ; /*clobber*/
12486 ; /*clobber*/
12487 ; /*clobber*/
12488 }
12489 }
12490 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12491 }
12492 }
12493
12494 abuf->written = written;
12495 return vpc;
12496 #undef FLD
12497 }
12498
12499 /* tira: tira$pack $GRi,$s12 */
12500
12501 static SEM_PC
12502 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12503 {
12504 #define FLD(f) abuf->fields.sfmt_ftine.f
12505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12506 int UNUSED written = 0;
12507 IADDR UNUSED pc = abuf->addr;
12508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12509
12510 {
12511 ; /*clobber*/
12512 ; /*clobber*/
12513 ; /*clobber*/
12514 ; /*clobber*/
12515 if (NEBI (CPU (h_psr_esr), 0)) {
12516 {
12517 ; /*clobber*/
12518 ; /*clobber*/
12519 ; /*clobber*/
12520 ; /*clobber*/
12521 }
12522 }
12523 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12524 }
12525
12526 abuf->written = written;
12527 return vpc;
12528 #undef FLD
12529 }
12530
12531 /* tino: tino$pack */
12532
12533 static SEM_PC
12534 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12535 {
12536 #define FLD(f) abuf->fields.sfmt_empty.f
12537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12538 int UNUSED written = 0;
12539 IADDR UNUSED pc = abuf->addr;
12540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12541
12542 ((void) 0); /*nop*/
12543
12544 return vpc;
12545 #undef FLD
12546 }
12547
12548 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12549
12550 static SEM_PC
12551 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12552 {
12553 #define FLD(f) abuf->fields.sfmt_tieq.f
12554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12555 int UNUSED written = 0;
12556 IADDR UNUSED pc = abuf->addr;
12557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12558
12559 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12560 {
12561 ; /*clobber*/
12562 ; /*clobber*/
12563 ; /*clobber*/
12564 ; /*clobber*/
12565 if (NEBI (CPU (h_psr_esr), 0)) {
12566 {
12567 ; /*clobber*/
12568 ; /*clobber*/
12569 ; /*clobber*/
12570 ; /*clobber*/
12571 }
12572 }
12573 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12574 }
12575 }
12576
12577 abuf->written = written;
12578 return vpc;
12579 #undef FLD
12580 }
12581
12582 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12583
12584 static SEM_PC
12585 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12586 {
12587 #define FLD(f) abuf->fields.sfmt_tieq.f
12588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12589 int UNUSED written = 0;
12590 IADDR UNUSED pc = abuf->addr;
12591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12592
12593 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12594 {
12595 ; /*clobber*/
12596 ; /*clobber*/
12597 ; /*clobber*/
12598 ; /*clobber*/
12599 if (NEBI (CPU (h_psr_esr), 0)) {
12600 {
12601 ; /*clobber*/
12602 ; /*clobber*/
12603 ; /*clobber*/
12604 ; /*clobber*/
12605 }
12606 }
12607 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12608 }
12609 }
12610
12611 abuf->written = written;
12612 return vpc;
12613 #undef FLD
12614 }
12615
12616 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12617
12618 static SEM_PC
12619 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12620 {
12621 #define FLD(f) abuf->fields.sfmt_tieq.f
12622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12623 int UNUSED written = 0;
12624 IADDR UNUSED pc = abuf->addr;
12625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12626
12627 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))))) {
12628 {
12629 ; /*clobber*/
12630 ; /*clobber*/
12631 ; /*clobber*/
12632 ; /*clobber*/
12633 if (NEBI (CPU (h_psr_esr), 0)) {
12634 {
12635 ; /*clobber*/
12636 ; /*clobber*/
12637 ; /*clobber*/
12638 ; /*clobber*/
12639 }
12640 }
12641 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12642 }
12643 }
12644
12645 abuf->written = written;
12646 return vpc;
12647 #undef FLD
12648 }
12649
12650 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12651
12652 static SEM_PC
12653 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12654 {
12655 #define FLD(f) abuf->fields.sfmt_tieq.f
12656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12657 int UNUSED written = 0;
12658 IADDR UNUSED pc = abuf->addr;
12659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12660
12661 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)))))) {
12662 {
12663 ; /*clobber*/
12664 ; /*clobber*/
12665 ; /*clobber*/
12666 ; /*clobber*/
12667 if (NEBI (CPU (h_psr_esr), 0)) {
12668 {
12669 ; /*clobber*/
12670 ; /*clobber*/
12671 ; /*clobber*/
12672 ; /*clobber*/
12673 }
12674 }
12675 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12676 }
12677 }
12678
12679 abuf->written = written;
12680 return vpc;
12681 #undef FLD
12682 }
12683
12684 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12685
12686 static SEM_PC
12687 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12688 {
12689 #define FLD(f) abuf->fields.sfmt_tieq.f
12690 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12691 int UNUSED written = 0;
12692 IADDR UNUSED pc = abuf->addr;
12693 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12694
12695 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)))) {
12696 {
12697 ; /*clobber*/
12698 ; /*clobber*/
12699 ; /*clobber*/
12700 ; /*clobber*/
12701 if (NEBI (CPU (h_psr_esr), 0)) {
12702 {
12703 ; /*clobber*/
12704 ; /*clobber*/
12705 ; /*clobber*/
12706 ; /*clobber*/
12707 }
12708 }
12709 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12710 }
12711 }
12712
12713 abuf->written = written;
12714 return vpc;
12715 #undef FLD
12716 }
12717
12718 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12719
12720 static SEM_PC
12721 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12722 {
12723 #define FLD(f) abuf->fields.sfmt_tieq.f
12724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12725 int UNUSED written = 0;
12726 IADDR UNUSED pc = abuf->addr;
12727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12728
12729 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))))) {
12730 {
12731 ; /*clobber*/
12732 ; /*clobber*/
12733 ; /*clobber*/
12734 ; /*clobber*/
12735 if (NEBI (CPU (h_psr_esr), 0)) {
12736 {
12737 ; /*clobber*/
12738 ; /*clobber*/
12739 ; /*clobber*/
12740 ; /*clobber*/
12741 }
12742 }
12743 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12744 }
12745 }
12746
12747 abuf->written = written;
12748 return vpc;
12749 #undef FLD
12750 }
12751
12752 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12753
12754 static SEM_PC
12755 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12756 {
12757 #define FLD(f) abuf->fields.sfmt_tieq.f
12758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12759 int UNUSED written = 0;
12760 IADDR UNUSED pc = abuf->addr;
12761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12762
12763 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12764 {
12765 ; /*clobber*/
12766 ; /*clobber*/
12767 ; /*clobber*/
12768 ; /*clobber*/
12769 if (NEBI (CPU (h_psr_esr), 0)) {
12770 {
12771 ; /*clobber*/
12772 ; /*clobber*/
12773 ; /*clobber*/
12774 ; /*clobber*/
12775 }
12776 }
12777 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12778 }
12779 }
12780
12781 abuf->written = written;
12782 return vpc;
12783 #undef FLD
12784 }
12785
12786 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12787
12788 static SEM_PC
12789 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12790 {
12791 #define FLD(f) abuf->fields.sfmt_tieq.f
12792 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12793 int UNUSED written = 0;
12794 IADDR UNUSED pc = abuf->addr;
12795 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12796
12797 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))))) {
12798 {
12799 ; /*clobber*/
12800 ; /*clobber*/
12801 ; /*clobber*/
12802 ; /*clobber*/
12803 if (NEBI (CPU (h_psr_esr), 0)) {
12804 {
12805 ; /*clobber*/
12806 ; /*clobber*/
12807 ; /*clobber*/
12808 ; /*clobber*/
12809 }
12810 }
12811 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12812 }
12813 }
12814
12815 abuf->written = written;
12816 return vpc;
12817 #undef FLD
12818 }
12819
12820 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
12821
12822 static SEM_PC
12823 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12824 {
12825 #define FLD(f) abuf->fields.sfmt_tieq.f
12826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12827 int UNUSED written = 0;
12828 IADDR UNUSED pc = abuf->addr;
12829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12830
12831 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12832 {
12833 ; /*clobber*/
12834 ; /*clobber*/
12835 ; /*clobber*/
12836 ; /*clobber*/
12837 if (NEBI (CPU (h_psr_esr), 0)) {
12838 {
12839 ; /*clobber*/
12840 ; /*clobber*/
12841 ; /*clobber*/
12842 ; /*clobber*/
12843 }
12844 }
12845 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12846 }
12847 }
12848
12849 abuf->written = written;
12850 return vpc;
12851 #undef FLD
12852 }
12853
12854 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12855
12856 static SEM_PC
12857 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12858 {
12859 #define FLD(f) abuf->fields.sfmt_tieq.f
12860 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12861 int UNUSED written = 0;
12862 IADDR UNUSED pc = abuf->addr;
12863 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12864
12865 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12866 {
12867 ; /*clobber*/
12868 ; /*clobber*/
12869 ; /*clobber*/
12870 ; /*clobber*/
12871 if (NEBI (CPU (h_psr_esr), 0)) {
12872 {
12873 ; /*clobber*/
12874 ; /*clobber*/
12875 ; /*clobber*/
12876 ; /*clobber*/
12877 }
12878 }
12879 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12880 }
12881 }
12882
12883 abuf->written = written;
12884 return vpc;
12885 #undef FLD
12886 }
12887
12888 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
12889
12890 static SEM_PC
12891 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12892 {
12893 #define FLD(f) abuf->fields.sfmt_tieq.f
12894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12895 int UNUSED written = 0;
12896 IADDR UNUSED pc = abuf->addr;
12897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12898
12899 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12900 {
12901 ; /*clobber*/
12902 ; /*clobber*/
12903 ; /*clobber*/
12904 ; /*clobber*/
12905 if (NEBI (CPU (h_psr_esr), 0)) {
12906 {
12907 ; /*clobber*/
12908 ; /*clobber*/
12909 ; /*clobber*/
12910 ; /*clobber*/
12911 }
12912 }
12913 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12914 }
12915 }
12916
12917 abuf->written = written;
12918 return vpc;
12919 #undef FLD
12920 }
12921
12922 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
12923
12924 static SEM_PC
12925 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12926 {
12927 #define FLD(f) abuf->fields.sfmt_tieq.f
12928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12929 int UNUSED written = 0;
12930 IADDR UNUSED pc = abuf->addr;
12931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12932
12933 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12934 {
12935 ; /*clobber*/
12936 ; /*clobber*/
12937 ; /*clobber*/
12938 ; /*clobber*/
12939 if (NEBI (CPU (h_psr_esr), 0)) {
12940 {
12941 ; /*clobber*/
12942 ; /*clobber*/
12943 ; /*clobber*/
12944 ; /*clobber*/
12945 }
12946 }
12947 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12948 }
12949 }
12950
12951 abuf->written = written;
12952 return vpc;
12953 #undef FLD
12954 }
12955
12956 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12957
12958 static SEM_PC
12959 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12960 {
12961 #define FLD(f) abuf->fields.sfmt_tieq.f
12962 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12963 int UNUSED written = 0;
12964 IADDR UNUSED pc = abuf->addr;
12965 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12966
12967 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12968 {
12969 ; /*clobber*/
12970 ; /*clobber*/
12971 ; /*clobber*/
12972 ; /*clobber*/
12973 if (NEBI (CPU (h_psr_esr), 0)) {
12974 {
12975 ; /*clobber*/
12976 ; /*clobber*/
12977 ; /*clobber*/
12978 ; /*clobber*/
12979 }
12980 }
12981 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12982 }
12983 }
12984
12985 abuf->written = written;
12986 return vpc;
12987 #undef FLD
12988 }
12989
12990 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12991
12992 static SEM_PC
12993 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12994 {
12995 #define FLD(f) abuf->fields.sfmt_tieq.f
12996 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12997 int UNUSED written = 0;
12998 IADDR UNUSED pc = abuf->addr;
12999 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13000
13001 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13002 {
13003 ; /*clobber*/
13004 ; /*clobber*/
13005 ; /*clobber*/
13006 ; /*clobber*/
13007 if (NEBI (CPU (h_psr_esr), 0)) {
13008 {
13009 ; /*clobber*/
13010 ; /*clobber*/
13011 ; /*clobber*/
13012 ; /*clobber*/
13013 }
13014 }
13015 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13016 }
13017 }
13018
13019 abuf->written = written;
13020 return vpc;
13021 #undef FLD
13022 }
13023
13024 /* ftira: ftira$pack $GRi,$s12 */
13025
13026 static SEM_PC
13027 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13028 {
13029 #define FLD(f) abuf->fields.sfmt_ftine.f
13030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13031 int UNUSED written = 0;
13032 IADDR UNUSED pc = abuf->addr;
13033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13034
13035 {
13036 ; /*clobber*/
13037 ; /*clobber*/
13038 ; /*clobber*/
13039 ; /*clobber*/
13040 if (NEBI (CPU (h_psr_esr), 0)) {
13041 {
13042 ; /*clobber*/
13043 ; /*clobber*/
13044 ; /*clobber*/
13045 ; /*clobber*/
13046 }
13047 }
13048 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13049 }
13050
13051 abuf->written = written;
13052 return vpc;
13053 #undef FLD
13054 }
13055
13056 /* ftino: ftino$pack */
13057
13058 static SEM_PC
13059 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13060 {
13061 #define FLD(f) abuf->fields.sfmt_empty.f
13062 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13063 int UNUSED written = 0;
13064 IADDR UNUSED pc = abuf->addr;
13065 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13066
13067 ((void) 0); /*nop*/
13068
13069 return vpc;
13070 #undef FLD
13071 }
13072
13073 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13074
13075 static SEM_PC
13076 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13077 {
13078 #define FLD(f) abuf->fields.sfmt_ftine.f
13079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13080 int UNUSED written = 0;
13081 IADDR UNUSED pc = abuf->addr;
13082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13083
13084 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))))) {
13085 {
13086 ; /*clobber*/
13087 ; /*clobber*/
13088 ; /*clobber*/
13089 ; /*clobber*/
13090 if (NEBI (CPU (h_psr_esr), 0)) {
13091 {
13092 ; /*clobber*/
13093 ; /*clobber*/
13094 ; /*clobber*/
13095 ; /*clobber*/
13096 }
13097 }
13098 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13099 }
13100 }
13101
13102 abuf->written = written;
13103 return vpc;
13104 #undef FLD
13105 }
13106
13107 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13108
13109 static SEM_PC
13110 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13111 {
13112 #define FLD(f) abuf->fields.sfmt_ftine.f
13113 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13114 int UNUSED written = 0;
13115 IADDR UNUSED pc = abuf->addr;
13116 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13117
13118 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13119 {
13120 ; /*clobber*/
13121 ; /*clobber*/
13122 ; /*clobber*/
13123 ; /*clobber*/
13124 if (NEBI (CPU (h_psr_esr), 0)) {
13125 {
13126 ; /*clobber*/
13127 ; /*clobber*/
13128 ; /*clobber*/
13129 ; /*clobber*/
13130 }
13131 }
13132 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13133 }
13134 }
13135
13136 abuf->written = written;
13137 return vpc;
13138 #undef FLD
13139 }
13140
13141 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13142
13143 static SEM_PC
13144 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13145 {
13146 #define FLD(f) abuf->fields.sfmt_ftine.f
13147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13148 int UNUSED written = 0;
13149 IADDR UNUSED pc = abuf->addr;
13150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13151
13152 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)))) {
13153 {
13154 ; /*clobber*/
13155 ; /*clobber*/
13156 ; /*clobber*/
13157 ; /*clobber*/
13158 if (NEBI (CPU (h_psr_esr), 0)) {
13159 {
13160 ; /*clobber*/
13161 ; /*clobber*/
13162 ; /*clobber*/
13163 ; /*clobber*/
13164 }
13165 }
13166 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13167 }
13168 }
13169
13170 abuf->written = written;
13171 return vpc;
13172 #undef FLD
13173 }
13174
13175 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13176
13177 static SEM_PC
13178 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13179 {
13180 #define FLD(f) abuf->fields.sfmt_ftine.f
13181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13182 int UNUSED written = 0;
13183 IADDR UNUSED pc = abuf->addr;
13184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13185
13186 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13187 {
13188 ; /*clobber*/
13189 ; /*clobber*/
13190 ; /*clobber*/
13191 ; /*clobber*/
13192 if (NEBI (CPU (h_psr_esr), 0)) {
13193 {
13194 ; /*clobber*/
13195 ; /*clobber*/
13196 ; /*clobber*/
13197 ; /*clobber*/
13198 }
13199 }
13200 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13201 }
13202 }
13203
13204 abuf->written = written;
13205 return vpc;
13206 #undef FLD
13207 }
13208
13209 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13210
13211 static SEM_PC
13212 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13213 {
13214 #define FLD(f) abuf->fields.sfmt_ftine.f
13215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13216 int UNUSED written = 0;
13217 IADDR UNUSED pc = abuf->addr;
13218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13219
13220 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13221 {
13222 ; /*clobber*/
13223 ; /*clobber*/
13224 ; /*clobber*/
13225 ; /*clobber*/
13226 if (NEBI (CPU (h_psr_esr), 0)) {
13227 {
13228 ; /*clobber*/
13229 ; /*clobber*/
13230 ; /*clobber*/
13231 ; /*clobber*/
13232 }
13233 }
13234 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13235 }
13236 }
13237
13238 abuf->written = written;
13239 return vpc;
13240 #undef FLD
13241 }
13242
13243 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13244
13245 static SEM_PC
13246 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13247 {
13248 #define FLD(f) abuf->fields.sfmt_ftine.f
13249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13250 int UNUSED written = 0;
13251 IADDR UNUSED pc = abuf->addr;
13252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13253
13254 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)))) {
13255 {
13256 ; /*clobber*/
13257 ; /*clobber*/
13258 ; /*clobber*/
13259 ; /*clobber*/
13260 if (NEBI (CPU (h_psr_esr), 0)) {
13261 {
13262 ; /*clobber*/
13263 ; /*clobber*/
13264 ; /*clobber*/
13265 ; /*clobber*/
13266 }
13267 }
13268 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13269 }
13270 }
13271
13272 abuf->written = written;
13273 return vpc;
13274 #undef FLD
13275 }
13276
13277 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13278
13279 static SEM_PC
13280 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13281 {
13282 #define FLD(f) abuf->fields.sfmt_ftine.f
13283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13284 int UNUSED written = 0;
13285 IADDR UNUSED pc = abuf->addr;
13286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13287
13288 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13289 {
13290 ; /*clobber*/
13291 ; /*clobber*/
13292 ; /*clobber*/
13293 ; /*clobber*/
13294 if (NEBI (CPU (h_psr_esr), 0)) {
13295 {
13296 ; /*clobber*/
13297 ; /*clobber*/
13298 ; /*clobber*/
13299 ; /*clobber*/
13300 }
13301 }
13302 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13303 }
13304 }
13305
13306 abuf->written = written;
13307 return vpc;
13308 #undef FLD
13309 }
13310
13311 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13312
13313 static SEM_PC
13314 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13315 {
13316 #define FLD(f) abuf->fields.sfmt_ftine.f
13317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13318 int UNUSED written = 0;
13319 IADDR UNUSED pc = abuf->addr;
13320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13321
13322 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))))) {
13323 {
13324 ; /*clobber*/
13325 ; /*clobber*/
13326 ; /*clobber*/
13327 ; /*clobber*/
13328 if (NEBI (CPU (h_psr_esr), 0)) {
13329 {
13330 ; /*clobber*/
13331 ; /*clobber*/
13332 ; /*clobber*/
13333 ; /*clobber*/
13334 }
13335 }
13336 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13337 }
13338 }
13339
13340 abuf->written = written;
13341 return vpc;
13342 #undef FLD
13343 }
13344
13345 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13346
13347 static SEM_PC
13348 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13349 {
13350 #define FLD(f) abuf->fields.sfmt_ftine.f
13351 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13352 int UNUSED written = 0;
13353 IADDR UNUSED pc = abuf->addr;
13354 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13355
13356 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13357 {
13358 ; /*clobber*/
13359 ; /*clobber*/
13360 ; /*clobber*/
13361 ; /*clobber*/
13362 if (NEBI (CPU (h_psr_esr), 0)) {
13363 {
13364 ; /*clobber*/
13365 ; /*clobber*/
13366 ; /*clobber*/
13367 ; /*clobber*/
13368 }
13369 }
13370 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13371 }
13372 }
13373
13374 abuf->written = written;
13375 return vpc;
13376 #undef FLD
13377 }
13378
13379 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13380
13381 static SEM_PC
13382 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13383 {
13384 #define FLD(f) abuf->fields.sfmt_ftine.f
13385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13386 int UNUSED written = 0;
13387 IADDR UNUSED pc = abuf->addr;
13388 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13389
13390 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)))) {
13391 {
13392 ; /*clobber*/
13393 ; /*clobber*/
13394 ; /*clobber*/
13395 ; /*clobber*/
13396 if (NEBI (CPU (h_psr_esr), 0)) {
13397 {
13398 ; /*clobber*/
13399 ; /*clobber*/
13400 ; /*clobber*/
13401 ; /*clobber*/
13402 }
13403 }
13404 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13405 }
13406 }
13407
13408 abuf->written = written;
13409 return vpc;
13410 #undef FLD
13411 }
13412
13413 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13414
13415 static SEM_PC
13416 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13417 {
13418 #define FLD(f) abuf->fields.sfmt_ftine.f
13419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13420 int UNUSED written = 0;
13421 IADDR UNUSED pc = abuf->addr;
13422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13423
13424 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13425 {
13426 ; /*clobber*/
13427 ; /*clobber*/
13428 ; /*clobber*/
13429 ; /*clobber*/
13430 if (NEBI (CPU (h_psr_esr), 0)) {
13431 {
13432 ; /*clobber*/
13433 ; /*clobber*/
13434 ; /*clobber*/
13435 ; /*clobber*/
13436 }
13437 }
13438 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13439 }
13440 }
13441
13442 abuf->written = written;
13443 return vpc;
13444 #undef FLD
13445 }
13446
13447 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13448
13449 static SEM_PC
13450 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13451 {
13452 #define FLD(f) abuf->fields.sfmt_ftine.f
13453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13454 int UNUSED written = 0;
13455 IADDR UNUSED pc = abuf->addr;
13456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13457
13458 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))))) {
13459 {
13460 ; /*clobber*/
13461 ; /*clobber*/
13462 ; /*clobber*/
13463 ; /*clobber*/
13464 if (NEBI (CPU (h_psr_esr), 0)) {
13465 {
13466 ; /*clobber*/
13467 ; /*clobber*/
13468 ; /*clobber*/
13469 ; /*clobber*/
13470 }
13471 }
13472 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13473 }
13474 }
13475
13476 abuf->written = written;
13477 return vpc;
13478 #undef FLD
13479 }
13480
13481 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13482
13483 static SEM_PC
13484 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13485 {
13486 #define FLD(f) abuf->fields.sfmt_ftine.f
13487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13488 int UNUSED written = 0;
13489 IADDR UNUSED pc = abuf->addr;
13490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13491
13492 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13493 {
13494 ; /*clobber*/
13495 ; /*clobber*/
13496 ; /*clobber*/
13497 ; /*clobber*/
13498 if (NEBI (CPU (h_psr_esr), 0)) {
13499 {
13500 ; /*clobber*/
13501 ; /*clobber*/
13502 ; /*clobber*/
13503 ; /*clobber*/
13504 }
13505 }
13506 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13507 }
13508 }
13509
13510 abuf->written = written;
13511 return vpc;
13512 #undef FLD
13513 }
13514
13515 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13516
13517 static SEM_PC
13518 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13519 {
13520 #define FLD(f) abuf->fields.sfmt_ftine.f
13521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13522 int UNUSED written = 0;
13523 IADDR UNUSED pc = abuf->addr;
13524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13525
13526 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))))) {
13527 {
13528 ; /*clobber*/
13529 ; /*clobber*/
13530 ; /*clobber*/
13531 ; /*clobber*/
13532 if (NEBI (CPU (h_psr_esr), 0)) {
13533 {
13534 ; /*clobber*/
13535 ; /*clobber*/
13536 ; /*clobber*/
13537 ; /*clobber*/
13538 }
13539 }
13540 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13541 }
13542 }
13543
13544 abuf->written = written;
13545 return vpc;
13546 #undef FLD
13547 }
13548
13549 /* break: break$pack */
13550
13551 static SEM_PC
13552 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13553 {
13554 #define FLD(f) abuf->fields.sfmt_break.f
13555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13556 int UNUSED written = 0;
13557 IADDR UNUSED pc = abuf->addr;
13558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13559
13560 {
13561 ; /*clobber*/
13562 ; /*clobber*/
13563 ; /*clobber*/
13564 ; /*clobber*/
13565 ; /*clobber*/
13566 ; /*clobber*/
13567 frv_break (current_cpu);
13568 }
13569
13570 return vpc;
13571 #undef FLD
13572 }
13573
13574 /* mtrap: mtrap$pack */
13575
13576 static SEM_PC
13577 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13578 {
13579 #define FLD(f) abuf->fields.sfmt_empty.f
13580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13581 int UNUSED written = 0;
13582 IADDR UNUSED pc = abuf->addr;
13583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13584
13585 frv_mtrap (current_cpu);
13586
13587 return vpc;
13588 #undef FLD
13589 }
13590
13591 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13592
13593 static SEM_PC
13594 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13595 {
13596 #define FLD(f) abuf->fields.sfmt_andcr.f
13597 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13598 int UNUSED written = 0;
13599 IADDR UNUSED pc = abuf->addr;
13600 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13601
13602 {
13603 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13604 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13605 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13606 }
13607
13608 return vpc;
13609 #undef FLD
13610 }
13611
13612 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13613
13614 static SEM_PC
13615 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13616 {
13617 #define FLD(f) abuf->fields.sfmt_andcr.f
13618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13619 int UNUSED written = 0;
13620 IADDR UNUSED pc = abuf->addr;
13621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13622
13623 {
13624 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13625 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13626 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13627 }
13628
13629 return vpc;
13630 #undef FLD
13631 }
13632
13633 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13634
13635 static SEM_PC
13636 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13637 {
13638 #define FLD(f) abuf->fields.sfmt_andcr.f
13639 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13640 int UNUSED written = 0;
13641 IADDR UNUSED pc = abuf->addr;
13642 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13643
13644 {
13645 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13646 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13647 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13648 }
13649
13650 return vpc;
13651 #undef FLD
13652 }
13653
13654 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13655
13656 static SEM_PC
13657 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13658 {
13659 #define FLD(f) abuf->fields.sfmt_andcr.f
13660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13661 int UNUSED written = 0;
13662 IADDR UNUSED pc = abuf->addr;
13663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13664
13665 {
13666 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13667 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13668 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13669 }
13670
13671 return vpc;
13672 #undef FLD
13673 }
13674
13675 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13676
13677 static SEM_PC
13678 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13679 {
13680 #define FLD(f) abuf->fields.sfmt_andcr.f
13681 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13682 int UNUSED written = 0;
13683 IADDR UNUSED pc = abuf->addr;
13684 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13685
13686 {
13687 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13688 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13689 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13690 }
13691
13692 return vpc;
13693 #undef FLD
13694 }
13695
13696 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13697
13698 static SEM_PC
13699 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13700 {
13701 #define FLD(f) abuf->fields.sfmt_andcr.f
13702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13703 int UNUSED written = 0;
13704 IADDR UNUSED pc = abuf->addr;
13705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13706
13707 {
13708 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13709 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13710 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13711 }
13712
13713 return vpc;
13714 #undef FLD
13715 }
13716
13717 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13718
13719 static SEM_PC
13720 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13721 {
13722 #define FLD(f) abuf->fields.sfmt_andcr.f
13723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13724 int UNUSED written = 0;
13725 IADDR UNUSED pc = abuf->addr;
13726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13727
13728 {
13729 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13730 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13731 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13732 }
13733
13734 return vpc;
13735 #undef FLD
13736 }
13737
13738 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13739
13740 static SEM_PC
13741 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13742 {
13743 #define FLD(f) abuf->fields.sfmt_andcr.f
13744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13745 int UNUSED written = 0;
13746 IADDR UNUSED pc = abuf->addr;
13747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13748
13749 {
13750 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13751 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13752 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13753 }
13754
13755 return vpc;
13756 #undef FLD
13757 }
13758
13759 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13760
13761 static SEM_PC
13762 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13763 {
13764 #define FLD(f) abuf->fields.sfmt_andcr.f
13765 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13766 int UNUSED written = 0;
13767 IADDR UNUSED pc = abuf->addr;
13768 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13769
13770 {
13771 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13772 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13773 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13774 }
13775
13776 return vpc;
13777 #undef FLD
13778 }
13779
13780 /* notcr: notcr$pack $CRj,$CRk */
13781
13782 static SEM_PC
13783 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13784 {
13785 #define FLD(f) abuf->fields.sfmt_andcr.f
13786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13787 int UNUSED written = 0;
13788 IADDR UNUSED pc = abuf->addr;
13789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13790
13791 {
13792 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13793 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13794 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13795 }
13796
13797 return vpc;
13798 #undef FLD
13799 }
13800
13801 /* ckra: ckra$pack $CRj_int */
13802
13803 static SEM_PC
13804 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13805 {
13806 #define FLD(f) abuf->fields.sfmt_cckeq.f
13807 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13808 int UNUSED written = 0;
13809 IADDR UNUSED pc = abuf->addr;
13810 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13811
13812 {
13813 UQI opval = 3;
13814 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13815 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13816 }
13817
13818 return vpc;
13819 #undef FLD
13820 }
13821
13822 /* ckno: ckno$pack $CRj_int */
13823
13824 static SEM_PC
13825 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13826 {
13827 #define FLD(f) abuf->fields.sfmt_cckeq.f
13828 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13829 int UNUSED written = 0;
13830 IADDR UNUSED pc = abuf->addr;
13831 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13832
13833 {
13834 UQI opval = 2;
13835 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13836 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13837 }
13838
13839 return vpc;
13840 #undef FLD
13841 }
13842
13843 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13844
13845 static SEM_PC
13846 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13847 {
13848 #define FLD(f) abuf->fields.sfmt_cckeq.f
13849 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13850 int UNUSED written = 0;
13851 IADDR UNUSED pc = abuf->addr;
13852 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13853
13854 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13855 {
13856 UQI opval = 3;
13857 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13858 written |= (1 << 1);
13859 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13860 }
13861 } else {
13862 {
13863 UQI opval = 2;
13864 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13865 written |= (1 << 1);
13866 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13867 }
13868 }
13869
13870 abuf->written = written;
13871 return vpc;
13872 #undef FLD
13873 }
13874
13875 /* ckne: ckne$pack $ICCi_3,$CRj_int */
13876
13877 static SEM_PC
13878 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13879 {
13880 #define FLD(f) abuf->fields.sfmt_cckeq.f
13881 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13882 int UNUSED written = 0;
13883 IADDR UNUSED pc = abuf->addr;
13884 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13885
13886 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13887 {
13888 UQI opval = 3;
13889 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13890 written |= (1 << 1);
13891 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13892 }
13893 } else {
13894 {
13895 UQI opval = 2;
13896 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13897 written |= (1 << 1);
13898 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13899 }
13900 }
13901
13902 abuf->written = written;
13903 return vpc;
13904 #undef FLD
13905 }
13906
13907 /* ckle: ckle$pack $ICCi_3,$CRj_int */
13908
13909 static SEM_PC
13910 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13911 {
13912 #define FLD(f) abuf->fields.sfmt_cckeq.f
13913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13914 int UNUSED written = 0;
13915 IADDR UNUSED pc = abuf->addr;
13916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13917
13918 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))))) {
13919 {
13920 UQI opval = 3;
13921 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13922 written |= (1 << 1);
13923 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13924 }
13925 } else {
13926 {
13927 UQI opval = 2;
13928 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13929 written |= (1 << 1);
13930 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13931 }
13932 }
13933
13934 abuf->written = written;
13935 return vpc;
13936 #undef FLD
13937 }
13938
13939 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13940
13941 static SEM_PC
13942 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13943 {
13944 #define FLD(f) abuf->fields.sfmt_cckeq.f
13945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13946 int UNUSED written = 0;
13947 IADDR UNUSED pc = abuf->addr;
13948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13949
13950 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)))))) {
13951 {
13952 UQI opval = 3;
13953 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13954 written |= (1 << 1);
13955 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13956 }
13957 } else {
13958 {
13959 UQI opval = 2;
13960 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13961 written |= (1 << 1);
13962 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13963 }
13964 }
13965
13966 abuf->written = written;
13967 return vpc;
13968 #undef FLD
13969 }
13970
13971 /* cklt: cklt$pack $ICCi_3,$CRj_int */
13972
13973 static SEM_PC
13974 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13975 {
13976 #define FLD(f) abuf->fields.sfmt_cckeq.f
13977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13978 int UNUSED written = 0;
13979 IADDR UNUSED pc = abuf->addr;
13980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13981
13982 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)))) {
13983 {
13984 UQI opval = 3;
13985 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13986 written |= (1 << 1);
13987 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13988 }
13989 } else {
13990 {
13991 UQI opval = 2;
13992 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13993 written |= (1 << 1);
13994 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13995 }
13996 }
13997
13998 abuf->written = written;
13999 return vpc;
14000 #undef FLD
14001 }
14002
14003 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14004
14005 static SEM_PC
14006 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14007 {
14008 #define FLD(f) abuf->fields.sfmt_cckeq.f
14009 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14010 int UNUSED written = 0;
14011 IADDR UNUSED pc = abuf->addr;
14012 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14013
14014 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))))) {
14015 {
14016 UQI opval = 3;
14017 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14018 written |= (1 << 1);
14019 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14020 }
14021 } else {
14022 {
14023 UQI opval = 2;
14024 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14025 written |= (1 << 1);
14026 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14027 }
14028 }
14029
14030 abuf->written = written;
14031 return vpc;
14032 #undef FLD
14033 }
14034
14035 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14036
14037 static SEM_PC
14038 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14039 {
14040 #define FLD(f) abuf->fields.sfmt_cckeq.f
14041 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14042 int UNUSED written = 0;
14043 IADDR UNUSED pc = abuf->addr;
14044 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14045
14046 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14047 {
14048 UQI opval = 3;
14049 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14050 written |= (1 << 1);
14051 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14052 }
14053 } else {
14054 {
14055 UQI opval = 2;
14056 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14057 written |= (1 << 1);
14058 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14059 }
14060 }
14061
14062 abuf->written = written;
14063 return vpc;
14064 #undef FLD
14065 }
14066
14067 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14068
14069 static SEM_PC
14070 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14071 {
14072 #define FLD(f) abuf->fields.sfmt_cckeq.f
14073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14074 int UNUSED written = 0;
14075 IADDR UNUSED pc = abuf->addr;
14076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14077
14078 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))))) {
14079 {
14080 UQI opval = 3;
14081 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14082 written |= (1 << 1);
14083 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14084 }
14085 } else {
14086 {
14087 UQI opval = 2;
14088 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14089 written |= (1 << 1);
14090 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14091 }
14092 }
14093
14094 abuf->written = written;
14095 return vpc;
14096 #undef FLD
14097 }
14098
14099 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14100
14101 static SEM_PC
14102 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14103 {
14104 #define FLD(f) abuf->fields.sfmt_cckeq.f
14105 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14106 int UNUSED written = 0;
14107 IADDR UNUSED pc = abuf->addr;
14108 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14109
14110 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14111 {
14112 UQI opval = 3;
14113 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14114 written |= (1 << 1);
14115 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14116 }
14117 } else {
14118 {
14119 UQI opval = 2;
14120 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14121 written |= (1 << 1);
14122 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14123 }
14124 }
14125
14126 abuf->written = written;
14127 return vpc;
14128 #undef FLD
14129 }
14130
14131 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14132
14133 static SEM_PC
14134 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14135 {
14136 #define FLD(f) abuf->fields.sfmt_cckeq.f
14137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14138 int UNUSED written = 0;
14139 IADDR UNUSED pc = abuf->addr;
14140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14141
14142 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14143 {
14144 UQI opval = 3;
14145 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14146 written |= (1 << 1);
14147 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14148 }
14149 } else {
14150 {
14151 UQI opval = 2;
14152 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14153 written |= (1 << 1);
14154 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14155 }
14156 }
14157
14158 abuf->written = written;
14159 return vpc;
14160 #undef FLD
14161 }
14162
14163 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14164
14165 static SEM_PC
14166 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14167 {
14168 #define FLD(f) abuf->fields.sfmt_cckeq.f
14169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14170 int UNUSED written = 0;
14171 IADDR UNUSED pc = abuf->addr;
14172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14173
14174 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14175 {
14176 UQI opval = 3;
14177 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14178 written |= (1 << 1);
14179 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14180 }
14181 } else {
14182 {
14183 UQI opval = 2;
14184 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14185 written |= (1 << 1);
14186 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14187 }
14188 }
14189
14190 abuf->written = written;
14191 return vpc;
14192 #undef FLD
14193 }
14194
14195 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14196
14197 static SEM_PC
14198 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14199 {
14200 #define FLD(f) abuf->fields.sfmt_cckeq.f
14201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14202 int UNUSED written = 0;
14203 IADDR UNUSED pc = abuf->addr;
14204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14205
14206 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14207 {
14208 UQI opval = 3;
14209 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14210 written |= (1 << 1);
14211 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14212 }
14213 } else {
14214 {
14215 UQI opval = 2;
14216 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14217 written |= (1 << 1);
14218 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14219 }
14220 }
14221
14222 abuf->written = written;
14223 return vpc;
14224 #undef FLD
14225 }
14226
14227 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14228
14229 static SEM_PC
14230 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14231 {
14232 #define FLD(f) abuf->fields.sfmt_cckeq.f
14233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14234 int UNUSED written = 0;
14235 IADDR UNUSED pc = abuf->addr;
14236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14237
14238 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14239 {
14240 UQI opval = 3;
14241 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14242 written |= (1 << 1);
14243 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14244 }
14245 } else {
14246 {
14247 UQI opval = 2;
14248 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14249 written |= (1 << 1);
14250 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14251 }
14252 }
14253
14254 abuf->written = written;
14255 return vpc;
14256 #undef FLD
14257 }
14258
14259 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14260
14261 static SEM_PC
14262 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14263 {
14264 #define FLD(f) abuf->fields.sfmt_cckeq.f
14265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14266 int UNUSED written = 0;
14267 IADDR UNUSED pc = abuf->addr;
14268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14269
14270 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14271 {
14272 UQI opval = 3;
14273 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14274 written |= (1 << 1);
14275 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14276 }
14277 } else {
14278 {
14279 UQI opval = 2;
14280 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14281 written |= (1 << 1);
14282 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14283 }
14284 }
14285
14286 abuf->written = written;
14287 return vpc;
14288 #undef FLD
14289 }
14290
14291 /* fckra: fckra$pack $CRj_float */
14292
14293 static SEM_PC
14294 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14295 {
14296 #define FLD(f) abuf->fields.sfmt_cfckne.f
14297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14298 int UNUSED written = 0;
14299 IADDR UNUSED pc = abuf->addr;
14300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14301
14302 {
14303 UQI opval = 3;
14304 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14305 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14306 }
14307
14308 return vpc;
14309 #undef FLD
14310 }
14311
14312 /* fckno: fckno$pack $CRj_float */
14313
14314 static SEM_PC
14315 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14316 {
14317 #define FLD(f) abuf->fields.sfmt_cfckne.f
14318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14319 int UNUSED written = 0;
14320 IADDR UNUSED pc = abuf->addr;
14321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14322
14323 {
14324 UQI opval = 2;
14325 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14326 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14327 }
14328
14329 return vpc;
14330 #undef FLD
14331 }
14332
14333 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14334
14335 static SEM_PC
14336 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14337 {
14338 #define FLD(f) abuf->fields.sfmt_cfckne.f
14339 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14340 int UNUSED written = 0;
14341 IADDR UNUSED pc = abuf->addr;
14342 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14343
14344 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))))) {
14345 {
14346 UQI opval = 3;
14347 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14348 written |= (1 << 1);
14349 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14350 }
14351 } else {
14352 {
14353 UQI opval = 2;
14354 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14355 written |= (1 << 1);
14356 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14357 }
14358 }
14359
14360 abuf->written = written;
14361 return vpc;
14362 #undef FLD
14363 }
14364
14365 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14366
14367 static SEM_PC
14368 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14369 {
14370 #define FLD(f) abuf->fields.sfmt_cfckne.f
14371 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14372 int UNUSED written = 0;
14373 IADDR UNUSED pc = abuf->addr;
14374 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14375
14376 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14377 {
14378 UQI opval = 3;
14379 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14380 written |= (1 << 1);
14381 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14382 }
14383 } else {
14384 {
14385 UQI opval = 2;
14386 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14387 written |= (1 << 1);
14388 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14389 }
14390 }
14391
14392 abuf->written = written;
14393 return vpc;
14394 #undef FLD
14395 }
14396
14397 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14398
14399 static SEM_PC
14400 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14401 {
14402 #define FLD(f) abuf->fields.sfmt_cfckne.f
14403 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14404 int UNUSED written = 0;
14405 IADDR UNUSED pc = abuf->addr;
14406 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14407
14408 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)))) {
14409 {
14410 UQI opval = 3;
14411 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14412 written |= (1 << 1);
14413 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14414 }
14415 } else {
14416 {
14417 UQI opval = 2;
14418 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14419 written |= (1 << 1);
14420 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14421 }
14422 }
14423
14424 abuf->written = written;
14425 return vpc;
14426 #undef FLD
14427 }
14428
14429 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14430
14431 static SEM_PC
14432 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14433 {
14434 #define FLD(f) abuf->fields.sfmt_cfckne.f
14435 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14436 int UNUSED written = 0;
14437 IADDR UNUSED pc = abuf->addr;
14438 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14439
14440 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14441 {
14442 UQI opval = 3;
14443 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14444 written |= (1 << 1);
14445 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14446 }
14447 } else {
14448 {
14449 UQI opval = 2;
14450 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14451 written |= (1 << 1);
14452 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14453 }
14454 }
14455
14456 abuf->written = written;
14457 return vpc;
14458 #undef FLD
14459 }
14460
14461 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14462
14463 static SEM_PC
14464 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14465 {
14466 #define FLD(f) abuf->fields.sfmt_cfckne.f
14467 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14468 int UNUSED written = 0;
14469 IADDR UNUSED pc = abuf->addr;
14470 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14471
14472 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14473 {
14474 UQI opval = 3;
14475 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14476 written |= (1 << 1);
14477 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14478 }
14479 } else {
14480 {
14481 UQI opval = 2;
14482 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14483 written |= (1 << 1);
14484 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14485 }
14486 }
14487
14488 abuf->written = written;
14489 return vpc;
14490 #undef FLD
14491 }
14492
14493 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14494
14495 static SEM_PC
14496 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14497 {
14498 #define FLD(f) abuf->fields.sfmt_cfckne.f
14499 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14500 int UNUSED written = 0;
14501 IADDR UNUSED pc = abuf->addr;
14502 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14503
14504 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)))) {
14505 {
14506 UQI opval = 3;
14507 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14508 written |= (1 << 1);
14509 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14510 }
14511 } else {
14512 {
14513 UQI opval = 2;
14514 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14515 written |= (1 << 1);
14516 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14517 }
14518 }
14519
14520 abuf->written = written;
14521 return vpc;
14522 #undef FLD
14523 }
14524
14525 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14526
14527 static SEM_PC
14528 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14529 {
14530 #define FLD(f) abuf->fields.sfmt_cfckne.f
14531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14532 int UNUSED written = 0;
14533 IADDR UNUSED pc = abuf->addr;
14534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14535
14536 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14537 {
14538 UQI opval = 3;
14539 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14540 written |= (1 << 1);
14541 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14542 }
14543 } else {
14544 {
14545 UQI opval = 2;
14546 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14547 written |= (1 << 1);
14548 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14549 }
14550 }
14551
14552 abuf->written = written;
14553 return vpc;
14554 #undef FLD
14555 }
14556
14557 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14558
14559 static SEM_PC
14560 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14561 {
14562 #define FLD(f) abuf->fields.sfmt_cfckne.f
14563 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14564 int UNUSED written = 0;
14565 IADDR UNUSED pc = abuf->addr;
14566 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14567
14568 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))))) {
14569 {
14570 UQI opval = 3;
14571 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14572 written |= (1 << 1);
14573 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14574 }
14575 } else {
14576 {
14577 UQI opval = 2;
14578 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14579 written |= (1 << 1);
14580 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14581 }
14582 }
14583
14584 abuf->written = written;
14585 return vpc;
14586 #undef FLD
14587 }
14588
14589 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14590
14591 static SEM_PC
14592 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14593 {
14594 #define FLD(f) abuf->fields.sfmt_cfckne.f
14595 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14596 int UNUSED written = 0;
14597 IADDR UNUSED pc = abuf->addr;
14598 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14599
14600 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14601 {
14602 UQI opval = 3;
14603 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14604 written |= (1 << 1);
14605 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14606 }
14607 } else {
14608 {
14609 UQI opval = 2;
14610 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14611 written |= (1 << 1);
14612 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14613 }
14614 }
14615
14616 abuf->written = written;
14617 return vpc;
14618 #undef FLD
14619 }
14620
14621 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14622
14623 static SEM_PC
14624 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14625 {
14626 #define FLD(f) abuf->fields.sfmt_cfckne.f
14627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14628 int UNUSED written = 0;
14629 IADDR UNUSED pc = abuf->addr;
14630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14631
14632 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)))) {
14633 {
14634 UQI opval = 3;
14635 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14636 written |= (1 << 1);
14637 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14638 }
14639 } else {
14640 {
14641 UQI opval = 2;
14642 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14643 written |= (1 << 1);
14644 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14645 }
14646 }
14647
14648 abuf->written = written;
14649 return vpc;
14650 #undef FLD
14651 }
14652
14653 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14654
14655 static SEM_PC
14656 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14657 {
14658 #define FLD(f) abuf->fields.sfmt_cfckne.f
14659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14660 int UNUSED written = 0;
14661 IADDR UNUSED pc = abuf->addr;
14662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14663
14664 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14665 {
14666 UQI opval = 3;
14667 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14668 written |= (1 << 1);
14669 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14670 }
14671 } else {
14672 {
14673 UQI opval = 2;
14674 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14675 written |= (1 << 1);
14676 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14677 }
14678 }
14679
14680 abuf->written = written;
14681 return vpc;
14682 #undef FLD
14683 }
14684
14685 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14686
14687 static SEM_PC
14688 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14689 {
14690 #define FLD(f) abuf->fields.sfmt_cfckne.f
14691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14692 int UNUSED written = 0;
14693 IADDR UNUSED pc = abuf->addr;
14694 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14695
14696 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))))) {
14697 {
14698 UQI opval = 3;
14699 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14700 written |= (1 << 1);
14701 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14702 }
14703 } else {
14704 {
14705 UQI opval = 2;
14706 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14707 written |= (1 << 1);
14708 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14709 }
14710 }
14711
14712 abuf->written = written;
14713 return vpc;
14714 #undef FLD
14715 }
14716
14717 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14718
14719 static SEM_PC
14720 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14721 {
14722 #define FLD(f) abuf->fields.sfmt_cfckne.f
14723 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14724 int UNUSED written = 0;
14725 IADDR UNUSED pc = abuf->addr;
14726 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14727
14728 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14729 {
14730 UQI opval = 3;
14731 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14732 written |= (1 << 1);
14733 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14734 }
14735 } else {
14736 {
14737 UQI opval = 2;
14738 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14739 written |= (1 << 1);
14740 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14741 }
14742 }
14743
14744 abuf->written = written;
14745 return vpc;
14746 #undef FLD
14747 }
14748
14749 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14750
14751 static SEM_PC
14752 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14753 {
14754 #define FLD(f) abuf->fields.sfmt_cfckne.f
14755 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14756 int UNUSED written = 0;
14757 IADDR UNUSED pc = abuf->addr;
14758 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14759
14760 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))))) {
14761 {
14762 UQI opval = 3;
14763 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14764 written |= (1 << 1);
14765 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14766 }
14767 } else {
14768 {
14769 UQI opval = 2;
14770 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14771 written |= (1 << 1);
14772 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14773 }
14774 }
14775
14776 abuf->written = written;
14777 return vpc;
14778 #undef FLD
14779 }
14780
14781 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
14782
14783 static SEM_PC
14784 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14785 {
14786 #define FLD(f) abuf->fields.sfmt_cckeq.f
14787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14788 int UNUSED written = 0;
14789 IADDR UNUSED pc = abuf->addr;
14790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14791
14792 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14793 {
14794 UQI opval = 3;
14795 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14796 written |= (1 << 2);
14797 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14798 }
14799 } else {
14800 {
14801 UQI opval = 0;
14802 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14803 written |= (1 << 2);
14804 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14805 }
14806 }
14807
14808 abuf->written = written;
14809 return vpc;
14810 #undef FLD
14811 }
14812
14813 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
14814
14815 static SEM_PC
14816 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14817 {
14818 #define FLD(f) abuf->fields.sfmt_cckeq.f
14819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14820 int UNUSED written = 0;
14821 IADDR UNUSED pc = abuf->addr;
14822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14823
14824 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14825 {
14826 UQI opval = 2;
14827 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14828 written |= (1 << 2);
14829 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14830 }
14831 } else {
14832 {
14833 UQI opval = 0;
14834 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14835 written |= (1 << 2);
14836 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14837 }
14838 }
14839
14840 abuf->written = written;
14841 return vpc;
14842 #undef FLD
14843 }
14844
14845 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14846
14847 static SEM_PC
14848 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14849 {
14850 #define FLD(f) abuf->fields.sfmt_cckeq.f
14851 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14852 int UNUSED written = 0;
14853 IADDR UNUSED pc = abuf->addr;
14854 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14855
14856 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14857 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14858 {
14859 UQI opval = 3;
14860 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14861 written |= (1 << 3);
14862 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14863 }
14864 } else {
14865 {
14866 UQI opval = 2;
14867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14868 written |= (1 << 3);
14869 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14870 }
14871 }
14872 } else {
14873 {
14874 UQI opval = 0;
14875 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14876 written |= (1 << 3);
14877 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14878 }
14879 }
14880
14881 abuf->written = written;
14882 return vpc;
14883 #undef FLD
14884 }
14885
14886 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14887
14888 static SEM_PC
14889 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14890 {
14891 #define FLD(f) abuf->fields.sfmt_cckeq.f
14892 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14893 int UNUSED written = 0;
14894 IADDR UNUSED pc = abuf->addr;
14895 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14896
14897 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14898 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14899 {
14900 UQI opval = 3;
14901 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14902 written |= (1 << 3);
14903 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14904 }
14905 } else {
14906 {
14907 UQI opval = 2;
14908 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14909 written |= (1 << 3);
14910 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14911 }
14912 }
14913 } else {
14914 {
14915 UQI opval = 0;
14916 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14917 written |= (1 << 3);
14918 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14919 }
14920 }
14921
14922 abuf->written = written;
14923 return vpc;
14924 #undef FLD
14925 }
14926
14927 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14928
14929 static SEM_PC
14930 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14931 {
14932 #define FLD(f) abuf->fields.sfmt_cckeq.f
14933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14934 int UNUSED written = 0;
14935 IADDR UNUSED pc = abuf->addr;
14936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14937
14938 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14939 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))))) {
14940 {
14941 UQI opval = 3;
14942 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14943 written |= (1 << 3);
14944 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14945 }
14946 } else {
14947 {
14948 UQI opval = 2;
14949 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14950 written |= (1 << 3);
14951 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14952 }
14953 }
14954 } else {
14955 {
14956 UQI opval = 0;
14957 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14958 written |= (1 << 3);
14959 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14960 }
14961 }
14962
14963 abuf->written = written;
14964 return vpc;
14965 #undef FLD
14966 }
14967
14968 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14969
14970 static SEM_PC
14971 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14972 {
14973 #define FLD(f) abuf->fields.sfmt_cckeq.f
14974 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14975 int UNUSED written = 0;
14976 IADDR UNUSED pc = abuf->addr;
14977 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14978
14979 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14980 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)))))) {
14981 {
14982 UQI opval = 3;
14983 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14984 written |= (1 << 3);
14985 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14986 }
14987 } else {
14988 {
14989 UQI opval = 2;
14990 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14991 written |= (1 << 3);
14992 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14993 }
14994 }
14995 } else {
14996 {
14997 UQI opval = 0;
14998 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14999 written |= (1 << 3);
15000 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15001 }
15002 }
15003
15004 abuf->written = written;
15005 return vpc;
15006 #undef FLD
15007 }
15008
15009 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15010
15011 static SEM_PC
15012 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15013 {
15014 #define FLD(f) abuf->fields.sfmt_cckeq.f
15015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15016 int UNUSED written = 0;
15017 IADDR UNUSED pc = abuf->addr;
15018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15019
15020 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15021 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)))) {
15022 {
15023 UQI opval = 3;
15024 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15025 written |= (1 << 3);
15026 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15027 }
15028 } else {
15029 {
15030 UQI opval = 2;
15031 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15032 written |= (1 << 3);
15033 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15034 }
15035 }
15036 } else {
15037 {
15038 UQI opval = 0;
15039 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15040 written |= (1 << 3);
15041 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15042 }
15043 }
15044
15045 abuf->written = written;
15046 return vpc;
15047 #undef FLD
15048 }
15049
15050 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15051
15052 static SEM_PC
15053 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15054 {
15055 #define FLD(f) abuf->fields.sfmt_cckeq.f
15056 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15057 int UNUSED written = 0;
15058 IADDR UNUSED pc = abuf->addr;
15059 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15060
15061 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15062 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))))) {
15063 {
15064 UQI opval = 3;
15065 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15066 written |= (1 << 3);
15067 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15068 }
15069 } else {
15070 {
15071 UQI opval = 2;
15072 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15073 written |= (1 << 3);
15074 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15075 }
15076 }
15077 } else {
15078 {
15079 UQI opval = 0;
15080 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15081 written |= (1 << 3);
15082 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15083 }
15084 }
15085
15086 abuf->written = written;
15087 return vpc;
15088 #undef FLD
15089 }
15090
15091 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15092
15093 static SEM_PC
15094 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15095 {
15096 #define FLD(f) abuf->fields.sfmt_cckeq.f
15097 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15098 int UNUSED written = 0;
15099 IADDR UNUSED pc = abuf->addr;
15100 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15101
15102 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15103 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15104 {
15105 UQI opval = 3;
15106 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15107 written |= (1 << 3);
15108 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15109 }
15110 } else {
15111 {
15112 UQI opval = 2;
15113 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15114 written |= (1 << 3);
15115 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15116 }
15117 }
15118 } else {
15119 {
15120 UQI opval = 0;
15121 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15122 written |= (1 << 3);
15123 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15124 }
15125 }
15126
15127 abuf->written = written;
15128 return vpc;
15129 #undef FLD
15130 }
15131
15132 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15133
15134 static SEM_PC
15135 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15136 {
15137 #define FLD(f) abuf->fields.sfmt_cckeq.f
15138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15139 int UNUSED written = 0;
15140 IADDR UNUSED pc = abuf->addr;
15141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15142
15143 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15144 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))))) {
15145 {
15146 UQI opval = 3;
15147 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15148 written |= (1 << 3);
15149 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15150 }
15151 } else {
15152 {
15153 UQI opval = 2;
15154 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15155 written |= (1 << 3);
15156 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15157 }
15158 }
15159 } else {
15160 {
15161 UQI opval = 0;
15162 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15163 written |= (1 << 3);
15164 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15165 }
15166 }
15167
15168 abuf->written = written;
15169 return vpc;
15170 #undef FLD
15171 }
15172
15173 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15174
15175 static SEM_PC
15176 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15177 {
15178 #define FLD(f) abuf->fields.sfmt_cckeq.f
15179 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15180 int UNUSED written = 0;
15181 IADDR UNUSED pc = abuf->addr;
15182 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15183
15184 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15185 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15186 {
15187 UQI opval = 3;
15188 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15189 written |= (1 << 3);
15190 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15191 }
15192 } else {
15193 {
15194 UQI opval = 2;
15195 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15196 written |= (1 << 3);
15197 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15198 }
15199 }
15200 } else {
15201 {
15202 UQI opval = 0;
15203 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15204 written |= (1 << 3);
15205 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15206 }
15207 }
15208
15209 abuf->written = written;
15210 return vpc;
15211 #undef FLD
15212 }
15213
15214 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15215
15216 static SEM_PC
15217 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15218 {
15219 #define FLD(f) abuf->fields.sfmt_cckeq.f
15220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15221 int UNUSED written = 0;
15222 IADDR UNUSED pc = abuf->addr;
15223 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15224
15225 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15226 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15227 {
15228 UQI opval = 3;
15229 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15230 written |= (1 << 3);
15231 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15232 }
15233 } else {
15234 {
15235 UQI opval = 2;
15236 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15237 written |= (1 << 3);
15238 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15239 }
15240 }
15241 } else {
15242 {
15243 UQI opval = 0;
15244 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15245 written |= (1 << 3);
15246 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15247 }
15248 }
15249
15250 abuf->written = written;
15251 return vpc;
15252 #undef FLD
15253 }
15254
15255 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15256
15257 static SEM_PC
15258 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15259 {
15260 #define FLD(f) abuf->fields.sfmt_cckeq.f
15261 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15262 int UNUSED written = 0;
15263 IADDR UNUSED pc = abuf->addr;
15264 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15265
15266 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15267 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15268 {
15269 UQI opval = 3;
15270 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15271 written |= (1 << 3);
15272 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15273 }
15274 } else {
15275 {
15276 UQI opval = 2;
15277 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15278 written |= (1 << 3);
15279 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15280 }
15281 }
15282 } else {
15283 {
15284 UQI opval = 0;
15285 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15286 written |= (1 << 3);
15287 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15288 }
15289 }
15290
15291 abuf->written = written;
15292 return vpc;
15293 #undef FLD
15294 }
15295
15296 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15297
15298 static SEM_PC
15299 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15300 {
15301 #define FLD(f) abuf->fields.sfmt_cckeq.f
15302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15303 int UNUSED written = 0;
15304 IADDR UNUSED pc = abuf->addr;
15305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15306
15307 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15308 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15309 {
15310 UQI opval = 3;
15311 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15312 written |= (1 << 3);
15313 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15314 }
15315 } else {
15316 {
15317 UQI opval = 2;
15318 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15319 written |= (1 << 3);
15320 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15321 }
15322 }
15323 } else {
15324 {
15325 UQI opval = 0;
15326 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15327 written |= (1 << 3);
15328 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15329 }
15330 }
15331
15332 abuf->written = written;
15333 return vpc;
15334 #undef FLD
15335 }
15336
15337 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15338
15339 static SEM_PC
15340 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15341 {
15342 #define FLD(f) abuf->fields.sfmt_cckeq.f
15343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15344 int UNUSED written = 0;
15345 IADDR UNUSED pc = abuf->addr;
15346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15347
15348 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15349 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15350 {
15351 UQI opval = 3;
15352 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15353 written |= (1 << 3);
15354 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15355 }
15356 } else {
15357 {
15358 UQI opval = 2;
15359 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15360 written |= (1 << 3);
15361 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15362 }
15363 }
15364 } else {
15365 {
15366 UQI opval = 0;
15367 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15368 written |= (1 << 3);
15369 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15370 }
15371 }
15372
15373 abuf->written = written;
15374 return vpc;
15375 #undef FLD
15376 }
15377
15378 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15379
15380 static SEM_PC
15381 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15382 {
15383 #define FLD(f) abuf->fields.sfmt_cckeq.f
15384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15385 int UNUSED written = 0;
15386 IADDR UNUSED pc = abuf->addr;
15387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15388
15389 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15390 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15391 {
15392 UQI opval = 3;
15393 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15394 written |= (1 << 3);
15395 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15396 }
15397 } else {
15398 {
15399 UQI opval = 2;
15400 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15401 written |= (1 << 3);
15402 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15403 }
15404 }
15405 } else {
15406 {
15407 UQI opval = 0;
15408 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15409 written |= (1 << 3);
15410 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15411 }
15412 }
15413
15414 abuf->written = written;
15415 return vpc;
15416 #undef FLD
15417 }
15418
15419 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15420
15421 static SEM_PC
15422 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15423 {
15424 #define FLD(f) abuf->fields.sfmt_cfckne.f
15425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15426 int UNUSED written = 0;
15427 IADDR UNUSED pc = abuf->addr;
15428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15429
15430 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15431 {
15432 UQI opval = 3;
15433 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15434 written |= (1 << 2);
15435 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15436 }
15437 } else {
15438 {
15439 UQI opval = 0;
15440 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15441 written |= (1 << 2);
15442 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15443 }
15444 }
15445
15446 abuf->written = written;
15447 return vpc;
15448 #undef FLD
15449 }
15450
15451 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15452
15453 static SEM_PC
15454 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15455 {
15456 #define FLD(f) abuf->fields.sfmt_cfckne.f
15457 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15458 int UNUSED written = 0;
15459 IADDR UNUSED pc = abuf->addr;
15460 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15461
15462 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15463 {
15464 UQI opval = 2;
15465 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15466 written |= (1 << 2);
15467 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15468 }
15469 } else {
15470 {
15471 UQI opval = 0;
15472 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15473 written |= (1 << 2);
15474 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15475 }
15476 }
15477
15478 abuf->written = written;
15479 return vpc;
15480 #undef FLD
15481 }
15482
15483 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15484
15485 static SEM_PC
15486 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15487 {
15488 #define FLD(f) abuf->fields.sfmt_cfckne.f
15489 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15490 int UNUSED written = 0;
15491 IADDR UNUSED pc = abuf->addr;
15492 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15493
15494 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15495 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))))) {
15496 {
15497 UQI opval = 3;
15498 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15499 written |= (1 << 3);
15500 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15501 }
15502 } else {
15503 {
15504 UQI opval = 2;
15505 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15506 written |= (1 << 3);
15507 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15508 }
15509 }
15510 } else {
15511 {
15512 UQI opval = 0;
15513 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15514 written |= (1 << 3);
15515 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15516 }
15517 }
15518
15519 abuf->written = written;
15520 return vpc;
15521 #undef FLD
15522 }
15523
15524 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15525
15526 static SEM_PC
15527 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15528 {
15529 #define FLD(f) abuf->fields.sfmt_cfckne.f
15530 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15531 int UNUSED written = 0;
15532 IADDR UNUSED pc = abuf->addr;
15533 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15534
15535 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15536 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15537 {
15538 UQI opval = 3;
15539 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15540 written |= (1 << 3);
15541 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15542 }
15543 } else {
15544 {
15545 UQI opval = 2;
15546 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15547 written |= (1 << 3);
15548 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15549 }
15550 }
15551 } else {
15552 {
15553 UQI opval = 0;
15554 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15555 written |= (1 << 3);
15556 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15557 }
15558 }
15559
15560 abuf->written = written;
15561 return vpc;
15562 #undef FLD
15563 }
15564
15565 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15566
15567 static SEM_PC
15568 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15569 {
15570 #define FLD(f) abuf->fields.sfmt_cfckne.f
15571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15572 int UNUSED written = 0;
15573 IADDR UNUSED pc = abuf->addr;
15574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15575
15576 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15577 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)))) {
15578 {
15579 UQI opval = 3;
15580 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15581 written |= (1 << 3);
15582 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15583 }
15584 } else {
15585 {
15586 UQI opval = 2;
15587 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15588 written |= (1 << 3);
15589 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15590 }
15591 }
15592 } else {
15593 {
15594 UQI opval = 0;
15595 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15596 written |= (1 << 3);
15597 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15598 }
15599 }
15600
15601 abuf->written = written;
15602 return vpc;
15603 #undef FLD
15604 }
15605
15606 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15607
15608 static SEM_PC
15609 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15610 {
15611 #define FLD(f) abuf->fields.sfmt_cfckne.f
15612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15613 int UNUSED written = 0;
15614 IADDR UNUSED pc = abuf->addr;
15615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15616
15617 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15618 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15619 {
15620 UQI opval = 3;
15621 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15622 written |= (1 << 3);
15623 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15624 }
15625 } else {
15626 {
15627 UQI opval = 2;
15628 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15629 written |= (1 << 3);
15630 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15631 }
15632 }
15633 } else {
15634 {
15635 UQI opval = 0;
15636 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15637 written |= (1 << 3);
15638 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15639 }
15640 }
15641
15642 abuf->written = written;
15643 return vpc;
15644 #undef FLD
15645 }
15646
15647 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15648
15649 static SEM_PC
15650 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15651 {
15652 #define FLD(f) abuf->fields.sfmt_cfckne.f
15653 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15654 int UNUSED written = 0;
15655 IADDR UNUSED pc = abuf->addr;
15656 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15657
15658 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15659 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15660 {
15661 UQI opval = 3;
15662 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15663 written |= (1 << 3);
15664 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15665 }
15666 } else {
15667 {
15668 UQI opval = 2;
15669 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15670 written |= (1 << 3);
15671 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15672 }
15673 }
15674 } else {
15675 {
15676 UQI opval = 0;
15677 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15678 written |= (1 << 3);
15679 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15680 }
15681 }
15682
15683 abuf->written = written;
15684 return vpc;
15685 #undef FLD
15686 }
15687
15688 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15689
15690 static SEM_PC
15691 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15692 {
15693 #define FLD(f) abuf->fields.sfmt_cfckne.f
15694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15695 int UNUSED written = 0;
15696 IADDR UNUSED pc = abuf->addr;
15697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15698
15699 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15700 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)))) {
15701 {
15702 UQI opval = 3;
15703 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15704 written |= (1 << 3);
15705 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15706 }
15707 } else {
15708 {
15709 UQI opval = 2;
15710 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15711 written |= (1 << 3);
15712 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15713 }
15714 }
15715 } else {
15716 {
15717 UQI opval = 0;
15718 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15719 written |= (1 << 3);
15720 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15721 }
15722 }
15723
15724 abuf->written = written;
15725 return vpc;
15726 #undef FLD
15727 }
15728
15729 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15730
15731 static SEM_PC
15732 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15733 {
15734 #define FLD(f) abuf->fields.sfmt_cfckne.f
15735 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15736 int UNUSED written = 0;
15737 IADDR UNUSED pc = abuf->addr;
15738 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15739
15740 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15741 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15742 {
15743 UQI opval = 3;
15744 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15745 written |= (1 << 3);
15746 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15747 }
15748 } else {
15749 {
15750 UQI opval = 2;
15751 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15752 written |= (1 << 3);
15753 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15754 }
15755 }
15756 } else {
15757 {
15758 UQI opval = 0;
15759 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15760 written |= (1 << 3);
15761 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15762 }
15763 }
15764
15765 abuf->written = written;
15766 return vpc;
15767 #undef FLD
15768 }
15769
15770 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15771
15772 static SEM_PC
15773 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15774 {
15775 #define FLD(f) abuf->fields.sfmt_cfckne.f
15776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15777 int UNUSED written = 0;
15778 IADDR UNUSED pc = abuf->addr;
15779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15780
15781 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15782 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))))) {
15783 {
15784 UQI opval = 3;
15785 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15786 written |= (1 << 3);
15787 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15788 }
15789 } else {
15790 {
15791 UQI opval = 2;
15792 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15793 written |= (1 << 3);
15794 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15795 }
15796 }
15797 } else {
15798 {
15799 UQI opval = 0;
15800 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15801 written |= (1 << 3);
15802 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15803 }
15804 }
15805
15806 abuf->written = written;
15807 return vpc;
15808 #undef FLD
15809 }
15810
15811 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15812
15813 static SEM_PC
15814 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15815 {
15816 #define FLD(f) abuf->fields.sfmt_cfckne.f
15817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15818 int UNUSED written = 0;
15819 IADDR UNUSED pc = abuf->addr;
15820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15821
15822 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15823 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15824 {
15825 UQI opval = 3;
15826 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15827 written |= (1 << 3);
15828 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15829 }
15830 } else {
15831 {
15832 UQI opval = 2;
15833 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15834 written |= (1 << 3);
15835 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15836 }
15837 }
15838 } else {
15839 {
15840 UQI opval = 0;
15841 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15842 written |= (1 << 3);
15843 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15844 }
15845 }
15846
15847 abuf->written = written;
15848 return vpc;
15849 #undef FLD
15850 }
15851
15852 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15853
15854 static SEM_PC
15855 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15856 {
15857 #define FLD(f) abuf->fields.sfmt_cfckne.f
15858 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15859 int UNUSED written = 0;
15860 IADDR UNUSED pc = abuf->addr;
15861 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15862
15863 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15864 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)))) {
15865 {
15866 UQI opval = 3;
15867 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15868 written |= (1 << 3);
15869 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15870 }
15871 } else {
15872 {
15873 UQI opval = 2;
15874 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15875 written |= (1 << 3);
15876 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15877 }
15878 }
15879 } else {
15880 {
15881 UQI opval = 0;
15882 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15883 written |= (1 << 3);
15884 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15885 }
15886 }
15887
15888 abuf->written = written;
15889 return vpc;
15890 #undef FLD
15891 }
15892
15893 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15894
15895 static SEM_PC
15896 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15897 {
15898 #define FLD(f) abuf->fields.sfmt_cfckne.f
15899 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15900 int UNUSED written = 0;
15901 IADDR UNUSED pc = abuf->addr;
15902 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15903
15904 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15905 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15906 {
15907 UQI opval = 3;
15908 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15909 written |= (1 << 3);
15910 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15911 }
15912 } else {
15913 {
15914 UQI opval = 2;
15915 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15916 written |= (1 << 3);
15917 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15918 }
15919 }
15920 } else {
15921 {
15922 UQI opval = 0;
15923 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15924 written |= (1 << 3);
15925 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15926 }
15927 }
15928
15929 abuf->written = written;
15930 return vpc;
15931 #undef FLD
15932 }
15933
15934 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15935
15936 static SEM_PC
15937 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15938 {
15939 #define FLD(f) abuf->fields.sfmt_cfckne.f
15940 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15941 int UNUSED written = 0;
15942 IADDR UNUSED pc = abuf->addr;
15943 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15944
15945 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15946 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))))) {
15947 {
15948 UQI opval = 3;
15949 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15950 written |= (1 << 3);
15951 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15952 }
15953 } else {
15954 {
15955 UQI opval = 2;
15956 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15957 written |= (1 << 3);
15958 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15959 }
15960 }
15961 } else {
15962 {
15963 UQI opval = 0;
15964 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15965 written |= (1 << 3);
15966 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15967 }
15968 }
15969
15970 abuf->written = written;
15971 return vpc;
15972 #undef FLD
15973 }
15974
15975 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15976
15977 static SEM_PC
15978 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15979 {
15980 #define FLD(f) abuf->fields.sfmt_cfckne.f
15981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15982 int UNUSED written = 0;
15983 IADDR UNUSED pc = abuf->addr;
15984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15985
15986 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15987 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15988 {
15989 UQI opval = 3;
15990 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15991 written |= (1 << 3);
15992 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15993 }
15994 } else {
15995 {
15996 UQI opval = 2;
15997 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15998 written |= (1 << 3);
15999 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16000 }
16001 }
16002 } else {
16003 {
16004 UQI opval = 0;
16005 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16006 written |= (1 << 3);
16007 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16008 }
16009 }
16010
16011 abuf->written = written;
16012 return vpc;
16013 #undef FLD
16014 }
16015
16016 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16017
16018 static SEM_PC
16019 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16020 {
16021 #define FLD(f) abuf->fields.sfmt_cfckne.f
16022 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16023 int UNUSED written = 0;
16024 IADDR UNUSED pc = abuf->addr;
16025 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16026
16027 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16028 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))))) {
16029 {
16030 UQI opval = 3;
16031 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16032 written |= (1 << 3);
16033 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16034 }
16035 } else {
16036 {
16037 UQI opval = 2;
16038 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16039 written |= (1 << 3);
16040 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16041 }
16042 }
16043 } else {
16044 {
16045 UQI opval = 0;
16046 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16047 written |= (1 << 3);
16048 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16049 }
16050 }
16051
16052 abuf->written = written;
16053 return vpc;
16054 #undef FLD
16055 }
16056
16057 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16058
16059 static SEM_PC
16060 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16061 {
16062 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16064 int UNUSED written = 0;
16065 IADDR UNUSED pc = abuf->addr;
16066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16067
16068 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16069 {
16070 if (EQSI (FLD (f_LI), 1)) {
16071 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16072 }
16073 {
16074 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16075 sim_queue_pc_write (current_cpu, opval);
16076 written |= (1 << 6);
16077 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16078 }
16079 frvbf_model_branch (current_cpu, pc, 2);
16080 }
16081 }
16082
16083 abuf->written = written;
16084 return vpc;
16085 #undef FLD
16086 }
16087
16088 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16089
16090 static SEM_PC
16091 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16092 {
16093 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16095 int UNUSED written = 0;
16096 IADDR UNUSED pc = abuf->addr;
16097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16098
16099 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16100 {
16101 if (EQSI (FLD (f_LI), 1)) {
16102 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16103 }
16104 {
16105 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16106 sim_queue_pc_write (current_cpu, opval);
16107 written |= (1 << 6);
16108 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16109 }
16110 frvbf_model_branch (current_cpu, pc, 2);
16111 }
16112 }
16113
16114 abuf->written = written;
16115 return vpc;
16116 #undef FLD
16117 }
16118
16119 /* ici: ici$pack @($GRi,$GRj) */
16120
16121 static SEM_PC
16122 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16123 {
16124 #define FLD(f) abuf->fields.sfmt_icpl.f
16125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16126 int UNUSED written = 0;
16127 IADDR UNUSED pc = abuf->addr;
16128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16129
16130 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16131
16132 return vpc;
16133 #undef FLD
16134 }
16135
16136 /* dci: dci$pack @($GRi,$GRj) */
16137
16138 static SEM_PC
16139 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16140 {
16141 #define FLD(f) abuf->fields.sfmt_icpl.f
16142 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16143 int UNUSED written = 0;
16144 IADDR UNUSED pc = abuf->addr;
16145 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16146
16147 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16148
16149 return vpc;
16150 #undef FLD
16151 }
16152
16153 /* icei: icei$pack @($GRi,$GRj),$ae */
16154
16155 static SEM_PC
16156 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16157 {
16158 #define FLD(f) abuf->fields.sfmt_icei.f
16159 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16160 int UNUSED written = 0;
16161 IADDR UNUSED pc = abuf->addr;
16162 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16163
16164 if (EQSI (FLD (f_ae), 0)) {
16165 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16166 } else {
16167 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16168 }
16169
16170 return vpc;
16171 #undef FLD
16172 }
16173
16174 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16175
16176 static SEM_PC
16177 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16178 {
16179 #define FLD(f) abuf->fields.sfmt_icei.f
16180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16181 int UNUSED written = 0;
16182 IADDR UNUSED pc = abuf->addr;
16183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16184
16185 if (EQSI (FLD (f_ae), 0)) {
16186 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16187 } else {
16188 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16189 }
16190
16191 return vpc;
16192 #undef FLD
16193 }
16194
16195 /* dcf: dcf$pack @($GRi,$GRj) */
16196
16197 static SEM_PC
16198 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16199 {
16200 #define FLD(f) abuf->fields.sfmt_icpl.f
16201 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16202 int UNUSED written = 0;
16203 IADDR UNUSED pc = abuf->addr;
16204 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16205
16206 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16207
16208 return vpc;
16209 #undef FLD
16210 }
16211
16212 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16213
16214 static SEM_PC
16215 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16216 {
16217 #define FLD(f) abuf->fields.sfmt_icei.f
16218 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16219 int UNUSED written = 0;
16220 IADDR UNUSED pc = abuf->addr;
16221 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16222
16223 if (EQSI (FLD (f_ae), 0)) {
16224 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16225 } else {
16226 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16227 }
16228
16229 return vpc;
16230 #undef FLD
16231 }
16232
16233 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16234
16235 static SEM_PC
16236 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16237 {
16238 #define FLD(f) abuf->fields.sfmt_empty.f
16239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16240 int UNUSED written = 0;
16241 IADDR UNUSED pc = abuf->addr;
16242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16243
16244 ((void) 0); /*nop*/
16245
16246 return vpc;
16247 #undef FLD
16248 }
16249
16250 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16251
16252 static SEM_PC
16253 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16254 {
16255 #define FLD(f) abuf->fields.sfmt_empty.f
16256 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16257 int UNUSED written = 0;
16258 IADDR UNUSED pc = abuf->addr;
16259 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16260
16261 ((void) 0); /*nop*/
16262
16263 return vpc;
16264 #undef FLD
16265 }
16266
16267 /* itlbi: itlbi$pack @($GRi,$GRj) */
16268
16269 static SEM_PC
16270 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16271 {
16272 #define FLD(f) abuf->fields.sfmt_empty.f
16273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16274 int UNUSED written = 0;
16275 IADDR UNUSED pc = abuf->addr;
16276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16277
16278 ((void) 0); /*nop*/
16279
16280 return vpc;
16281 #undef FLD
16282 }
16283
16284 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16285
16286 static SEM_PC
16287 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16288 {
16289 #define FLD(f) abuf->fields.sfmt_empty.f
16290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16291 int UNUSED written = 0;
16292 IADDR UNUSED pc = abuf->addr;
16293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16294
16295 ((void) 0); /*nop*/
16296
16297 return vpc;
16298 #undef FLD
16299 }
16300
16301 /* icpl: icpl$pack $GRi,$GRj,$lock */
16302
16303 static SEM_PC
16304 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16305 {
16306 #define FLD(f) abuf->fields.sfmt_icpl.f
16307 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16308 int UNUSED written = 0;
16309 IADDR UNUSED pc = abuf->addr;
16310 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16311
16312 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16313
16314 return vpc;
16315 #undef FLD
16316 }
16317
16318 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16319
16320 static SEM_PC
16321 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16322 {
16323 #define FLD(f) abuf->fields.sfmt_icpl.f
16324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16325 int UNUSED written = 0;
16326 IADDR UNUSED pc = abuf->addr;
16327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16328
16329 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16330
16331 return vpc;
16332 #undef FLD
16333 }
16334
16335 /* icul: icul$pack $GRi */
16336
16337 static SEM_PC
16338 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16339 {
16340 #define FLD(f) abuf->fields.sfmt_jmpil.f
16341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16342 int UNUSED written = 0;
16343 IADDR UNUSED pc = abuf->addr;
16344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16345
16346 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16347
16348 return vpc;
16349 #undef FLD
16350 }
16351
16352 /* dcul: dcul$pack $GRi */
16353
16354 static SEM_PC
16355 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16356 {
16357 #define FLD(f) abuf->fields.sfmt_jmpil.f
16358 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16359 int UNUSED written = 0;
16360 IADDR UNUSED pc = abuf->addr;
16361 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16362
16363 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16364
16365 return vpc;
16366 #undef FLD
16367 }
16368
16369 /* bar: bar$pack */
16370
16371 static SEM_PC
16372 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16373 {
16374 #define FLD(f) abuf->fields.sfmt_empty.f
16375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16376 int UNUSED written = 0;
16377 IADDR UNUSED pc = abuf->addr;
16378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16379
16380 ((void) 0); /*nop*/
16381
16382 return vpc;
16383 #undef FLD
16384 }
16385
16386 /* membar: membar$pack */
16387
16388 static SEM_PC
16389 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16390 {
16391 #define FLD(f) abuf->fields.sfmt_empty.f
16392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16393 int UNUSED written = 0;
16394 IADDR UNUSED pc = abuf->addr;
16395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16396
16397 ((void) 0); /*nop*/
16398
16399 return vpc;
16400 #undef FLD
16401 }
16402
16403 /* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16404
16405 static SEM_PC
16406 SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16407 {
16408 #define FLD(f) abuf->fields.sfmt_empty.f
16409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16410 int UNUSED written = 0;
16411 IADDR UNUSED pc = abuf->addr;
16412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16413
16414 ((void) 0); /*nop*/
16415
16416 return vpc;
16417 #undef FLD
16418 }
16419
16420 /* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16421
16422 static SEM_PC
16423 SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16424 {
16425 #define FLD(f) abuf->fields.sfmt_empty.f
16426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16427 int UNUSED written = 0;
16428 IADDR UNUSED pc = abuf->addr;
16429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16430
16431 ((void) 0); /*nop*/
16432
16433 return vpc;
16434 #undef FLD
16435 }
16436
16437 /* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16438
16439 static SEM_PC
16440 SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16441 {
16442 #define FLD(f) abuf->fields.sfmt_empty.f
16443 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16444 int UNUSED written = 0;
16445 IADDR UNUSED pc = abuf->addr;
16446 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16447
16448 ((void) 0); /*nop*/
16449
16450 return vpc;
16451 #undef FLD
16452 }
16453
16454 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16455
16456 static SEM_PC
16457 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16458 {
16459 #define FLD(f) abuf->fields.sfmt_empty.f
16460 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16461 int UNUSED written = 0;
16462 IADDR UNUSED pc = abuf->addr;
16463 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16464
16465 ((void) 0); /*nop*/
16466
16467 return vpc;
16468 #undef FLD
16469 }
16470
16471 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16472
16473 static SEM_PC
16474 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16475 {
16476 #define FLD(f) abuf->fields.sfmt_empty.f
16477 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16478 int UNUSED written = 0;
16479 IADDR UNUSED pc = abuf->addr;
16480 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16481
16482 ((void) 0); /*nop*/
16483
16484 return vpc;
16485 #undef FLD
16486 }
16487
16488 /* clrgr: clrgr$pack $GRk */
16489
16490 static SEM_PC
16491 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16492 {
16493 #define FLD(f) abuf->fields.sfmt_swapi.f
16494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16495 int UNUSED written = 0;
16496 IADDR UNUSED pc = abuf->addr;
16497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16498
16499 {
16500 frv_ref_SI (GET_H_GR (FLD (f_GRk)));
16501 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16502 }
16503
16504 return vpc;
16505 #undef FLD
16506 }
16507
16508 /* clrfr: clrfr$pack $FRk */
16509
16510 static SEM_PC
16511 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16512 {
16513 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16514 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16515 int UNUSED written = 0;
16516 IADDR UNUSED pc = abuf->addr;
16517 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16518
16519 {
16520 frv_ref_SI (GET_H_FR (FLD (f_FRk)));
16521 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16522 }
16523
16524 return vpc;
16525 #undef FLD
16526 }
16527
16528 /* clrga: clrga$pack */
16529
16530 static SEM_PC
16531 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16532 {
16533 #define FLD(f) abuf->fields.sfmt_empty.f
16534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16535 int UNUSED written = 0;
16536 IADDR UNUSED pc = abuf->addr;
16537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16538
16539 frvbf_clear_ne_flags (current_cpu, -1, 0);
16540
16541 return vpc;
16542 #undef FLD
16543 }
16544
16545 /* clrfa: clrfa$pack */
16546
16547 static SEM_PC
16548 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16549 {
16550 #define FLD(f) abuf->fields.sfmt_empty.f
16551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16552 int UNUSED written = 0;
16553 IADDR UNUSED pc = abuf->addr;
16554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16555
16556 frvbf_clear_ne_flags (current_cpu, -1, 1);
16557
16558 return vpc;
16559 #undef FLD
16560 }
16561
16562 /* commitgr: commitgr$pack $GRk */
16563
16564 static SEM_PC
16565 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16566 {
16567 #define FLD(f) abuf->fields.sfmt_setlos.f
16568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16569 int UNUSED written = 0;
16570 IADDR UNUSED pc = abuf->addr;
16571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16572
16573 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16574
16575 return vpc;
16576 #undef FLD
16577 }
16578
16579 /* commitfr: commitfr$pack $FRk */
16580
16581 static SEM_PC
16582 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16583 {
16584 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16586 int UNUSED written = 0;
16587 IADDR UNUSED pc = abuf->addr;
16588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16589
16590 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16591
16592 return vpc;
16593 #undef FLD
16594 }
16595
16596 /* commitga: commitga$pack */
16597
16598 static SEM_PC
16599 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16600 {
16601 #define FLD(f) abuf->fields.sfmt_empty.f
16602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16603 int UNUSED written = 0;
16604 IADDR UNUSED pc = abuf->addr;
16605 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16606
16607 frvbf_commit (current_cpu, -1, 0);
16608
16609 return vpc;
16610 #undef FLD
16611 }
16612
16613 /* commitfa: commitfa$pack */
16614
16615 static SEM_PC
16616 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16617 {
16618 #define FLD(f) abuf->fields.sfmt_empty.f
16619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16620 int UNUSED written = 0;
16621 IADDR UNUSED pc = abuf->addr;
16622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16623
16624 frvbf_commit (current_cpu, -1, 1);
16625
16626 return vpc;
16627 #undef FLD
16628 }
16629
16630 /* fitos: fitos$pack $FRintj,$FRk */
16631
16632 static SEM_PC
16633 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16634 {
16635 #define FLD(f) abuf->fields.sfmt_fditos.f
16636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16637 int UNUSED written = 0;
16638 IADDR UNUSED pc = abuf->addr;
16639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16640
16641 {
16642 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16643 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16644 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16645 }
16646
16647 return vpc;
16648 #undef FLD
16649 }
16650
16651 /* fstoi: fstoi$pack $FRj,$FRintk */
16652
16653 static SEM_PC
16654 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16655 {
16656 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16658 int UNUSED written = 0;
16659 IADDR UNUSED pc = abuf->addr;
16660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16661
16662 {
16663 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16664 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16665 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16666 }
16667
16668 return vpc;
16669 #undef FLD
16670 }
16671
16672 /* fitod: fitod$pack $FRintj,$FRdoublek */
16673
16674 static SEM_PC
16675 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16676 {
16677 #define FLD(f) abuf->fields.sfmt_fitod.f
16678 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16679 int UNUSED written = 0;
16680 IADDR UNUSED pc = abuf->addr;
16681 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16682
16683 {
16684 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16685 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16686 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16687 }
16688
16689 return vpc;
16690 #undef FLD
16691 }
16692
16693 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16694
16695 static SEM_PC
16696 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16697 {
16698 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16700 int UNUSED written = 0;
16701 IADDR UNUSED pc = abuf->addr;
16702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16703
16704 {
16705 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_DOUBLE (FLD (f_FRj)));
16706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16707 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16708 }
16709
16710 return vpc;
16711 #undef FLD
16712 }
16713
16714 /* fditos: fditos$pack $FRintj,$FRk */
16715
16716 static SEM_PC
16717 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16718 {
16719 #define FLD(f) abuf->fields.sfmt_fditos.f
16720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16721 int UNUSED written = 0;
16722 IADDR UNUSED pc = abuf->addr;
16723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16724
16725 {
16726 {
16727 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16728 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16729 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16730 }
16731 {
16732 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)));
16733 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16734 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16735 }
16736 }
16737
16738 return vpc;
16739 #undef FLD
16740 }
16741
16742 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16743
16744 static SEM_PC
16745 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16746 {
16747 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16749 int UNUSED written = 0;
16750 IADDR UNUSED pc = abuf->addr;
16751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16752
16753 {
16754 {
16755 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16757 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16758 }
16759 {
16760 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16761 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16762 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16763 }
16764 }
16765
16766 return vpc;
16767 #undef FLD
16768 }
16769
16770 /* nfditos: nfditos$pack $FRintj,$FRk */
16771
16772 static SEM_PC
16773 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16774 {
16775 #define FLD(f) abuf->fields.sfmt_fditos.f
16776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16777 int UNUSED written = 0;
16778 IADDR UNUSED pc = abuf->addr;
16779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16780
16781 {
16782 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16783 {
16784 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16785 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16786 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16787 }
16788 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16789 {
16790 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)));
16791 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16792 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16793 }
16794 }
16795
16796 return vpc;
16797 #undef FLD
16798 }
16799
16800 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16801
16802 static SEM_PC
16803 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16804 {
16805 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16807 int UNUSED written = 0;
16808 IADDR UNUSED pc = abuf->addr;
16809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16810
16811 {
16812 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16813 {
16814 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16815 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16816 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16817 }
16818 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16819 {
16820 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16822 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16823 }
16824 }
16825
16826 return vpc;
16827 #undef FLD
16828 }
16829
16830 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16831
16832 static SEM_PC
16833 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16834 {
16835 #define FLD(f) abuf->fields.sfmt_cfitos.f
16836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16837 int UNUSED written = 0;
16838 IADDR UNUSED pc = abuf->addr;
16839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16840
16841 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16842 {
16843 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16844 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16845 written |= (1 << 3);
16846 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16847 }
16848 }
16849
16850 abuf->written = written;
16851 return vpc;
16852 #undef FLD
16853 }
16854
16855 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16856
16857 static SEM_PC
16858 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16859 {
16860 #define FLD(f) abuf->fields.sfmt_cfstoi.f
16861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16862 int UNUSED written = 0;
16863 IADDR UNUSED pc = abuf->addr;
16864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16865
16866 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16867 {
16868 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16869 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16870 written |= (1 << 3);
16871 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16872 }
16873 }
16874
16875 abuf->written = written;
16876 return vpc;
16877 #undef FLD
16878 }
16879
16880 /* nfitos: nfitos$pack $FRintj,$FRk */
16881
16882 static SEM_PC
16883 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16884 {
16885 #define FLD(f) abuf->fields.sfmt_fditos.f
16886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16887 int UNUSED written = 0;
16888 IADDR UNUSED pc = abuf->addr;
16889 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16890
16891 {
16892 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16893 {
16894 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16895 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16896 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16897 }
16898 }
16899
16900 return vpc;
16901 #undef FLD
16902 }
16903
16904 /* nfstoi: nfstoi$pack $FRj,$FRintk */
16905
16906 static SEM_PC
16907 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16908 {
16909 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16911 int UNUSED written = 0;
16912 IADDR UNUSED pc = abuf->addr;
16913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16914
16915 {
16916 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16917 {
16918 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16919 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16920 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16921 }
16922 }
16923
16924 return vpc;
16925 #undef FLD
16926 }
16927
16928 /* fmovs: fmovs$pack $FRj,$FRk */
16929
16930 static SEM_PC
16931 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16932 {
16933 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16935 int UNUSED written = 0;
16936 IADDR UNUSED pc = abuf->addr;
16937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16938
16939 {
16940 SF opval = GET_H_FR (FLD (f_FRj));
16941 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16942 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16943 }
16944
16945 return vpc;
16946 #undef FLD
16947 }
16948
16949 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16950
16951 static SEM_PC
16952 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16953 {
16954 #define FLD(f) abuf->fields.sfmt_fmaddd.f
16955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16956 int UNUSED written = 0;
16957 IADDR UNUSED pc = abuf->addr;
16958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16959
16960 {
16961 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16962 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16963 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16964 }
16965
16966 return vpc;
16967 #undef FLD
16968 }
16969
16970 /* fdmovs: fdmovs$pack $FRj,$FRk */
16971
16972 static SEM_PC
16973 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16974 {
16975 #define FLD(f) abuf->fields.sfmt_fdmadds.f
16976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16977 int UNUSED written = 0;
16978 IADDR UNUSED pc = abuf->addr;
16979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16980
16981 {
16982 {
16983 SF opval = GET_H_FR (FLD (f_FRj));
16984 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16985 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16986 }
16987 {
16988 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16989 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16990 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16991 }
16992 }
16993
16994 return vpc;
16995 #undef FLD
16996 }
16997
16998 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
16999
17000 static SEM_PC
17001 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17002 {
17003 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17005 int UNUSED written = 0;
17006 IADDR UNUSED pc = abuf->addr;
17007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17008
17009 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17010 {
17011 SF opval = GET_H_FR (FLD (f_FRj));
17012 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17013 written |= (1 << 3);
17014 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17015 }
17016 }
17017
17018 abuf->written = written;
17019 return vpc;
17020 #undef FLD
17021 }
17022
17023 /* fnegs: fnegs$pack $FRj,$FRk */
17024
17025 static SEM_PC
17026 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17027 {
17028 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17029 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17030 int UNUSED written = 0;
17031 IADDR UNUSED pc = abuf->addr;
17032 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17033
17034 {
17035 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17036 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17037 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17038 }
17039
17040 return vpc;
17041 #undef FLD
17042 }
17043
17044 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17045
17046 static SEM_PC
17047 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17048 {
17049 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17050 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17051 int UNUSED written = 0;
17052 IADDR UNUSED pc = abuf->addr;
17053 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17054
17055 {
17056 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17057 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17058 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17059 }
17060
17061 return vpc;
17062 #undef FLD
17063 }
17064
17065 /* fdnegs: fdnegs$pack $FRj,$FRk */
17066
17067 static SEM_PC
17068 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17069 {
17070 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17072 int UNUSED written = 0;
17073 IADDR UNUSED pc = abuf->addr;
17074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17075
17076 {
17077 {
17078 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17079 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17080 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17081 }
17082 {
17083 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17084 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17085 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17086 }
17087 }
17088
17089 return vpc;
17090 #undef FLD
17091 }
17092
17093 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17094
17095 static SEM_PC
17096 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17097 {
17098 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17100 int UNUSED written = 0;
17101 IADDR UNUSED pc = abuf->addr;
17102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17103
17104 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17105 {
17106 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17107 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17108 written |= (1 << 3);
17109 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17110 }
17111 }
17112
17113 abuf->written = written;
17114 return vpc;
17115 #undef FLD
17116 }
17117
17118 /* fabss: fabss$pack $FRj,$FRk */
17119
17120 static SEM_PC
17121 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17122 {
17123 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17125 int UNUSED written = 0;
17126 IADDR UNUSED pc = abuf->addr;
17127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17128
17129 {
17130 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17131 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17132 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17133 }
17134
17135 return vpc;
17136 #undef FLD
17137 }
17138
17139 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17140
17141 static SEM_PC
17142 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17143 {
17144 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17146 int UNUSED written = 0;
17147 IADDR UNUSED pc = abuf->addr;
17148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17149
17150 {
17151 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17152 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17153 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17154 }
17155
17156 return vpc;
17157 #undef FLD
17158 }
17159
17160 /* fdabss: fdabss$pack $FRj,$FRk */
17161
17162 static SEM_PC
17163 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17164 {
17165 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17167 int UNUSED written = 0;
17168 IADDR UNUSED pc = abuf->addr;
17169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17170
17171 {
17172 {
17173 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17174 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17175 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17176 }
17177 {
17178 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17179 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17180 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17181 }
17182 }
17183
17184 return vpc;
17185 #undef FLD
17186 }
17187
17188 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17189
17190 static SEM_PC
17191 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17192 {
17193 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17194 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17195 int UNUSED written = 0;
17196 IADDR UNUSED pc = abuf->addr;
17197 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17198
17199 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17200 {
17201 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17202 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17203 written |= (1 << 3);
17204 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17205 }
17206 }
17207
17208 abuf->written = written;
17209 return vpc;
17210 #undef FLD
17211 }
17212
17213 /* fsqrts: fsqrts$pack $FRj,$FRk */
17214
17215 static SEM_PC
17216 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17217 {
17218 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17220 int UNUSED written = 0;
17221 IADDR UNUSED pc = abuf->addr;
17222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17223
17224 {
17225 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17226 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17227 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17228 }
17229
17230 return vpc;
17231 #undef FLD
17232 }
17233
17234 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17235
17236 static SEM_PC
17237 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17238 {
17239 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17241 int UNUSED written = 0;
17242 IADDR UNUSED pc = abuf->addr;
17243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17244
17245 {
17246 {
17247 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17248 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17249 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17250 }
17251 {
17252 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17253 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17254 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17255 }
17256 }
17257
17258 return vpc;
17259 #undef FLD
17260 }
17261
17262 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17263
17264 static SEM_PC
17265 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17266 {
17267 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17269 int UNUSED written = 0;
17270 IADDR UNUSED pc = abuf->addr;
17271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17272
17273 {
17274 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17275 {
17276 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17277 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17278 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17279 }
17280 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17281 {
17282 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17283 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17284 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17285 }
17286 }
17287
17288 return vpc;
17289 #undef FLD
17290 }
17291
17292 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17293
17294 static SEM_PC
17295 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17296 {
17297 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17299 int UNUSED written = 0;
17300 IADDR UNUSED pc = abuf->addr;
17301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17302
17303 {
17304 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17305 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17306 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17307 }
17308
17309 return vpc;
17310 #undef FLD
17311 }
17312
17313 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17314
17315 static SEM_PC
17316 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17317 {
17318 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17320 int UNUSED written = 0;
17321 IADDR UNUSED pc = abuf->addr;
17322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17323
17324 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17325 {
17326 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17327 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17328 written |= (1 << 3);
17329 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17330 }
17331 }
17332
17333 abuf->written = written;
17334 return vpc;
17335 #undef FLD
17336 }
17337
17338 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17339
17340 static SEM_PC
17341 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17342 {
17343 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17345 int UNUSED written = 0;
17346 IADDR UNUSED pc = abuf->addr;
17347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17348
17349 {
17350 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17351 {
17352 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17353 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17354 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17355 }
17356 }
17357
17358 return vpc;
17359 #undef FLD
17360 }
17361
17362 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17363
17364 static SEM_PC
17365 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17366 {
17367 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17368 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17369 int UNUSED written = 0;
17370 IADDR UNUSED pc = abuf->addr;
17371 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17372
17373 {
17374 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)));
17375 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17376 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17377 }
17378
17379 return vpc;
17380 #undef FLD
17381 }
17382
17383 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17384
17385 static SEM_PC
17386 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17387 {
17388 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17390 int UNUSED written = 0;
17391 IADDR UNUSED pc = abuf->addr;
17392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17393
17394 {
17395 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)));
17396 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17397 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17398 }
17399
17400 return vpc;
17401 #undef FLD
17402 }
17403
17404 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17405
17406 static SEM_PC
17407 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17408 {
17409 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17411 int UNUSED written = 0;
17412 IADDR UNUSED pc = abuf->addr;
17413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17414
17415 {
17416 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)));
17417 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17418 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17419 }
17420
17421 return vpc;
17422 #undef FLD
17423 }
17424
17425 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17426
17427 static SEM_PC
17428 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17429 {
17430 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17431 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17432 int UNUSED written = 0;
17433 IADDR UNUSED pc = abuf->addr;
17434 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17435
17436 {
17437 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)));
17438 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17439 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17440 }
17441
17442 return vpc;
17443 #undef FLD
17444 }
17445
17446 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17447
17448 static SEM_PC
17449 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17450 {
17451 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17452 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17453 int UNUSED written = 0;
17454 IADDR UNUSED pc = abuf->addr;
17455 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17456
17457 {
17458 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)));
17459 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17460 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17461 }
17462
17463 return vpc;
17464 #undef FLD
17465 }
17466
17467 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17468
17469 static SEM_PC
17470 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17471 {
17472 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17473 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17474 int UNUSED written = 0;
17475 IADDR UNUSED pc = abuf->addr;
17476 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17477
17478 {
17479 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)));
17480 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17481 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17482 }
17483
17484 return vpc;
17485 #undef FLD
17486 }
17487
17488 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17489
17490 static SEM_PC
17491 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17492 {
17493 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17495 int UNUSED written = 0;
17496 IADDR UNUSED pc = abuf->addr;
17497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17498
17499 {
17500 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)));
17501 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17502 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17503 }
17504
17505 return vpc;
17506 #undef FLD
17507 }
17508
17509 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17510
17511 static SEM_PC
17512 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17513 {
17514 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17516 int UNUSED written = 0;
17517 IADDR UNUSED pc = abuf->addr;
17518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17519
17520 {
17521 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)));
17522 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17523 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17524 }
17525
17526 return vpc;
17527 #undef FLD
17528 }
17529
17530 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17531
17532 static SEM_PC
17533 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17534 {
17535 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17536 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17537 int UNUSED written = 0;
17538 IADDR UNUSED pc = abuf->addr;
17539 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17540
17541 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17542 {
17543 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)));
17544 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17545 written |= (1 << 4);
17546 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17547 }
17548 }
17549
17550 abuf->written = written;
17551 return vpc;
17552 #undef FLD
17553 }
17554
17555 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17556
17557 static SEM_PC
17558 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17559 {
17560 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17562 int UNUSED written = 0;
17563 IADDR UNUSED pc = abuf->addr;
17564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17565
17566 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17567 {
17568 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)));
17569 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17570 written |= (1 << 4);
17571 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17572 }
17573 }
17574
17575 abuf->written = written;
17576 return vpc;
17577 #undef FLD
17578 }
17579
17580 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17581
17582 static SEM_PC
17583 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17584 {
17585 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17587 int UNUSED written = 0;
17588 IADDR UNUSED pc = abuf->addr;
17589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17590
17591 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17592 {
17593 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)));
17594 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17595 written |= (1 << 4);
17596 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17597 }
17598 }
17599
17600 abuf->written = written;
17601 return vpc;
17602 #undef FLD
17603 }
17604
17605 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17606
17607 static SEM_PC
17608 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17609 {
17610 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17611 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17612 int UNUSED written = 0;
17613 IADDR UNUSED pc = abuf->addr;
17614 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17615
17616 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17617 {
17618 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17619 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17620 written |= (1 << 4);
17621 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17622 }
17623 }
17624
17625 abuf->written = written;
17626 return vpc;
17627 #undef FLD
17628 }
17629
17630 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17631
17632 static SEM_PC
17633 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17634 {
17635 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17637 int UNUSED written = 0;
17638 IADDR UNUSED pc = abuf->addr;
17639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17640
17641 {
17642 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17643 {
17644 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)));
17645 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17646 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17647 }
17648 }
17649
17650 return vpc;
17651 #undef FLD
17652 }
17653
17654 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17655
17656 static SEM_PC
17657 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17658 {
17659 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17661 int UNUSED written = 0;
17662 IADDR UNUSED pc = abuf->addr;
17663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17664
17665 {
17666 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17667 {
17668 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)));
17669 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17670 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17671 }
17672 }
17673
17674 return vpc;
17675 #undef FLD
17676 }
17677
17678 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17679
17680 static SEM_PC
17681 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17682 {
17683 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17684 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17685 int UNUSED written = 0;
17686 IADDR UNUSED pc = abuf->addr;
17687 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17688
17689 {
17690 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17691 {
17692 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)));
17693 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17694 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17695 }
17696 }
17697
17698 return vpc;
17699 #undef FLD
17700 }
17701
17702 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17703
17704 static SEM_PC
17705 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17706 {
17707 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17708 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17709 int UNUSED written = 0;
17710 IADDR UNUSED pc = abuf->addr;
17711 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17712
17713 {
17714 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17715 {
17716 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)));
17717 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17718 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17719 }
17720 }
17721
17722 return vpc;
17723 #undef FLD
17724 }
17725
17726 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17727
17728 static SEM_PC
17729 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17730 {
17731 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17733 int UNUSED written = 0;
17734 IADDR UNUSED pc = abuf->addr;
17735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17736
17737 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)))) {
17738 {
17739 UQI opval = 2;
17740 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17741 written |= (1 << 2);
17742 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17743 }
17744 } else {
17745 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)))) {
17746 {
17747 UQI opval = 8;
17748 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17749 written |= (1 << 2);
17750 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17751 }
17752 } else {
17753 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)))) {
17754 {
17755 UQI opval = 4;
17756 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17757 written |= (1 << 2);
17758 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17759 }
17760 } else {
17761 {
17762 UQI opval = 1;
17763 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17764 written |= (1 << 2);
17765 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17766 }
17767 }
17768 }
17769 }
17770
17771 abuf->written = written;
17772 return vpc;
17773 #undef FLD
17774 }
17775
17776 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17777
17778 static SEM_PC
17779 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17780 {
17781 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17783 int UNUSED written = 0;
17784 IADDR UNUSED pc = abuf->addr;
17785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17786
17787 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)))) {
17788 {
17789 UQI opval = 2;
17790 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17791 written |= (1 << 2);
17792 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17793 }
17794 } else {
17795 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)))) {
17796 {
17797 UQI opval = 8;
17798 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17799 written |= (1 << 2);
17800 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17801 }
17802 } else {
17803 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)))) {
17804 {
17805 UQI opval = 4;
17806 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17807 written |= (1 << 2);
17808 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17809 }
17810 } else {
17811 {
17812 UQI opval = 1;
17813 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17814 written |= (1 << 2);
17815 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17816 }
17817 }
17818 }
17819 }
17820
17821 abuf->written = written;
17822 return vpc;
17823 #undef FLD
17824 }
17825
17826 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17827
17828 static SEM_PC
17829 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17830 {
17831 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17833 int UNUSED written = 0;
17834 IADDR UNUSED pc = abuf->addr;
17835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17836
17837 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17838 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)))) {
17839 {
17840 UQI opval = 2;
17841 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17842 written |= (1 << 4);
17843 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17844 }
17845 } else {
17846 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)))) {
17847 {
17848 UQI opval = 8;
17849 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17850 written |= (1 << 4);
17851 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17852 }
17853 } else {
17854 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)))) {
17855 {
17856 UQI opval = 4;
17857 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17858 written |= (1 << 4);
17859 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17860 }
17861 } else {
17862 {
17863 UQI opval = 1;
17864 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17865 written |= (1 << 4);
17866 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17867 }
17868 }
17869 }
17870 }
17871 }
17872
17873 abuf->written = written;
17874 return vpc;
17875 #undef FLD
17876 }
17877
17878 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17879
17880 static SEM_PC
17881 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17882 {
17883 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
17884 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17885 int UNUSED written = 0;
17886 IADDR UNUSED pc = abuf->addr;
17887 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17888
17889 {
17890 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)))) {
17891 {
17892 UQI opval = 2;
17893 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17894 written |= (1 << 7);
17895 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17896 }
17897 } else {
17898 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)))) {
17899 {
17900 UQI opval = 8;
17901 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17902 written |= (1 << 7);
17903 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17904 }
17905 } else {
17906 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)))) {
17907 {
17908 UQI opval = 4;
17909 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17910 written |= (1 << 7);
17911 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17912 }
17913 } else {
17914 {
17915 UQI opval = 1;
17916 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17917 written |= (1 << 7);
17918 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17919 }
17920 }
17921 }
17922 }
17923 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)))) {
17924 {
17925 UQI opval = 2;
17926 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17927 written |= (1 << 8);
17928 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17929 }
17930 } else {
17931 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)))) {
17932 {
17933 UQI opval = 8;
17934 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17935 written |= (1 << 8);
17936 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17937 }
17938 } else {
17939 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)))) {
17940 {
17941 UQI opval = 4;
17942 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17943 written |= (1 << 8);
17944 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17945 }
17946 } else {
17947 {
17948 UQI opval = 1;
17949 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17950 written |= (1 << 8);
17951 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17952 }
17953 }
17954 }
17955 }
17956 }
17957
17958 abuf->written = written;
17959 return vpc;
17960 #undef FLD
17961 }
17962
17963 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17964
17965 static SEM_PC
17966 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17967 {
17968 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17969 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17970 int UNUSED written = 0;
17971 IADDR UNUSED pc = abuf->addr;
17972 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17973
17974 {
17975 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)));
17976 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17977 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17978 }
17979
17980 return vpc;
17981 #undef FLD
17982 }
17983
17984 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17985
17986 static SEM_PC
17987 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17988 {
17989 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17990 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17991 int UNUSED written = 0;
17992 IADDR UNUSED pc = abuf->addr;
17993 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17994
17995 {
17996 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)));
17997 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17998 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17999 }
18000
18001 return vpc;
18002 #undef FLD
18003 }
18004
18005 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18006
18007 static SEM_PC
18008 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18009 {
18010 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18012 int UNUSED written = 0;
18013 IADDR UNUSED pc = abuf->addr;
18014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18015
18016 {
18017 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)));
18018 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18019 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18020 }
18021
18022 return vpc;
18023 #undef FLD
18024 }
18025
18026 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18027
18028 static SEM_PC
18029 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18030 {
18031 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18033 int UNUSED written = 0;
18034 IADDR UNUSED pc = abuf->addr;
18035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18036
18037 {
18038 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)));
18039 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18040 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18041 }
18042
18043 return vpc;
18044 #undef FLD
18045 }
18046
18047 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18048
18049 static SEM_PC
18050 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18051 {
18052 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18054 int UNUSED written = 0;
18055 IADDR UNUSED pc = abuf->addr;
18056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18057
18058 {
18059 {
18060 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)));
18061 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18062 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18063 }
18064 {
18065 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)));
18066 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18067 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18068 }
18069 }
18070
18071 return vpc;
18072 #undef FLD
18073 }
18074
18075 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18076
18077 static SEM_PC
18078 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18079 {
18080 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18081 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18082 int UNUSED written = 0;
18083 IADDR UNUSED pc = abuf->addr;
18084 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18085
18086 {
18087 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18088 {
18089 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)));
18090 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18091 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18092 }
18093 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18094 {
18095 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)));
18096 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18097 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18098 }
18099 }
18100
18101 return vpc;
18102 #undef FLD
18103 }
18104
18105 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18106
18107 static SEM_PC
18108 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18109 {
18110 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18111 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18112 int UNUSED written = 0;
18113 IADDR UNUSED pc = abuf->addr;
18114 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18115
18116 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18117 {
18118 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)));
18119 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18120 written |= (1 << 5);
18121 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18122 }
18123 }
18124
18125 abuf->written = written;
18126 return vpc;
18127 #undef FLD
18128 }
18129
18130 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18131
18132 static SEM_PC
18133 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18134 {
18135 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18137 int UNUSED written = 0;
18138 IADDR UNUSED pc = abuf->addr;
18139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18140
18141 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18142 {
18143 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)));
18144 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18145 written |= (1 << 5);
18146 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18147 }
18148 }
18149
18150 abuf->written = written;
18151 return vpc;
18152 #undef FLD
18153 }
18154
18155 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18156
18157 static SEM_PC
18158 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18159 {
18160 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18162 int UNUSED written = 0;
18163 IADDR UNUSED pc = abuf->addr;
18164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18165
18166 {
18167 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18168 {
18169 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)));
18170 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18171 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18172 }
18173 }
18174
18175 return vpc;
18176 #undef FLD
18177 }
18178
18179 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18180
18181 static SEM_PC
18182 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18183 {
18184 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18186 int UNUSED written = 0;
18187 IADDR UNUSED pc = abuf->addr;
18188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18189
18190 {
18191 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18192 {
18193 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)));
18194 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18195 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18196 }
18197 }
18198
18199 return vpc;
18200 #undef FLD
18201 }
18202
18203 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18204
18205 static SEM_PC
18206 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18207 {
18208 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18210 int UNUSED written = 0;
18211 IADDR UNUSED pc = abuf->addr;
18212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18213
18214 {
18215 {
18216 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)));
18217 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18218 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18219 }
18220 {
18221 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)));
18222 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18223 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18224 }
18225 }
18226
18227 return vpc;
18228 #undef FLD
18229 }
18230
18231 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18232
18233 static SEM_PC
18234 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18235 {
18236 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18238 int UNUSED written = 0;
18239 IADDR UNUSED pc = abuf->addr;
18240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18241
18242 {
18243 {
18244 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)));
18245 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18246 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18247 }
18248 {
18249 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)));
18250 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18251 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18252 }
18253 }
18254
18255 return vpc;
18256 #undef FLD
18257 }
18258
18259 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18260
18261 static SEM_PC
18262 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18263 {
18264 #define FLD(f) abuf->fields.sfmt_fdmas.f
18265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18266 int UNUSED written = 0;
18267 IADDR UNUSED pc = abuf->addr;
18268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18269
18270 {
18271 {
18272 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)));
18273 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18274 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18275 }
18276 {
18277 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)));
18278 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18279 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18280 }
18281 {
18282 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)));
18283 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18284 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18285 }
18286 {
18287 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)));
18288 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18289 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18290 }
18291 }
18292
18293 return vpc;
18294 #undef FLD
18295 }
18296
18297 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18298
18299 static SEM_PC
18300 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18301 {
18302 #define FLD(f) abuf->fields.sfmt_fdmas.f
18303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18304 int UNUSED written = 0;
18305 IADDR UNUSED pc = abuf->addr;
18306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18307
18308 {
18309 {
18310 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)));
18311 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18312 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18313 }
18314 {
18315 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)));
18316 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18317 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18318 }
18319 {
18320 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)));
18321 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18322 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18323 }
18324 {
18325 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)));
18326 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18327 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18328 }
18329 }
18330
18331 return vpc;
18332 #undef FLD
18333 }
18334
18335 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18336
18337 static SEM_PC
18338 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18339 {
18340 #define FLD(f) abuf->fields.sfmt_fdmas.f
18341 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18342 int UNUSED written = 0;
18343 IADDR UNUSED pc = abuf->addr;
18344 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18345
18346 {
18347 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18348 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18349 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18350 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18351 {
18352 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)));
18353 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18354 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18355 }
18356 {
18357 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)));
18358 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18359 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18360 }
18361 {
18362 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)));
18363 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18364 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18365 }
18366 {
18367 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)));
18368 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18369 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18370 }
18371 }
18372
18373 return vpc;
18374 #undef FLD
18375 }
18376
18377 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18378
18379 static SEM_PC
18380 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18381 {
18382 #define FLD(f) abuf->fields.sfmt_fdmas.f
18383 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18384 int UNUSED written = 0;
18385 IADDR UNUSED pc = abuf->addr;
18386 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18387
18388 {
18389 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18390 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18391 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18392 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18393 {
18394 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)));
18395 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18396 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18397 }
18398 {
18399 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)));
18400 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18401 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18402 }
18403 {
18404 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)));
18405 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18406 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18407 }
18408 {
18409 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)));
18410 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18411 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18412 }
18413 }
18414
18415 return vpc;
18416 #undef FLD
18417 }
18418
18419 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18420
18421 static SEM_PC
18422 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18423 {
18424 #define FLD(f) abuf->fields.sfmt_cfmas.f
18425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18426 int UNUSED written = 0;
18427 IADDR UNUSED pc = abuf->addr;
18428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18429
18430 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18431 {
18432 {
18433 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)));
18434 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18435 written |= (1 << 9);
18436 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18437 }
18438 {
18439 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)));
18440 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18441 written |= (1 << 10);
18442 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18443 }
18444 }
18445 }
18446
18447 abuf->written = written;
18448 return vpc;
18449 #undef FLD
18450 }
18451
18452 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18453
18454 static SEM_PC
18455 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18456 {
18457 #define FLD(f) abuf->fields.sfmt_cfmas.f
18458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18459 int UNUSED written = 0;
18460 IADDR UNUSED pc = abuf->addr;
18461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18462
18463 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18464 {
18465 {
18466 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)));
18467 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18468 written |= (1 << 9);
18469 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18470 }
18471 {
18472 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)));
18473 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18474 written |= (1 << 10);
18475 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18476 }
18477 }
18478 }
18479
18480 abuf->written = written;
18481 return vpc;
18482 #undef FLD
18483 }
18484
18485 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18486
18487 static SEM_PC
18488 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18489 {
18490 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18491 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18492 int UNUSED written = 0;
18493 IADDR UNUSED pc = abuf->addr;
18494 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18495
18496 {
18497 {
18498 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)))));
18499 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18500 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18501 }
18502 {
18503 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)))));
18504 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18505 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18506 }
18507 }
18508
18509 return vpc;
18510 #undef FLD
18511 }
18512
18513 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18514
18515 static SEM_PC
18516 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18517 {
18518 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18520 int UNUSED written = 0;
18521 IADDR UNUSED pc = abuf->addr;
18522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18523
18524 {
18525 {
18526 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)))));
18527 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18528 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18529 }
18530 {
18531 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)))));
18532 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18533 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18534 }
18535 }
18536
18537 return vpc;
18538 #undef FLD
18539 }
18540
18541 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18542
18543 static SEM_PC
18544 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18545 {
18546 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18548 int UNUSED written = 0;
18549 IADDR UNUSED pc = abuf->addr;
18550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18551
18552 {
18553 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18554 {
18555 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)));
18556 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18557 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18558 }
18559 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18560 {
18561 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)));
18562 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18563 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18564 }
18565 }
18566
18567 return vpc;
18568 #undef FLD
18569 }
18570
18571 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18572
18573 static SEM_PC
18574 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18575 {
18576 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18577 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18578 int UNUSED written = 0;
18579 IADDR UNUSED pc = abuf->addr;
18580 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18581
18582 {
18583 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18584 {
18585 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)));
18586 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18587 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18588 }
18589 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18590 {
18591 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)));
18592 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18593 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18594 }
18595 }
18596
18597 return vpc;
18598 #undef FLD
18599 }
18600
18601 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18602
18603 static SEM_PC
18604 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18605 {
18606 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18608 int UNUSED written = 0;
18609 IADDR UNUSED pc = abuf->addr;
18610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18611
18612 {
18613 {
18614 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)));
18615 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18616 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18617 }
18618 {
18619 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)));
18620 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18621 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18622 }
18623 }
18624
18625 return vpc;
18626 #undef FLD
18627 }
18628
18629 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18630
18631 static SEM_PC
18632 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18633 {
18634 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18635 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18636 int UNUSED written = 0;
18637 IADDR UNUSED pc = abuf->addr;
18638 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18639
18640 {
18641 {
18642 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)));
18643 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18644 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18645 }
18646 {
18647 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)));
18648 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18649 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18650 }
18651 }
18652
18653 return vpc;
18654 #undef FLD
18655 }
18656
18657 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18658
18659 static SEM_PC
18660 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18661 {
18662 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18663 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18664 int UNUSED written = 0;
18665 IADDR UNUSED pc = abuf->addr;
18666 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18667
18668 {
18669 {
18670 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)));
18671 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18672 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18673 }
18674 {
18675 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)));
18676 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18677 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18678 }
18679 }
18680
18681 return vpc;
18682 #undef FLD
18683 }
18684
18685 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18686
18687 static SEM_PC
18688 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18689 {
18690 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18692 int UNUSED written = 0;
18693 IADDR UNUSED pc = abuf->addr;
18694 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18695
18696 {
18697 {
18698 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)));
18699 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18700 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18701 }
18702 {
18703 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)));
18704 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18705 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18706 }
18707 }
18708
18709 return vpc;
18710 #undef FLD
18711 }
18712
18713 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18714
18715 static SEM_PC
18716 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18717 {
18718 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18719 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18720 int UNUSED written = 0;
18721 IADDR UNUSED pc = abuf->addr;
18722 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18723
18724 {
18725 {
18726 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)));
18727 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18728 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18729 }
18730 {
18731 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)));
18732 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18733 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18734 }
18735 }
18736
18737 return vpc;
18738 #undef FLD
18739 }
18740
18741 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18742
18743 static SEM_PC
18744 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18745 {
18746 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18748 int UNUSED written = 0;
18749 IADDR UNUSED pc = abuf->addr;
18750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18751
18752 {
18753 {
18754 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)));
18755 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18756 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18757 }
18758 {
18759 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)));
18760 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18761 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18762 }
18763 }
18764
18765 return vpc;
18766 #undef FLD
18767 }
18768
18769 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18770
18771 static SEM_PC
18772 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18773 {
18774 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18775 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18776 int UNUSED written = 0;
18777 IADDR UNUSED pc = abuf->addr;
18778 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18779
18780 {
18781 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18782 {
18783 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)));
18784 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18785 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18786 }
18787 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18788 {
18789 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)));
18790 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18791 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18792 }
18793 }
18794
18795 return vpc;
18796 #undef FLD
18797 }
18798
18799 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18800
18801 static SEM_PC
18802 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18803 {
18804 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18806 int UNUSED written = 0;
18807 IADDR UNUSED pc = abuf->addr;
18808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18809
18810 {
18811 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18812 {
18813 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)));
18814 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18815 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18816 }
18817 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18818 {
18819 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)));
18820 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18821 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18822 }
18823 }
18824
18825 return vpc;
18826 #undef FLD
18827 }
18828
18829 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18830
18831 static SEM_PC
18832 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18833 {
18834 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18835 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18836 int UNUSED written = 0;
18837 IADDR UNUSED pc = abuf->addr;
18838 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18839
18840 {
18841 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18842 {
18843 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)));
18844 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18845 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18846 }
18847 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18848 {
18849 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)));
18850 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18851 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18852 }
18853 }
18854
18855 return vpc;
18856 #undef FLD
18857 }
18858
18859 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18860
18861 static SEM_PC
18862 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18863 {
18864 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18866 int UNUSED written = 0;
18867 IADDR UNUSED pc = abuf->addr;
18868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18869
18870 {
18871 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18872 {
18873 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)));
18874 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18875 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18876 }
18877 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18878 {
18879 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)));
18880 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18881 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18882 }
18883 }
18884
18885 return vpc;
18886 #undef FLD
18887 }
18888
18889 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18890
18891 static SEM_PC
18892 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18893 {
18894 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18896 int UNUSED written = 0;
18897 IADDR UNUSED pc = abuf->addr;
18898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18899
18900 {
18901 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18902 {
18903 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)));
18904 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18905 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18906 }
18907 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18908 {
18909 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)));
18910 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18911 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18912 }
18913 }
18914
18915 return vpc;
18916 #undef FLD
18917 }
18918
18919 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18920
18921 static SEM_PC
18922 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18923 {
18924 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18925 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18926 int UNUSED written = 0;
18927 IADDR UNUSED pc = abuf->addr;
18928 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18929
18930 {
18931 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18932 {
18933 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)));
18934 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18935 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18936 }
18937 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18938 {
18939 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)));
18940 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18941 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18942 }
18943 }
18944
18945 return vpc;
18946 #undef FLD
18947 }
18948
18949 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18950
18951 static SEM_PC
18952 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18953 {
18954 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18956 int UNUSED written = 0;
18957 IADDR UNUSED pc = abuf->addr;
18958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18959
18960 {
18961 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18962 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)))) {
18963 {
18964 UQI opval = 2;
18965 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18966 written |= (1 << 8);
18967 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18968 }
18969 } else {
18970 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)))) {
18971 {
18972 UQI opval = 8;
18973 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18974 written |= (1 << 8);
18975 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18976 }
18977 } else {
18978 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)))) {
18979 {
18980 UQI opval = 4;
18981 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18982 written |= (1 << 8);
18983 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18984 }
18985 } else {
18986 {
18987 UQI opval = 1;
18988 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18989 written |= (1 << 8);
18990 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18991 }
18992 }
18993 }
18994 }
18995 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18996 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)))) {
18997 {
18998 UQI opval = 2;
18999 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19000 written |= (1 << 9);
19001 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19002 }
19003 } else {
19004 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)))) {
19005 {
19006 UQI opval = 8;
19007 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19008 written |= (1 << 9);
19009 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19010 }
19011 } else {
19012 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)))) {
19013 {
19014 UQI opval = 4;
19015 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19016 written |= (1 << 9);
19017 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19018 }
19019 } else {
19020 {
19021 UQI opval = 1;
19022 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19023 written |= (1 << 9);
19024 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19025 }
19026 }
19027 }
19028 }
19029 }
19030
19031 abuf->written = written;
19032 return vpc;
19033 #undef FLD
19034 }
19035
19036 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19037
19038 static SEM_PC
19039 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19040 {
19041 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19043 int UNUSED written = 0;
19044 IADDR UNUSED pc = abuf->addr;
19045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19046
19047 {
19048 UHI opval = FLD (f_u12);
19049 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19050 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19051 }
19052
19053 return vpc;
19054 #undef FLD
19055 }
19056
19057 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19058
19059 static SEM_PC
19060 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19061 {
19062 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19064 int UNUSED written = 0;
19065 IADDR UNUSED pc = abuf->addr;
19066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19067
19068 {
19069 UHI opval = FLD (f_u12);
19070 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19071 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19072 }
19073
19074 return vpc;
19075 #undef FLD
19076 }
19077
19078 /* mhdsets: mhdsets$pack $u12,$FRintk */
19079
19080 static SEM_PC
19081 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19082 {
19083 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19085 int UNUSED written = 0;
19086 IADDR UNUSED pc = abuf->addr;
19087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19088
19089 {
19090 {
19091 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19092 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19093 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19094 }
19095 {
19096 UHI opval = FLD (f_u12);
19097 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19098 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19099 }
19100 {
19101 UHI opval = FLD (f_u12);
19102 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19103 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19104 }
19105 }
19106
19107 return vpc;
19108 #undef FLD
19109 }
19110
19111 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19112
19113 static SEM_PC
19114 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19115 {
19116 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19117 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19118 int UNUSED written = 0;
19119 IADDR UNUSED pc = abuf->addr;
19120 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19121
19122 {
19123 HI tmp_tmp;
19124 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19125 tmp_tmp = ANDHI (tmp_tmp, 2047);
19126 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19127 {
19128 UHI opval = tmp_tmp;
19129 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19130 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19131 }
19132 }
19133
19134 return vpc;
19135 #undef FLD
19136 }
19137
19138 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19139
19140 static SEM_PC
19141 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19142 {
19143 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19145 int UNUSED written = 0;
19146 IADDR UNUSED pc = abuf->addr;
19147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19148
19149 {
19150 HI tmp_tmp;
19151 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19152 tmp_tmp = ANDHI (tmp_tmp, 2047);
19153 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19154 {
19155 UHI opval = tmp_tmp;
19156 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19157 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19158 }
19159 }
19160
19161 return vpc;
19162 #undef FLD
19163 }
19164
19165 /* mhdseth: mhdseth$pack $s5,$FRintk */
19166
19167 static SEM_PC
19168 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19169 {
19170 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19171 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19172 int UNUSED written = 0;
19173 IADDR UNUSED pc = abuf->addr;
19174 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19175
19176 {
19177 {
19178 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19179 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19180 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19181 }
19182 {
19183 HI tmp_tmp;
19184 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
19185 tmp_tmp = ANDHI (tmp_tmp, 2047);
19186 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19187 {
19188 UHI opval = tmp_tmp;
19189 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19190 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19191 }
19192 }
19193 {
19194 HI tmp_tmp;
19195 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
19196 tmp_tmp = ANDHI (tmp_tmp, 2047);
19197 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19198 {
19199 UHI opval = tmp_tmp;
19200 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19201 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19202 }
19203 }
19204 }
19205
19206 return vpc;
19207 #undef FLD
19208 }
19209
19210 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19211
19212 static SEM_PC
19213 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19214 {
19215 #define FLD(f) abuf->fields.sfmt_mwcut.f
19216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19217 int UNUSED written = 0;
19218 IADDR UNUSED pc = abuf->addr;
19219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19220
19221 {
19222 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19224 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19225 }
19226
19227 return vpc;
19228 #undef FLD
19229 }
19230
19231 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19232
19233 static SEM_PC
19234 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19235 {
19236 #define FLD(f) abuf->fields.sfmt_mwcut.f
19237 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19238 int UNUSED written = 0;
19239 IADDR UNUSED pc = abuf->addr;
19240 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19241
19242 {
19243 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19244 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19245 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19246 }
19247
19248 return vpc;
19249 #undef FLD
19250 }
19251
19252 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19253
19254 static SEM_PC
19255 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19256 {
19257 #define FLD(f) abuf->fields.sfmt_mwcut.f
19258 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19259 int UNUSED written = 0;
19260 IADDR UNUSED pc = abuf->addr;
19261 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19262
19263 {
19264 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19265 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19266 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19267 }
19268
19269 return vpc;
19270 #undef FLD
19271 }
19272
19273 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19274
19275 static SEM_PC
19276 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19277 {
19278 #define FLD(f) abuf->fields.sfmt_cmand.f
19279 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19280 int UNUSED written = 0;
19281 IADDR UNUSED pc = abuf->addr;
19282 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19283
19284 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19285 {
19286 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19287 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19288 written |= (1 << 4);
19289 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19290 }
19291 }
19292
19293 abuf->written = written;
19294 return vpc;
19295 #undef FLD
19296 }
19297
19298 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19299
19300 static SEM_PC
19301 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19302 {
19303 #define FLD(f) abuf->fields.sfmt_cmand.f
19304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19305 int UNUSED written = 0;
19306 IADDR UNUSED pc = abuf->addr;
19307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19308
19309 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19310 {
19311 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19312 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19313 written |= (1 << 4);
19314 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19315 }
19316 }
19317
19318 abuf->written = written;
19319 return vpc;
19320 #undef FLD
19321 }
19322
19323 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19324
19325 static SEM_PC
19326 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19327 {
19328 #define FLD(f) abuf->fields.sfmt_cmand.f
19329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19330 int UNUSED written = 0;
19331 IADDR UNUSED pc = abuf->addr;
19332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19333
19334 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19335 {
19336 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19337 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19338 written |= (1 << 4);
19339 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19340 }
19341 }
19342
19343 abuf->written = written;
19344 return vpc;
19345 #undef FLD
19346 }
19347
19348 /* mnot: mnot$pack $FRintj,$FRintk */
19349
19350 static SEM_PC
19351 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19352 {
19353 #define FLD(f) abuf->fields.sfmt_mcut.f
19354 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19355 int UNUSED written = 0;
19356 IADDR UNUSED pc = abuf->addr;
19357 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19358
19359 {
19360 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19361 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19362 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19363 }
19364
19365 return vpc;
19366 #undef FLD
19367 }
19368
19369 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19370
19371 static SEM_PC
19372 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19373 {
19374 #define FLD(f) abuf->fields.sfmt_cmand.f
19375 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19376 int UNUSED written = 0;
19377 IADDR UNUSED pc = abuf->addr;
19378 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19379
19380 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19381 {
19382 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19383 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19384 written |= (1 << 3);
19385 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19386 }
19387 }
19388
19389 abuf->written = written;
19390 return vpc;
19391 #undef FLD
19392 }
19393
19394 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19395
19396 static SEM_PC
19397 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19398 {
19399 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19400 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19401 int UNUSED written = 0;
19402 IADDR UNUSED pc = abuf->addr;
19403 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19404
19405 {
19406 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19407 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19408 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19409 }
19410
19411 return vpc;
19412 #undef FLD
19413 }
19414
19415 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19416
19417 static SEM_PC
19418 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19419 {
19420 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19422 int UNUSED written = 0;
19423 IADDR UNUSED pc = abuf->addr;
19424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19425
19426 {
19427 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19428 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19429 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19430 }
19431
19432 return vpc;
19433 #undef FLD
19434 }
19435
19436 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19437
19438 static SEM_PC
19439 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19440 {
19441 #define FLD(f) abuf->fields.sfmt_mwcut.f
19442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19443 int UNUSED written = 0;
19444 IADDR UNUSED pc = abuf->addr;
19445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19446
19447 {
19448 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)));
19449 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19450 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19451 }
19452
19453 return vpc;
19454 #undef FLD
19455 }
19456
19457 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19458
19459 static SEM_PC
19460 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19461 {
19462 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19464 int UNUSED written = 0;
19465 IADDR UNUSED pc = abuf->addr;
19466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19467
19468 {
19469 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));
19470 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19471 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19472 }
19473
19474 return vpc;
19475 #undef FLD
19476 }
19477
19478 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19479
19480 static SEM_PC
19481 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19482 {
19483 #define FLD(f) abuf->fields.sfmt_mcut.f
19484 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19485 int UNUSED written = 0;
19486 IADDR UNUSED pc = abuf->addr;
19487 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19488
19489 {
19490 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19491 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19492 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19493 }
19494
19495 return vpc;
19496 #undef FLD
19497 }
19498
19499 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19500
19501 static SEM_PC
19502 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19503 {
19504 #define FLD(f) abuf->fields.sfmt_mcuti.f
19505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19506 int UNUSED written = 0;
19507 IADDR UNUSED pc = abuf->addr;
19508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19509
19510 {
19511 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19512 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19513 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19514 }
19515
19516 return vpc;
19517 #undef FLD
19518 }
19519
19520 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19521
19522 static SEM_PC
19523 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19524 {
19525 #define FLD(f) abuf->fields.sfmt_mcut.f
19526 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19527 int UNUSED written = 0;
19528 IADDR UNUSED pc = abuf->addr;
19529 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19530
19531 {
19532 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19533 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19534 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19535 }
19536
19537 return vpc;
19538 #undef FLD
19539 }
19540
19541 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19542
19543 static SEM_PC
19544 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19545 {
19546 #define FLD(f) abuf->fields.sfmt_mcuti.f
19547 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19548 int UNUSED written = 0;
19549 IADDR UNUSED pc = abuf->addr;
19550 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19551
19552 {
19553 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19554 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19555 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19556 }
19557
19558 return vpc;
19559 #undef FLD
19560 }
19561
19562 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19563
19564 static SEM_PC
19565 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19566 {
19567 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19569 int UNUSED written = 0;
19570 IADDR UNUSED pc = abuf->addr;
19571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19572
19573 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19574 frvbf_media_acc_not_aligned (current_cpu);
19575 } else {
19576 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19577 frvbf_media_register_not_aligned (current_cpu);
19578 } else {
19579 {
19580 {
19581 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19582 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19583 written |= (1 << 5);
19584 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19585 }
19586 {
19587 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19588 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19589 written |= (1 << 6);
19590 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19591 }
19592 }
19593 }
19594 }
19595
19596 abuf->written = written;
19597 return vpc;
19598 #undef FLD
19599 }
19600
19601 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19602
19603 static SEM_PC
19604 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19605 {
19606 #define FLD(f) abuf->fields.sfmt_mwcut.f
19607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19608 int UNUSED written = 0;
19609 IADDR UNUSED pc = abuf->addr;
19610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19611
19612 {
19613 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19614 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19615 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19616 }
19617
19618 return vpc;
19619 #undef FLD
19620 }
19621
19622 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19623
19624 static SEM_PC
19625 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19626 {
19627 #define FLD(f) abuf->fields.sfmt_msllhi.f
19628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19629 int UNUSED written = 0;
19630 IADDR UNUSED pc = abuf->addr;
19631 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19632
19633 {
19634 {
19635 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19636 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19637 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19638 }
19639 {
19640 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19641 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19642 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19643 }
19644 {
19645 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19646 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19647 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19648 }
19649 {
19650 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19651 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19652 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19653 }
19654 }
19655
19656 return vpc;
19657 #undef FLD
19658 }
19659
19660 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19661
19662 static SEM_PC
19663 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19664 {
19665 #define FLD(f) abuf->fields.sfmt_msllhi.f
19666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19667 int UNUSED written = 0;
19668 IADDR UNUSED pc = abuf->addr;
19669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19670
19671 {
19672 {
19673 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19674 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19675 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19676 }
19677 {
19678 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19680 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19681 }
19682 {
19683 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19684 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19685 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19686 }
19687 {
19688 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19689 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19690 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19691 }
19692 }
19693
19694 return vpc;
19695 #undef FLD
19696 }
19697
19698 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19699
19700 static SEM_PC
19701 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19702 {
19703 #define FLD(f) abuf->fields.sfmt_msllhi.f
19704 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19705 int UNUSED written = 0;
19706 IADDR UNUSED pc = abuf->addr;
19707 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19708
19709 {
19710 {
19711 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19712 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19713 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19714 }
19715 {
19716 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19717 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19718 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19719 }
19720 {
19721 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19723 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19724 }
19725 {
19726 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19727 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19728 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19729 }
19730 }
19731
19732 return vpc;
19733 #undef FLD
19734 }
19735
19736 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19737
19738 static SEM_PC
19739 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19740 {
19741 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19742 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19743 int UNUSED written = 0;
19744 IADDR UNUSED pc = abuf->addr;
19745 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19746
19747 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19748 frvbf_media_register_not_aligned (current_cpu);
19749 } else {
19750 {
19751 {
19752 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19753 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19754 written |= (1 << 5);
19755 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19756 }
19757 {
19758 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19759 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19760 written |= (1 << 6);
19761 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19762 }
19763 }
19764 }
19765
19766 abuf->written = written;
19767 return vpc;
19768 #undef FLD
19769 }
19770
19771 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19772
19773 static SEM_PC
19774 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19775 {
19776 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19778 int UNUSED written = 0;
19779 IADDR UNUSED pc = abuf->addr;
19780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19781
19782 {
19783 HI tmp_arg1;
19784 HI tmp_arg2;
19785 HI tmp_shift;
19786 {
19787 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19788 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19789 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19790 }
19791 {
19792 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19793 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19794 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19795 }
19796 tmp_shift = ANDSI (FLD (f_u6), 15);
19797 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
19798 if (NEHI (tmp_shift, 0)) {
19799 {
19800 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
19801 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19802 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19803 }
19804 }
19805 {
19806 UHI opval = tmp_arg1;
19807 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19808 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19809 }
19810 }
19811
19812 return vpc;
19813 #undef FLD
19814 }
19815
19816 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19817
19818 static SEM_PC
19819 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19820 {
19821 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19822 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19823 int UNUSED written = 0;
19824 IADDR UNUSED pc = abuf->addr;
19825 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19826
19827 {
19828 SI tmp_tmp;
19829 SI tmp_shift;
19830 tmp_shift = ANDSI (FLD (f_u6), 31);
19831 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19832 if (NESI (tmp_shift, 0)) {
19833 {
19834 SI tmp_tmp1;
19835 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19836 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19837 }
19838 }
19839 {
19840 SI opval = tmp_tmp;
19841 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19842 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19843 }
19844 }
19845
19846 return vpc;
19847 #undef FLD
19848 }
19849
19850 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19851
19852 static SEM_PC
19853 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19854 {
19855 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
19856 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19857 int UNUSED written = 0;
19858 IADDR UNUSED pc = abuf->addr;
19859 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19860
19861 {
19862 HI tmp_argihi;
19863 HI tmp_argilo;
19864 HI tmp_argjhi;
19865 HI tmp_argjlo;
19866 {
19867 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19868 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19869 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19870 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19871 }
19872 if (GTHI (tmp_argihi, tmp_argjhi)) {
19873 {
19874 UHI opval = tmp_argjhi;
19875 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19876 written |= (1 << 9);
19877 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19878 }
19879 } else {
19880 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19881 {
19882 UHI opval = INVHI (tmp_argjhi);
19883 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19884 written |= (1 << 9);
19885 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19886 }
19887 } else {
19888 {
19889 UHI opval = tmp_argihi;
19890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19891 written |= (1 << 9);
19892 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19893 }
19894 }
19895 }
19896 if (GTHI (tmp_argilo, tmp_argjlo)) {
19897 {
19898 UHI opval = tmp_argjlo;
19899 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19900 written |= (1 << 10);
19901 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19902 }
19903 } else {
19904 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19905 {
19906 UHI opval = INVHI (tmp_argjlo);
19907 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19908 written |= (1 << 10);
19909 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19910 }
19911 } else {
19912 {
19913 UHI opval = tmp_argilo;
19914 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19915 written |= (1 << 10);
19916 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19917 }
19918 }
19919 }
19920 }
19921
19922 abuf->written = written;
19923 return vpc;
19924 #undef FLD
19925 }
19926
19927 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19928
19929 static SEM_PC
19930 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19931 {
19932 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19934 int UNUSED written = 0;
19935 IADDR UNUSED pc = abuf->addr;
19936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19937
19938 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19939 frvbf_media_register_not_aligned (current_cpu);
19940 } else {
19941 {
19942 HI tmp_argihi;
19943 HI tmp_argilo;
19944 HI tmp_argjhi;
19945 HI tmp_argjlo;
19946 {
19947 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19948 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19949 written |= (1 << 14);
19950 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19951 }
19952 {
19953 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19954 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19955 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19956 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19957 }
19958 if (GTHI (tmp_argihi, tmp_argjhi)) {
19959 {
19960 UHI opval = tmp_argjhi;
19961 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19962 written |= (1 << 15);
19963 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19964 }
19965 } else {
19966 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19967 {
19968 UHI opval = INVHI (tmp_argjhi);
19969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19970 written |= (1 << 15);
19971 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19972 }
19973 } else {
19974 {
19975 UHI opval = tmp_argihi;
19976 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19977 written |= (1 << 15);
19978 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19979 }
19980 }
19981 }
19982 if (GTHI (tmp_argilo, tmp_argjlo)) {
19983 {
19984 UHI opval = tmp_argjlo;
19985 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19986 written |= (1 << 17);
19987 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19988 }
19989 } else {
19990 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19991 {
19992 UHI opval = INVHI (tmp_argjlo);
19993 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19994 written |= (1 << 17);
19995 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19996 }
19997 } else {
19998 {
19999 UHI opval = tmp_argilo;
20000 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20001 written |= (1 << 17);
20002 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20003 }
20004 }
20005 }
20006 {
20007 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20008 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20009 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20010 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20011 }
20012 if (GTHI (tmp_argihi, tmp_argjhi)) {
20013 {
20014 UHI opval = tmp_argjhi;
20015 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20016 written |= (1 << 16);
20017 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20018 }
20019 } else {
20020 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20021 {
20022 UHI opval = INVHI (tmp_argjhi);
20023 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20024 written |= (1 << 16);
20025 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20026 }
20027 } else {
20028 {
20029 UHI opval = tmp_argihi;
20030 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20031 written |= (1 << 16);
20032 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20033 }
20034 }
20035 }
20036 if (GTHI (tmp_argilo, tmp_argjlo)) {
20037 {
20038 UHI opval = tmp_argjlo;
20039 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20040 written |= (1 << 18);
20041 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20042 }
20043 } else {
20044 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20045 {
20046 UHI opval = INVHI (tmp_argjlo);
20047 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20048 written |= (1 << 18);
20049 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20050 }
20051 } else {
20052 {
20053 UHI opval = tmp_argilo;
20054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20055 written |= (1 << 18);
20056 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20057 }
20058 }
20059 }
20060 }
20061 }
20062
20063 abuf->written = written;
20064 return vpc;
20065 #undef FLD
20066 }
20067
20068 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20069
20070 static SEM_PC
20071 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20072 {
20073 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20075 int UNUSED written = 0;
20076 IADDR UNUSED pc = abuf->addr;
20077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20078
20079 {
20080 UHI tmp_argihi;
20081 UHI tmp_argilo;
20082 UHI tmp_argjhi;
20083 UHI tmp_argjlo;
20084 {
20085 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20086 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20087 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20088 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20089 }
20090 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20091 {
20092 UHI opval = tmp_argjhi;
20093 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20094 written |= (1 << 9);
20095 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20096 }
20097 } else {
20098 {
20099 UHI opval = tmp_argihi;
20100 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20101 written |= (1 << 9);
20102 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20103 }
20104 }
20105 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20106 {
20107 UHI opval = tmp_argjlo;
20108 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20109 written |= (1 << 10);
20110 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20111 }
20112 } else {
20113 {
20114 UHI opval = tmp_argilo;
20115 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20116 written |= (1 << 10);
20117 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20118 }
20119 }
20120 }
20121
20122 abuf->written = written;
20123 return vpc;
20124 #undef FLD
20125 }
20126
20127 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20128
20129 static SEM_PC
20130 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20131 {
20132 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20133 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20134 int UNUSED written = 0;
20135 IADDR UNUSED pc = abuf->addr;
20136 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20137
20138 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20139 frvbf_media_cr_not_aligned (current_cpu);
20140 } else {
20141 {
20142 HI tmp_argihi;
20143 HI tmp_argilo;
20144 HI tmp_argjhi;
20145 HI tmp_argjlo;
20146 {
20147 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20148 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20149 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20150 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20151 }
20152 if (GTHI (tmp_argihi, tmp_argjhi)) {
20153 {
20154 UQI opval = 2;
20155 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20156 written |= (1 << 9);
20157 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20158 }
20159 } else {
20160 if (EQHI (tmp_argihi, tmp_argjhi)) {
20161 {
20162 UQI opval = 8;
20163 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20164 written |= (1 << 9);
20165 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20166 }
20167 } else {
20168 if (LTHI (tmp_argihi, tmp_argjhi)) {
20169 {
20170 UQI opval = 4;
20171 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20172 written |= (1 << 9);
20173 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20174 }
20175 } else {
20176 {
20177 UQI opval = 1;
20178 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20179 written |= (1 << 9);
20180 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20181 }
20182 }
20183 }
20184 }
20185 if (GTHI (tmp_argilo, tmp_argjlo)) {
20186 {
20187 UQI opval = 2;
20188 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20189 written |= (1 << 10);
20190 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20191 }
20192 } else {
20193 if (EQHI (tmp_argilo, tmp_argjlo)) {
20194 {
20195 UQI opval = 8;
20196 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20197 written |= (1 << 10);
20198 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20199 }
20200 } else {
20201 if (LTHI (tmp_argilo, tmp_argjlo)) {
20202 {
20203 UQI opval = 4;
20204 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20205 written |= (1 << 10);
20206 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20207 }
20208 } else {
20209 {
20210 UQI opval = 1;
20211 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20212 written |= (1 << 10);
20213 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20214 }
20215 }
20216 }
20217 }
20218 }
20219 }
20220
20221 abuf->written = written;
20222 return vpc;
20223 #undef FLD
20224 }
20225
20226 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20227
20228 static SEM_PC
20229 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20230 {
20231 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20233 int UNUSED written = 0;
20234 IADDR UNUSED pc = abuf->addr;
20235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20236
20237 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20238 frvbf_media_cr_not_aligned (current_cpu);
20239 } else {
20240 {
20241 UHI tmp_argihi;
20242 UHI tmp_argilo;
20243 UHI tmp_argjhi;
20244 UHI tmp_argjlo;
20245 {
20246 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20247 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20248 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20249 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20250 }
20251 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20252 {
20253 UQI opval = 2;
20254 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20255 written |= (1 << 9);
20256 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20257 }
20258 } else {
20259 if (EQHI (tmp_argihi, tmp_argjhi)) {
20260 {
20261 UQI opval = 8;
20262 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20263 written |= (1 << 9);
20264 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20265 }
20266 } else {
20267 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20268 {
20269 UQI opval = 4;
20270 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20271 written |= (1 << 9);
20272 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20273 }
20274 } else {
20275 {
20276 UQI opval = 1;
20277 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20278 written |= (1 << 9);
20279 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20280 }
20281 }
20282 }
20283 }
20284 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20285 {
20286 UQI opval = 2;
20287 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20288 written |= (1 << 10);
20289 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20290 }
20291 } else {
20292 if (EQHI (tmp_argilo, tmp_argjlo)) {
20293 {
20294 UQI opval = 8;
20295 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20296 written |= (1 << 10);
20297 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20298 }
20299 } else {
20300 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20301 {
20302 UQI opval = 4;
20303 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20304 written |= (1 << 10);
20305 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20306 }
20307 } else {
20308 {
20309 UQI opval = 1;
20310 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20311 written |= (1 << 10);
20312 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20313 }
20314 }
20315 }
20316 }
20317 }
20318 }
20319
20320 abuf->written = written;
20321 return vpc;
20322 #undef FLD
20323 }
20324
20325 /* mabshs: mabshs$pack $FRintj,$FRintk */
20326
20327 static SEM_PC
20328 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20329 {
20330 #define FLD(f) abuf->fields.sfmt_mabshs.f
20331 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20332 int UNUSED written = 0;
20333 IADDR UNUSED pc = abuf->addr;
20334 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20335
20336 {
20337 HI tmp_arghi;
20338 HI tmp_arglo;
20339 {
20340 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20341 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20342 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20343 }
20344 {
20345 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20346 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20347 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20348 }
20349 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20350 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
20351 if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
20352 {
20353 {
20354 UHI opval = 32767;
20355 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20356 written |= (1 << 8);
20357 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20358 }
20359 frvbf_media_overflow (current_cpu, 8);
20360 }
20361 } else {
20362 if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
20363 {
20364 {
20365 UHI opval = -32768;
20366 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20367 written |= (1 << 8);
20368 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20369 }
20370 frvbf_media_overflow (current_cpu, 8);
20371 }
20372 } else {
20373 {
20374 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
20375 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20376 written |= (1 << 8);
20377 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20378 }
20379 }
20380 }
20381 if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
20382 {
20383 {
20384 UHI opval = 32767;
20385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20386 written |= (1 << 9);
20387 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20388 }
20389 frvbf_media_overflow (current_cpu, 4);
20390 }
20391 } else {
20392 if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
20393 {
20394 {
20395 UHI opval = -32768;
20396 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20397 written |= (1 << 9);
20398 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20399 }
20400 frvbf_media_overflow (current_cpu, 4);
20401 }
20402 } else {
20403 {
20404 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
20405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20406 written |= (1 << 9);
20407 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20408 }
20409 }
20410 }
20411 }
20412
20413 abuf->written = written;
20414 return vpc;
20415 #undef FLD
20416 }
20417
20418 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20419
20420 static SEM_PC
20421 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20422 {
20423 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20424 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20425 int UNUSED written = 0;
20426 IADDR UNUSED pc = abuf->addr;
20427 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20428
20429 {
20430 HI tmp_argihi;
20431 HI tmp_argilo;
20432 HI tmp_argjhi;
20433 HI tmp_argjlo;
20434 {
20435 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20436 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20437 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20438 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20439 }
20440 {
20441 DI tmp_tmp;
20442 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20443 if (GTDI (tmp_tmp, 32767)) {
20444 {
20445 {
20446 UHI opval = 32767;
20447 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20448 written |= (1 << 9);
20449 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20450 }
20451 frvbf_media_overflow (current_cpu, 8);
20452 }
20453 } else {
20454 if (LTDI (tmp_tmp, -32768)) {
20455 {
20456 {
20457 UHI opval = -32768;
20458 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20459 written |= (1 << 9);
20460 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20461 }
20462 frvbf_media_overflow (current_cpu, 8);
20463 }
20464 } else {
20465 {
20466 UHI opval = tmp_tmp;
20467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20468 written |= (1 << 9);
20469 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20470 }
20471 }
20472 }
20473 }
20474 {
20475 DI tmp_tmp;
20476 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20477 if (GTDI (tmp_tmp, 32767)) {
20478 {
20479 {
20480 UHI opval = 32767;
20481 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20482 written |= (1 << 10);
20483 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20484 }
20485 frvbf_media_overflow (current_cpu, 4);
20486 }
20487 } else {
20488 if (LTDI (tmp_tmp, -32768)) {
20489 {
20490 {
20491 UHI opval = -32768;
20492 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20493 written |= (1 << 10);
20494 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20495 }
20496 frvbf_media_overflow (current_cpu, 4);
20497 }
20498 } else {
20499 {
20500 UHI opval = tmp_tmp;
20501 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20502 written |= (1 << 10);
20503 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20504 }
20505 }
20506 }
20507 }
20508 }
20509
20510 abuf->written = written;
20511 return vpc;
20512 #undef FLD
20513 }
20514
20515 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20516
20517 static SEM_PC
20518 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20519 {
20520 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20521 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20522 int UNUSED written = 0;
20523 IADDR UNUSED pc = abuf->addr;
20524 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20525
20526 {
20527 UHI tmp_argihi;
20528 UHI tmp_argilo;
20529 UHI tmp_argjhi;
20530 UHI tmp_argjlo;
20531 {
20532 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20533 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20534 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20535 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20536 }
20537 {
20538 DI tmp_tmp;
20539 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20540 if (GTDI (tmp_tmp, 65535)) {
20541 {
20542 {
20543 UHI opval = 65535;
20544 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20545 written |= (1 << 9);
20546 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20547 }
20548 frvbf_media_overflow (current_cpu, 8);
20549 }
20550 } else {
20551 if (LTDI (tmp_tmp, 0)) {
20552 {
20553 {
20554 UHI opval = 0;
20555 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20556 written |= (1 << 9);
20557 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20558 }
20559 frvbf_media_overflow (current_cpu, 8);
20560 }
20561 } else {
20562 {
20563 UHI opval = tmp_tmp;
20564 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20565 written |= (1 << 9);
20566 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20567 }
20568 }
20569 }
20570 }
20571 {
20572 DI tmp_tmp;
20573 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20574 if (GTDI (tmp_tmp, 65535)) {
20575 {
20576 {
20577 UHI opval = 65535;
20578 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20579 written |= (1 << 10);
20580 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20581 }
20582 frvbf_media_overflow (current_cpu, 4);
20583 }
20584 } else {
20585 if (LTDI (tmp_tmp, 0)) {
20586 {
20587 {
20588 UHI opval = 0;
20589 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20590 written |= (1 << 10);
20591 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20592 }
20593 frvbf_media_overflow (current_cpu, 4);
20594 }
20595 } else {
20596 {
20597 UHI opval = tmp_tmp;
20598 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20599 written |= (1 << 10);
20600 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20601 }
20602 }
20603 }
20604 }
20605 }
20606
20607 abuf->written = written;
20608 return vpc;
20609 #undef FLD
20610 }
20611
20612 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20613
20614 static SEM_PC
20615 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20616 {
20617 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20619 int UNUSED written = 0;
20620 IADDR UNUSED pc = abuf->addr;
20621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20622
20623 {
20624 HI tmp_argihi;
20625 HI tmp_argilo;
20626 HI tmp_argjhi;
20627 HI tmp_argjlo;
20628 {
20629 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20630 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20631 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20632 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20633 }
20634 {
20635 DI tmp_tmp;
20636 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20637 if (GTDI (tmp_tmp, 32767)) {
20638 {
20639 {
20640 UHI opval = 32767;
20641 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20642 written |= (1 << 9);
20643 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20644 }
20645 frvbf_media_overflow (current_cpu, 8);
20646 }
20647 } else {
20648 if (LTDI (tmp_tmp, -32768)) {
20649 {
20650 {
20651 UHI opval = -32768;
20652 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20653 written |= (1 << 9);
20654 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20655 }
20656 frvbf_media_overflow (current_cpu, 8);
20657 }
20658 } else {
20659 {
20660 UHI opval = tmp_tmp;
20661 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20662 written |= (1 << 9);
20663 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20664 }
20665 }
20666 }
20667 }
20668 {
20669 DI tmp_tmp;
20670 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20671 if (GTDI (tmp_tmp, 32767)) {
20672 {
20673 {
20674 UHI opval = 32767;
20675 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20676 written |= (1 << 10);
20677 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20678 }
20679 frvbf_media_overflow (current_cpu, 4);
20680 }
20681 } else {
20682 if (LTDI (tmp_tmp, -32768)) {
20683 {
20684 {
20685 UHI opval = -32768;
20686 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20687 written |= (1 << 10);
20688 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20689 }
20690 frvbf_media_overflow (current_cpu, 4);
20691 }
20692 } else {
20693 {
20694 UHI opval = tmp_tmp;
20695 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20696 written |= (1 << 10);
20697 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20698 }
20699 }
20700 }
20701 }
20702 }
20703
20704 abuf->written = written;
20705 return vpc;
20706 #undef FLD
20707 }
20708
20709 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20710
20711 static SEM_PC
20712 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20713 {
20714 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20715 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20716 int UNUSED written = 0;
20717 IADDR UNUSED pc = abuf->addr;
20718 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20719
20720 {
20721 UHI tmp_argihi;
20722 UHI tmp_argilo;
20723 UHI tmp_argjhi;
20724 UHI tmp_argjlo;
20725 {
20726 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20727 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20728 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20729 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20730 }
20731 {
20732 DI tmp_tmp;
20733 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20734 if (GTDI (tmp_tmp, 65535)) {
20735 {
20736 {
20737 UHI opval = 65535;
20738 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20739 written |= (1 << 9);
20740 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20741 }
20742 frvbf_media_overflow (current_cpu, 8);
20743 }
20744 } else {
20745 if (LTDI (tmp_tmp, 0)) {
20746 {
20747 {
20748 UHI opval = 0;
20749 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20750 written |= (1 << 9);
20751 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20752 }
20753 frvbf_media_overflow (current_cpu, 8);
20754 }
20755 } else {
20756 {
20757 UHI opval = tmp_tmp;
20758 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20759 written |= (1 << 9);
20760 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20761 }
20762 }
20763 }
20764 }
20765 {
20766 DI tmp_tmp;
20767 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20768 if (GTDI (tmp_tmp, 65535)) {
20769 {
20770 {
20771 UHI opval = 65535;
20772 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20773 written |= (1 << 10);
20774 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20775 }
20776 frvbf_media_overflow (current_cpu, 4);
20777 }
20778 } else {
20779 if (LTDI (tmp_tmp, 0)) {
20780 {
20781 {
20782 UHI opval = 0;
20783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20784 written |= (1 << 10);
20785 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20786 }
20787 frvbf_media_overflow (current_cpu, 4);
20788 }
20789 } else {
20790 {
20791 UHI opval = tmp_tmp;
20792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20793 written |= (1 << 10);
20794 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20795 }
20796 }
20797 }
20798 }
20799 }
20800
20801 abuf->written = written;
20802 return vpc;
20803 #undef FLD
20804 }
20805
20806 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20807
20808 static SEM_PC
20809 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20810 {
20811 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20812 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20813 int UNUSED written = 0;
20814 IADDR UNUSED pc = abuf->addr;
20815 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20816
20817 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20818 {
20819 HI tmp_argihi;
20820 HI tmp_argilo;
20821 HI tmp_argjhi;
20822 HI tmp_argjlo;
20823 {
20824 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20825 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20826 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20827 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20828 }
20829 {
20830 DI tmp_tmp;
20831 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20832 if (GTDI (tmp_tmp, 32767)) {
20833 {
20834 {
20835 UHI opval = 32767;
20836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20837 written |= (1 << 11);
20838 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20839 }
20840 frvbf_media_overflow (current_cpu, 8);
20841 }
20842 } else {
20843 if (LTDI (tmp_tmp, -32768)) {
20844 {
20845 {
20846 UHI opval = -32768;
20847 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20848 written |= (1 << 11);
20849 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20850 }
20851 frvbf_media_overflow (current_cpu, 8);
20852 }
20853 } else {
20854 {
20855 UHI opval = tmp_tmp;
20856 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20857 written |= (1 << 11);
20858 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20859 }
20860 }
20861 }
20862 }
20863 {
20864 DI tmp_tmp;
20865 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20866 if (GTDI (tmp_tmp, 32767)) {
20867 {
20868 {
20869 UHI opval = 32767;
20870 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20871 written |= (1 << 12);
20872 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20873 }
20874 frvbf_media_overflow (current_cpu, 4);
20875 }
20876 } else {
20877 if (LTDI (tmp_tmp, -32768)) {
20878 {
20879 {
20880 UHI opval = -32768;
20881 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20882 written |= (1 << 12);
20883 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20884 }
20885 frvbf_media_overflow (current_cpu, 4);
20886 }
20887 } else {
20888 {
20889 UHI opval = tmp_tmp;
20890 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20891 written |= (1 << 12);
20892 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20893 }
20894 }
20895 }
20896 }
20897 }
20898 }
20899
20900 abuf->written = written;
20901 return vpc;
20902 #undef FLD
20903 }
20904
20905 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20906
20907 static SEM_PC
20908 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20909 {
20910 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20912 int UNUSED written = 0;
20913 IADDR UNUSED pc = abuf->addr;
20914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20915
20916 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20917 {
20918 UHI tmp_argihi;
20919 UHI tmp_argilo;
20920 UHI tmp_argjhi;
20921 UHI tmp_argjlo;
20922 {
20923 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20924 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20925 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20926 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20927 }
20928 {
20929 DI tmp_tmp;
20930 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20931 if (GTDI (tmp_tmp, 65535)) {
20932 {
20933 {
20934 UHI opval = 65535;
20935 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20936 written |= (1 << 11);
20937 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20938 }
20939 frvbf_media_overflow (current_cpu, 8);
20940 }
20941 } else {
20942 if (LTDI (tmp_tmp, 0)) {
20943 {
20944 {
20945 UHI opval = 0;
20946 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20947 written |= (1 << 11);
20948 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20949 }
20950 frvbf_media_overflow (current_cpu, 8);
20951 }
20952 } else {
20953 {
20954 UHI opval = tmp_tmp;
20955 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20956 written |= (1 << 11);
20957 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20958 }
20959 }
20960 }
20961 }
20962 {
20963 DI tmp_tmp;
20964 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20965 if (GTDI (tmp_tmp, 65535)) {
20966 {
20967 {
20968 UHI opval = 65535;
20969 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20970 written |= (1 << 12);
20971 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20972 }
20973 frvbf_media_overflow (current_cpu, 4);
20974 }
20975 } else {
20976 if (LTDI (tmp_tmp, 0)) {
20977 {
20978 {
20979 UHI opval = 0;
20980 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20981 written |= (1 << 12);
20982 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20983 }
20984 frvbf_media_overflow (current_cpu, 4);
20985 }
20986 } else {
20987 {
20988 UHI opval = tmp_tmp;
20989 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20990 written |= (1 << 12);
20991 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20992 }
20993 }
20994 }
20995 }
20996 }
20997 }
20998
20999 abuf->written = written;
21000 return vpc;
21001 #undef FLD
21002 }
21003
21004 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21005
21006 static SEM_PC
21007 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21008 {
21009 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21011 int UNUSED written = 0;
21012 IADDR UNUSED pc = abuf->addr;
21013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21014
21015 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21016 {
21017 HI tmp_argihi;
21018 HI tmp_argilo;
21019 HI tmp_argjhi;
21020 HI tmp_argjlo;
21021 {
21022 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21023 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21024 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21025 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21026 }
21027 {
21028 DI tmp_tmp;
21029 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21030 if (GTDI (tmp_tmp, 32767)) {
21031 {
21032 {
21033 UHI opval = 32767;
21034 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21035 written |= (1 << 11);
21036 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21037 }
21038 frvbf_media_overflow (current_cpu, 8);
21039 }
21040 } else {
21041 if (LTDI (tmp_tmp, -32768)) {
21042 {
21043 {
21044 UHI opval = -32768;
21045 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21046 written |= (1 << 11);
21047 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21048 }
21049 frvbf_media_overflow (current_cpu, 8);
21050 }
21051 } else {
21052 {
21053 UHI opval = tmp_tmp;
21054 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21055 written |= (1 << 11);
21056 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21057 }
21058 }
21059 }
21060 }
21061 {
21062 DI tmp_tmp;
21063 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21064 if (GTDI (tmp_tmp, 32767)) {
21065 {
21066 {
21067 UHI opval = 32767;
21068 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21069 written |= (1 << 12);
21070 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21071 }
21072 frvbf_media_overflow (current_cpu, 4);
21073 }
21074 } else {
21075 if (LTDI (tmp_tmp, -32768)) {
21076 {
21077 {
21078 UHI opval = -32768;
21079 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21080 written |= (1 << 12);
21081 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21082 }
21083 frvbf_media_overflow (current_cpu, 4);
21084 }
21085 } else {
21086 {
21087 UHI opval = tmp_tmp;
21088 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21089 written |= (1 << 12);
21090 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21091 }
21092 }
21093 }
21094 }
21095 }
21096 }
21097
21098 abuf->written = written;
21099 return vpc;
21100 #undef FLD
21101 }
21102
21103 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21104
21105 static SEM_PC
21106 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21107 {
21108 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21110 int UNUSED written = 0;
21111 IADDR UNUSED pc = abuf->addr;
21112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21113
21114 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21115 {
21116 UHI tmp_argihi;
21117 UHI tmp_argilo;
21118 UHI tmp_argjhi;
21119 UHI tmp_argjlo;
21120 {
21121 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21122 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21123 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21124 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21125 }
21126 {
21127 DI tmp_tmp;
21128 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21129 if (GTDI (tmp_tmp, 65535)) {
21130 {
21131 {
21132 UHI opval = 65535;
21133 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21134 written |= (1 << 11);
21135 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21136 }
21137 frvbf_media_overflow (current_cpu, 8);
21138 }
21139 } else {
21140 if (LTDI (tmp_tmp, 0)) {
21141 {
21142 {
21143 UHI opval = 0;
21144 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21145 written |= (1 << 11);
21146 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21147 }
21148 frvbf_media_overflow (current_cpu, 8);
21149 }
21150 } else {
21151 {
21152 UHI opval = tmp_tmp;
21153 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21154 written |= (1 << 11);
21155 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21156 }
21157 }
21158 }
21159 }
21160 {
21161 DI tmp_tmp;
21162 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21163 if (GTDI (tmp_tmp, 65535)) {
21164 {
21165 {
21166 UHI opval = 65535;
21167 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21168 written |= (1 << 12);
21169 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21170 }
21171 frvbf_media_overflow (current_cpu, 4);
21172 }
21173 } else {
21174 if (LTDI (tmp_tmp, 0)) {
21175 {
21176 {
21177 UHI opval = 0;
21178 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21179 written |= (1 << 12);
21180 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21181 }
21182 frvbf_media_overflow (current_cpu, 4);
21183 }
21184 } else {
21185 {
21186 UHI opval = tmp_tmp;
21187 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21188 written |= (1 << 12);
21189 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21190 }
21191 }
21192 }
21193 }
21194 }
21195 }
21196
21197 abuf->written = written;
21198 return vpc;
21199 #undef FLD
21200 }
21201
21202 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21203
21204 static SEM_PC
21205 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21206 {
21207 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21209 int UNUSED written = 0;
21210 IADDR UNUSED pc = abuf->addr;
21211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21212
21213 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21214 frvbf_media_register_not_aligned (current_cpu);
21215 } else {
21216 {
21217 HI tmp_argihi;
21218 HI tmp_argilo;
21219 HI tmp_argjhi;
21220 HI tmp_argjlo;
21221 {
21222 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21223 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21224 written |= (1 << 14);
21225 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21226 }
21227 {
21228 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21229 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21230 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21231 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21232 }
21233 {
21234 DI tmp_tmp;
21235 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21236 if (GTDI (tmp_tmp, 32767)) {
21237 {
21238 {
21239 UHI opval = 32767;
21240 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21241 written |= (1 << 15);
21242 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21243 }
21244 frvbf_media_overflow (current_cpu, 8);
21245 }
21246 } else {
21247 if (LTDI (tmp_tmp, -32768)) {
21248 {
21249 {
21250 UHI opval = -32768;
21251 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21252 written |= (1 << 15);
21253 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21254 }
21255 frvbf_media_overflow (current_cpu, 8);
21256 }
21257 } else {
21258 {
21259 UHI opval = tmp_tmp;
21260 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21261 written |= (1 << 15);
21262 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21263 }
21264 }
21265 }
21266 }
21267 {
21268 DI tmp_tmp;
21269 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21270 if (GTDI (tmp_tmp, 32767)) {
21271 {
21272 {
21273 UHI opval = 32767;
21274 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21275 written |= (1 << 17);
21276 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21277 }
21278 frvbf_media_overflow (current_cpu, 4);
21279 }
21280 } else {
21281 if (LTDI (tmp_tmp, -32768)) {
21282 {
21283 {
21284 UHI opval = -32768;
21285 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21286 written |= (1 << 17);
21287 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21288 }
21289 frvbf_media_overflow (current_cpu, 4);
21290 }
21291 } else {
21292 {
21293 UHI opval = tmp_tmp;
21294 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21295 written |= (1 << 17);
21296 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21297 }
21298 }
21299 }
21300 }
21301 {
21302 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21303 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21304 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21305 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21306 }
21307 {
21308 DI tmp_tmp;
21309 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21310 if (GTDI (tmp_tmp, 32767)) {
21311 {
21312 {
21313 UHI opval = 32767;
21314 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21315 written |= (1 << 16);
21316 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21317 }
21318 frvbf_media_overflow (current_cpu, 2);
21319 }
21320 } else {
21321 if (LTDI (tmp_tmp, -32768)) {
21322 {
21323 {
21324 UHI opval = -32768;
21325 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21326 written |= (1 << 16);
21327 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21328 }
21329 frvbf_media_overflow (current_cpu, 2);
21330 }
21331 } else {
21332 {
21333 UHI opval = tmp_tmp;
21334 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21335 written |= (1 << 16);
21336 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21337 }
21338 }
21339 }
21340 }
21341 {
21342 DI tmp_tmp;
21343 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21344 if (GTDI (tmp_tmp, 32767)) {
21345 {
21346 {
21347 UHI opval = 32767;
21348 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21349 written |= (1 << 18);
21350 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21351 }
21352 frvbf_media_overflow (current_cpu, 1);
21353 }
21354 } else {
21355 if (LTDI (tmp_tmp, -32768)) {
21356 {
21357 {
21358 UHI opval = -32768;
21359 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21360 written |= (1 << 18);
21361 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21362 }
21363 frvbf_media_overflow (current_cpu, 1);
21364 }
21365 } else {
21366 {
21367 UHI opval = tmp_tmp;
21368 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21369 written |= (1 << 18);
21370 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21371 }
21372 }
21373 }
21374 }
21375 }
21376 }
21377
21378 abuf->written = written;
21379 return vpc;
21380 #undef FLD
21381 }
21382
21383 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21384
21385 static SEM_PC
21386 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21387 {
21388 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21389 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21390 int UNUSED written = 0;
21391 IADDR UNUSED pc = abuf->addr;
21392 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21393
21394 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21395 frvbf_media_register_not_aligned (current_cpu);
21396 } else {
21397 {
21398 UHI tmp_argihi;
21399 UHI tmp_argilo;
21400 UHI tmp_argjhi;
21401 UHI tmp_argjlo;
21402 {
21403 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21404 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21405 written |= (1 << 14);
21406 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21407 }
21408 {
21409 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21410 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21411 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21412 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21413 }
21414 {
21415 DI tmp_tmp;
21416 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21417 if (GTDI (tmp_tmp, 65535)) {
21418 {
21419 {
21420 UHI opval = 65535;
21421 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21422 written |= (1 << 15);
21423 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21424 }
21425 frvbf_media_overflow (current_cpu, 8);
21426 }
21427 } else {
21428 if (LTDI (tmp_tmp, 0)) {
21429 {
21430 {
21431 UHI opval = 0;
21432 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21433 written |= (1 << 15);
21434 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21435 }
21436 frvbf_media_overflow (current_cpu, 8);
21437 }
21438 } else {
21439 {
21440 UHI opval = tmp_tmp;
21441 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21442 written |= (1 << 15);
21443 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21444 }
21445 }
21446 }
21447 }
21448 {
21449 DI tmp_tmp;
21450 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21451 if (GTDI (tmp_tmp, 65535)) {
21452 {
21453 {
21454 UHI opval = 65535;
21455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21456 written |= (1 << 17);
21457 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21458 }
21459 frvbf_media_overflow (current_cpu, 4);
21460 }
21461 } else {
21462 if (LTDI (tmp_tmp, 0)) {
21463 {
21464 {
21465 UHI opval = 0;
21466 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21467 written |= (1 << 17);
21468 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21469 }
21470 frvbf_media_overflow (current_cpu, 4);
21471 }
21472 } else {
21473 {
21474 UHI opval = tmp_tmp;
21475 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21476 written |= (1 << 17);
21477 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21478 }
21479 }
21480 }
21481 }
21482 {
21483 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21484 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21485 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21486 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21487 }
21488 {
21489 DI tmp_tmp;
21490 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21491 if (GTDI (tmp_tmp, 65535)) {
21492 {
21493 {
21494 UHI opval = 65535;
21495 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21496 written |= (1 << 16);
21497 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21498 }
21499 frvbf_media_overflow (current_cpu, 2);
21500 }
21501 } else {
21502 if (LTDI (tmp_tmp, 0)) {
21503 {
21504 {
21505 UHI opval = 0;
21506 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21507 written |= (1 << 16);
21508 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21509 }
21510 frvbf_media_overflow (current_cpu, 2);
21511 }
21512 } else {
21513 {
21514 UHI opval = tmp_tmp;
21515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21516 written |= (1 << 16);
21517 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21518 }
21519 }
21520 }
21521 }
21522 {
21523 DI tmp_tmp;
21524 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21525 if (GTDI (tmp_tmp, 65535)) {
21526 {
21527 {
21528 UHI opval = 65535;
21529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21530 written |= (1 << 18);
21531 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21532 }
21533 frvbf_media_overflow (current_cpu, 1);
21534 }
21535 } else {
21536 if (LTDI (tmp_tmp, 0)) {
21537 {
21538 {
21539 UHI opval = 0;
21540 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21541 written |= (1 << 18);
21542 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21543 }
21544 frvbf_media_overflow (current_cpu, 1);
21545 }
21546 } else {
21547 {
21548 UHI opval = tmp_tmp;
21549 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21550 written |= (1 << 18);
21551 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21552 }
21553 }
21554 }
21555 }
21556 }
21557 }
21558
21559 abuf->written = written;
21560 return vpc;
21561 #undef FLD
21562 }
21563
21564 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21565
21566 static SEM_PC
21567 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21568 {
21569 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21570 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21571 int UNUSED written = 0;
21572 IADDR UNUSED pc = abuf->addr;
21573 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21574
21575 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21576 frvbf_media_register_not_aligned (current_cpu);
21577 } else {
21578 {
21579 HI tmp_argihi;
21580 HI tmp_argilo;
21581 HI tmp_argjhi;
21582 HI tmp_argjlo;
21583 {
21584 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21585 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21586 written |= (1 << 14);
21587 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21588 }
21589 {
21590 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21591 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21592 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21593 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21594 }
21595 {
21596 DI tmp_tmp;
21597 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21598 if (GTDI (tmp_tmp, 32767)) {
21599 {
21600 {
21601 UHI opval = 32767;
21602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21603 written |= (1 << 15);
21604 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21605 }
21606 frvbf_media_overflow (current_cpu, 8);
21607 }
21608 } else {
21609 if (LTDI (tmp_tmp, -32768)) {
21610 {
21611 {
21612 UHI opval = -32768;
21613 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21614 written |= (1 << 15);
21615 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21616 }
21617 frvbf_media_overflow (current_cpu, 8);
21618 }
21619 } else {
21620 {
21621 UHI opval = tmp_tmp;
21622 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21623 written |= (1 << 15);
21624 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21625 }
21626 }
21627 }
21628 }
21629 {
21630 DI tmp_tmp;
21631 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21632 if (GTDI (tmp_tmp, 32767)) {
21633 {
21634 {
21635 UHI opval = 32767;
21636 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21637 written |= (1 << 17);
21638 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21639 }
21640 frvbf_media_overflow (current_cpu, 4);
21641 }
21642 } else {
21643 if (LTDI (tmp_tmp, -32768)) {
21644 {
21645 {
21646 UHI opval = -32768;
21647 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21648 written |= (1 << 17);
21649 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21650 }
21651 frvbf_media_overflow (current_cpu, 4);
21652 }
21653 } else {
21654 {
21655 UHI opval = tmp_tmp;
21656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21657 written |= (1 << 17);
21658 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21659 }
21660 }
21661 }
21662 }
21663 {
21664 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21665 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21666 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21667 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21668 }
21669 {
21670 DI tmp_tmp;
21671 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21672 if (GTDI (tmp_tmp, 32767)) {
21673 {
21674 {
21675 UHI opval = 32767;
21676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21677 written |= (1 << 16);
21678 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21679 }
21680 frvbf_media_overflow (current_cpu, 2);
21681 }
21682 } else {
21683 if (LTDI (tmp_tmp, -32768)) {
21684 {
21685 {
21686 UHI opval = -32768;
21687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21688 written |= (1 << 16);
21689 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21690 }
21691 frvbf_media_overflow (current_cpu, 2);
21692 }
21693 } else {
21694 {
21695 UHI opval = tmp_tmp;
21696 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21697 written |= (1 << 16);
21698 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21699 }
21700 }
21701 }
21702 }
21703 {
21704 DI tmp_tmp;
21705 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21706 if (GTDI (tmp_tmp, 32767)) {
21707 {
21708 {
21709 UHI opval = 32767;
21710 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21711 written |= (1 << 18);
21712 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21713 }
21714 frvbf_media_overflow (current_cpu, 1);
21715 }
21716 } else {
21717 if (LTDI (tmp_tmp, -32768)) {
21718 {
21719 {
21720 UHI opval = -32768;
21721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21722 written |= (1 << 18);
21723 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21724 }
21725 frvbf_media_overflow (current_cpu, 1);
21726 }
21727 } else {
21728 {
21729 UHI opval = tmp_tmp;
21730 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21731 written |= (1 << 18);
21732 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21733 }
21734 }
21735 }
21736 }
21737 }
21738 }
21739
21740 abuf->written = written;
21741 return vpc;
21742 #undef FLD
21743 }
21744
21745 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21746
21747 static SEM_PC
21748 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21749 {
21750 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21752 int UNUSED written = 0;
21753 IADDR UNUSED pc = abuf->addr;
21754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21755
21756 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21757 frvbf_media_register_not_aligned (current_cpu);
21758 } else {
21759 {
21760 UHI tmp_argihi;
21761 UHI tmp_argilo;
21762 UHI tmp_argjhi;
21763 UHI tmp_argjlo;
21764 {
21765 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21766 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21767 written |= (1 << 14);
21768 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21769 }
21770 {
21771 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21772 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21773 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21774 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21775 }
21776 {
21777 DI tmp_tmp;
21778 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21779 if (GTDI (tmp_tmp, 65535)) {
21780 {
21781 {
21782 UHI opval = 65535;
21783 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21784 written |= (1 << 15);
21785 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21786 }
21787 frvbf_media_overflow (current_cpu, 8);
21788 }
21789 } else {
21790 if (LTDI (tmp_tmp, 0)) {
21791 {
21792 {
21793 UHI opval = 0;
21794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21795 written |= (1 << 15);
21796 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21797 }
21798 frvbf_media_overflow (current_cpu, 8);
21799 }
21800 } else {
21801 {
21802 UHI opval = tmp_tmp;
21803 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21804 written |= (1 << 15);
21805 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21806 }
21807 }
21808 }
21809 }
21810 {
21811 DI tmp_tmp;
21812 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21813 if (GTDI (tmp_tmp, 65535)) {
21814 {
21815 {
21816 UHI opval = 65535;
21817 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21818 written |= (1 << 17);
21819 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21820 }
21821 frvbf_media_overflow (current_cpu, 4);
21822 }
21823 } else {
21824 if (LTDI (tmp_tmp, 0)) {
21825 {
21826 {
21827 UHI opval = 0;
21828 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21829 written |= (1 << 17);
21830 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21831 }
21832 frvbf_media_overflow (current_cpu, 4);
21833 }
21834 } else {
21835 {
21836 UHI opval = tmp_tmp;
21837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21838 written |= (1 << 17);
21839 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21840 }
21841 }
21842 }
21843 }
21844 {
21845 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21846 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21847 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21848 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21849 }
21850 {
21851 DI tmp_tmp;
21852 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21853 if (GTDI (tmp_tmp, 65535)) {
21854 {
21855 {
21856 UHI opval = 65535;
21857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21858 written |= (1 << 16);
21859 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21860 }
21861 frvbf_media_overflow (current_cpu, 2);
21862 }
21863 } else {
21864 if (LTDI (tmp_tmp, 0)) {
21865 {
21866 {
21867 UHI opval = 0;
21868 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21869 written |= (1 << 16);
21870 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21871 }
21872 frvbf_media_overflow (current_cpu, 2);
21873 }
21874 } else {
21875 {
21876 UHI opval = tmp_tmp;
21877 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21878 written |= (1 << 16);
21879 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21880 }
21881 }
21882 }
21883 }
21884 {
21885 DI tmp_tmp;
21886 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21887 if (GTDI (tmp_tmp, 65535)) {
21888 {
21889 {
21890 UHI opval = 65535;
21891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21892 written |= (1 << 18);
21893 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21894 }
21895 frvbf_media_overflow (current_cpu, 1);
21896 }
21897 } else {
21898 if (LTDI (tmp_tmp, 0)) {
21899 {
21900 {
21901 UHI opval = 0;
21902 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21903 written |= (1 << 18);
21904 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21905 }
21906 frvbf_media_overflow (current_cpu, 1);
21907 }
21908 } else {
21909 {
21910 UHI opval = tmp_tmp;
21911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21912 written |= (1 << 18);
21913 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21914 }
21915 }
21916 }
21917 }
21918 }
21919 }
21920
21921 abuf->written = written;
21922 return vpc;
21923 #undef FLD
21924 }
21925
21926 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21927
21928 static SEM_PC
21929 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21930 {
21931 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21933 int UNUSED written = 0;
21934 IADDR UNUSED pc = abuf->addr;
21935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21936
21937 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21938 frvbf_media_register_not_aligned (current_cpu);
21939 } else {
21940 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21941 {
21942 HI tmp_argihi;
21943 HI tmp_argilo;
21944 HI tmp_argjhi;
21945 HI tmp_argjlo;
21946 {
21947 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21948 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21949 written |= (1 << 16);
21950 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21951 }
21952 {
21953 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21954 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21955 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21956 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21957 }
21958 {
21959 DI tmp_tmp;
21960 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21961 if (GTDI (tmp_tmp, 32767)) {
21962 {
21963 {
21964 UHI opval = 32767;
21965 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21966 written |= (1 << 17);
21967 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21968 }
21969 frvbf_media_overflow (current_cpu, 8);
21970 }
21971 } else {
21972 if (LTDI (tmp_tmp, -32768)) {
21973 {
21974 {
21975 UHI opval = -32768;
21976 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21977 written |= (1 << 17);
21978 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21979 }
21980 frvbf_media_overflow (current_cpu, 8);
21981 }
21982 } else {
21983 {
21984 UHI opval = tmp_tmp;
21985 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21986 written |= (1 << 17);
21987 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21988 }
21989 }
21990 }
21991 }
21992 {
21993 DI tmp_tmp;
21994 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21995 if (GTDI (tmp_tmp, 32767)) {
21996 {
21997 {
21998 UHI opval = 32767;
21999 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22000 written |= (1 << 19);
22001 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22002 }
22003 frvbf_media_overflow (current_cpu, 4);
22004 }
22005 } else {
22006 if (LTDI (tmp_tmp, -32768)) {
22007 {
22008 {
22009 UHI opval = -32768;
22010 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22011 written |= (1 << 19);
22012 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22013 }
22014 frvbf_media_overflow (current_cpu, 4);
22015 }
22016 } else {
22017 {
22018 UHI opval = tmp_tmp;
22019 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22020 written |= (1 << 19);
22021 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22022 }
22023 }
22024 }
22025 }
22026 {
22027 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22028 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22029 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22030 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22031 }
22032 {
22033 DI tmp_tmp;
22034 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22035 if (GTDI (tmp_tmp, 32767)) {
22036 {
22037 {
22038 UHI opval = 32767;
22039 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22040 written |= (1 << 18);
22041 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22042 }
22043 frvbf_media_overflow (current_cpu, 2);
22044 }
22045 } else {
22046 if (LTDI (tmp_tmp, -32768)) {
22047 {
22048 {
22049 UHI opval = -32768;
22050 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22051 written |= (1 << 18);
22052 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22053 }
22054 frvbf_media_overflow (current_cpu, 2);
22055 }
22056 } else {
22057 {
22058 UHI opval = tmp_tmp;
22059 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22060 written |= (1 << 18);
22061 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22062 }
22063 }
22064 }
22065 }
22066 {
22067 DI tmp_tmp;
22068 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22069 if (GTDI (tmp_tmp, 32767)) {
22070 {
22071 {
22072 UHI opval = 32767;
22073 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22074 written |= (1 << 20);
22075 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22076 }
22077 frvbf_media_overflow (current_cpu, 1);
22078 }
22079 } else {
22080 if (LTDI (tmp_tmp, -32768)) {
22081 {
22082 {
22083 UHI opval = -32768;
22084 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22085 written |= (1 << 20);
22086 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22087 }
22088 frvbf_media_overflow (current_cpu, 1);
22089 }
22090 } else {
22091 {
22092 UHI opval = tmp_tmp;
22093 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22094 written |= (1 << 20);
22095 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22096 }
22097 }
22098 }
22099 }
22100 }
22101 }
22102 }
22103
22104 abuf->written = written;
22105 return vpc;
22106 #undef FLD
22107 }
22108
22109 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22110
22111 static SEM_PC
22112 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22113 {
22114 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22115 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22116 int UNUSED written = 0;
22117 IADDR UNUSED pc = abuf->addr;
22118 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22119
22120 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22121 frvbf_media_register_not_aligned (current_cpu);
22122 } else {
22123 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22124 {
22125 UHI tmp_argihi;
22126 UHI tmp_argilo;
22127 UHI tmp_argjhi;
22128 UHI tmp_argjlo;
22129 {
22130 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22131 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22132 written |= (1 << 16);
22133 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22134 }
22135 {
22136 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22137 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22138 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22139 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22140 }
22141 {
22142 DI tmp_tmp;
22143 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22144 if (GTDI (tmp_tmp, 65535)) {
22145 {
22146 {
22147 UHI opval = 65535;
22148 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22149 written |= (1 << 17);
22150 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22151 }
22152 frvbf_media_overflow (current_cpu, 8);
22153 }
22154 } else {
22155 if (LTDI (tmp_tmp, 0)) {
22156 {
22157 {
22158 UHI opval = 0;
22159 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22160 written |= (1 << 17);
22161 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22162 }
22163 frvbf_media_overflow (current_cpu, 8);
22164 }
22165 } else {
22166 {
22167 UHI opval = tmp_tmp;
22168 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22169 written |= (1 << 17);
22170 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22171 }
22172 }
22173 }
22174 }
22175 {
22176 DI tmp_tmp;
22177 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22178 if (GTDI (tmp_tmp, 65535)) {
22179 {
22180 {
22181 UHI opval = 65535;
22182 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22183 written |= (1 << 19);
22184 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22185 }
22186 frvbf_media_overflow (current_cpu, 4);
22187 }
22188 } else {
22189 if (LTDI (tmp_tmp, 0)) {
22190 {
22191 {
22192 UHI opval = 0;
22193 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22194 written |= (1 << 19);
22195 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22196 }
22197 frvbf_media_overflow (current_cpu, 4);
22198 }
22199 } else {
22200 {
22201 UHI opval = tmp_tmp;
22202 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22203 written |= (1 << 19);
22204 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22205 }
22206 }
22207 }
22208 }
22209 {
22210 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22211 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22212 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22213 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22214 }
22215 {
22216 DI tmp_tmp;
22217 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22218 if (GTDI (tmp_tmp, 65535)) {
22219 {
22220 {
22221 UHI opval = 65535;
22222 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22223 written |= (1 << 18);
22224 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22225 }
22226 frvbf_media_overflow (current_cpu, 2);
22227 }
22228 } else {
22229 if (LTDI (tmp_tmp, 0)) {
22230 {
22231 {
22232 UHI opval = 0;
22233 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22234 written |= (1 << 18);
22235 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22236 }
22237 frvbf_media_overflow (current_cpu, 2);
22238 }
22239 } else {
22240 {
22241 UHI opval = tmp_tmp;
22242 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22243 written |= (1 << 18);
22244 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22245 }
22246 }
22247 }
22248 }
22249 {
22250 DI tmp_tmp;
22251 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22252 if (GTDI (tmp_tmp, 65535)) {
22253 {
22254 {
22255 UHI opval = 65535;
22256 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22257 written |= (1 << 20);
22258 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22259 }
22260 frvbf_media_overflow (current_cpu, 1);
22261 }
22262 } else {
22263 if (LTDI (tmp_tmp, 0)) {
22264 {
22265 {
22266 UHI opval = 0;
22267 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22268 written |= (1 << 20);
22269 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22270 }
22271 frvbf_media_overflow (current_cpu, 1);
22272 }
22273 } else {
22274 {
22275 UHI opval = tmp_tmp;
22276 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22277 written |= (1 << 20);
22278 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22279 }
22280 }
22281 }
22282 }
22283 }
22284 }
22285 }
22286
22287 abuf->written = written;
22288 return vpc;
22289 #undef FLD
22290 }
22291
22292 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22293
22294 static SEM_PC
22295 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22296 {
22297 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22299 int UNUSED written = 0;
22300 IADDR UNUSED pc = abuf->addr;
22301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22302
22303 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22304 frvbf_media_register_not_aligned (current_cpu);
22305 } else {
22306 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22307 {
22308 HI tmp_argihi;
22309 HI tmp_argilo;
22310 HI tmp_argjhi;
22311 HI tmp_argjlo;
22312 {
22313 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22314 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22315 written |= (1 << 16);
22316 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22317 }
22318 {
22319 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22320 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22321 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22322 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22323 }
22324 {
22325 DI tmp_tmp;
22326 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22327 if (GTDI (tmp_tmp, 32767)) {
22328 {
22329 {
22330 UHI opval = 32767;
22331 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22332 written |= (1 << 17);
22333 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22334 }
22335 frvbf_media_overflow (current_cpu, 8);
22336 }
22337 } else {
22338 if (LTDI (tmp_tmp, -32768)) {
22339 {
22340 {
22341 UHI opval = -32768;
22342 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22343 written |= (1 << 17);
22344 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22345 }
22346 frvbf_media_overflow (current_cpu, 8);
22347 }
22348 } else {
22349 {
22350 UHI opval = tmp_tmp;
22351 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22352 written |= (1 << 17);
22353 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22354 }
22355 }
22356 }
22357 }
22358 {
22359 DI tmp_tmp;
22360 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22361 if (GTDI (tmp_tmp, 32767)) {
22362 {
22363 {
22364 UHI opval = 32767;
22365 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22366 written |= (1 << 19);
22367 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22368 }
22369 frvbf_media_overflow (current_cpu, 4);
22370 }
22371 } else {
22372 if (LTDI (tmp_tmp, -32768)) {
22373 {
22374 {
22375 UHI opval = -32768;
22376 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22377 written |= (1 << 19);
22378 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22379 }
22380 frvbf_media_overflow (current_cpu, 4);
22381 }
22382 } else {
22383 {
22384 UHI opval = tmp_tmp;
22385 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22386 written |= (1 << 19);
22387 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22388 }
22389 }
22390 }
22391 }
22392 {
22393 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22394 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22395 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22396 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22397 }
22398 {
22399 DI tmp_tmp;
22400 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22401 if (GTDI (tmp_tmp, 32767)) {
22402 {
22403 {
22404 UHI opval = 32767;
22405 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22406 written |= (1 << 18);
22407 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22408 }
22409 frvbf_media_overflow (current_cpu, 2);
22410 }
22411 } else {
22412 if (LTDI (tmp_tmp, -32768)) {
22413 {
22414 {
22415 UHI opval = -32768;
22416 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22417 written |= (1 << 18);
22418 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22419 }
22420 frvbf_media_overflow (current_cpu, 2);
22421 }
22422 } else {
22423 {
22424 UHI opval = tmp_tmp;
22425 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22426 written |= (1 << 18);
22427 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22428 }
22429 }
22430 }
22431 }
22432 {
22433 DI tmp_tmp;
22434 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22435 if (GTDI (tmp_tmp, 32767)) {
22436 {
22437 {
22438 UHI opval = 32767;
22439 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22440 written |= (1 << 20);
22441 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22442 }
22443 frvbf_media_overflow (current_cpu, 1);
22444 }
22445 } else {
22446 if (LTDI (tmp_tmp, -32768)) {
22447 {
22448 {
22449 UHI opval = -32768;
22450 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22451 written |= (1 << 20);
22452 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22453 }
22454 frvbf_media_overflow (current_cpu, 1);
22455 }
22456 } else {
22457 {
22458 UHI opval = tmp_tmp;
22459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22460 written |= (1 << 20);
22461 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22462 }
22463 }
22464 }
22465 }
22466 }
22467 }
22468 }
22469
22470 abuf->written = written;
22471 return vpc;
22472 #undef FLD
22473 }
22474
22475 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22476
22477 static SEM_PC
22478 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22479 {
22480 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22481 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22482 int UNUSED written = 0;
22483 IADDR UNUSED pc = abuf->addr;
22484 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22485
22486 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22487 frvbf_media_register_not_aligned (current_cpu);
22488 } else {
22489 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22490 {
22491 UHI tmp_argihi;
22492 UHI tmp_argilo;
22493 UHI tmp_argjhi;
22494 UHI tmp_argjlo;
22495 {
22496 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22497 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22498 written |= (1 << 16);
22499 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22500 }
22501 {
22502 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22503 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22504 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22505 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22506 }
22507 {
22508 DI tmp_tmp;
22509 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22510 if (GTDI (tmp_tmp, 65535)) {
22511 {
22512 {
22513 UHI opval = 65535;
22514 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22515 written |= (1 << 17);
22516 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22517 }
22518 frvbf_media_overflow (current_cpu, 8);
22519 }
22520 } else {
22521 if (LTDI (tmp_tmp, 0)) {
22522 {
22523 {
22524 UHI opval = 0;
22525 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22526 written |= (1 << 17);
22527 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22528 }
22529 frvbf_media_overflow (current_cpu, 8);
22530 }
22531 } else {
22532 {
22533 UHI opval = tmp_tmp;
22534 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22535 written |= (1 << 17);
22536 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22537 }
22538 }
22539 }
22540 }
22541 {
22542 DI tmp_tmp;
22543 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22544 if (GTDI (tmp_tmp, 65535)) {
22545 {
22546 {
22547 UHI opval = 65535;
22548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22549 written |= (1 << 19);
22550 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22551 }
22552 frvbf_media_overflow (current_cpu, 4);
22553 }
22554 } else {
22555 if (LTDI (tmp_tmp, 0)) {
22556 {
22557 {
22558 UHI opval = 0;
22559 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22560 written |= (1 << 19);
22561 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22562 }
22563 frvbf_media_overflow (current_cpu, 4);
22564 }
22565 } else {
22566 {
22567 UHI opval = tmp_tmp;
22568 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22569 written |= (1 << 19);
22570 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22571 }
22572 }
22573 }
22574 }
22575 {
22576 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22577 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22578 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22579 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22580 }
22581 {
22582 DI tmp_tmp;
22583 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22584 if (GTDI (tmp_tmp, 65535)) {
22585 {
22586 {
22587 UHI opval = 65535;
22588 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22589 written |= (1 << 18);
22590 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22591 }
22592 frvbf_media_overflow (current_cpu, 2);
22593 }
22594 } else {
22595 if (LTDI (tmp_tmp, 0)) {
22596 {
22597 {
22598 UHI opval = 0;
22599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22600 written |= (1 << 18);
22601 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22602 }
22603 frvbf_media_overflow (current_cpu, 2);
22604 }
22605 } else {
22606 {
22607 UHI opval = tmp_tmp;
22608 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22609 written |= (1 << 18);
22610 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22611 }
22612 }
22613 }
22614 }
22615 {
22616 DI tmp_tmp;
22617 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22618 if (GTDI (tmp_tmp, 65535)) {
22619 {
22620 {
22621 UHI opval = 65535;
22622 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22623 written |= (1 << 20);
22624 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22625 }
22626 frvbf_media_overflow (current_cpu, 1);
22627 }
22628 } else {
22629 if (LTDI (tmp_tmp, 0)) {
22630 {
22631 {
22632 UHI opval = 0;
22633 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22634 written |= (1 << 20);
22635 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22636 }
22637 frvbf_media_overflow (current_cpu, 1);
22638 }
22639 } else {
22640 {
22641 UHI opval = tmp_tmp;
22642 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22643 written |= (1 << 20);
22644 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22645 }
22646 }
22647 }
22648 }
22649 }
22650 }
22651 }
22652
22653 abuf->written = written;
22654 return vpc;
22655 #undef FLD
22656 }
22657
22658 /* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22659
22660 static SEM_PC
22661 SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22662 {
22663 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22665 int UNUSED written = 0;
22666 IADDR UNUSED pc = abuf->addr;
22667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22668
22669 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22670 frvbf_media_register_not_aligned (current_cpu);
22671 } else {
22672 {
22673 HI tmp_a1;
22674 HI tmp_a2;
22675 HI tmp_a3;
22676 HI tmp_a4;
22677 HI tmp_b1;
22678 HI tmp_b2;
22679 HI tmp_b3;
22680 HI tmp_b4;
22681 {
22682 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22683 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22684 written |= (1 << 14);
22685 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22686 }
22687 {
22688 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22689 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22690 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22691 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22692 }
22693 {
22694 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22695 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22696 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22697 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22698 }
22699 {
22700 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22701 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22702 written |= (1 << 15);
22703 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22704 }
22705 {
22706 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22707 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22708 written |= (1 << 17);
22709 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22710 }
22711 {
22712 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22713 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22714 written |= (1 << 16);
22715 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22716 }
22717 {
22718 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22719 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22720 written |= (1 << 18);
22721 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22722 }
22723 }
22724 }
22725
22726 abuf->written = written;
22727 return vpc;
22728 #undef FLD
22729 }
22730
22731 /* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22732
22733 static SEM_PC
22734 SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22735 {
22736 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22737 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22738 int UNUSED written = 0;
22739 IADDR UNUSED pc = abuf->addr;
22740 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22741
22742 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22743 frvbf_media_register_not_aligned (current_cpu);
22744 } else {
22745 {
22746 HI tmp_a1;
22747 HI tmp_a2;
22748 HI tmp_a3;
22749 HI tmp_a4;
22750 HI tmp_b1;
22751 HI tmp_b2;
22752 HI tmp_b3;
22753 HI tmp_b4;
22754 {
22755 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22756 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22757 written |= (1 << 14);
22758 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22759 }
22760 {
22761 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22762 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22763 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22764 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22765 }
22766 {
22767 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22768 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22769 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22770 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22771 }
22772 {
22773 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));
22774 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22775 written |= (1 << 15);
22776 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22777 }
22778 {
22779 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));
22780 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22781 written |= (1 << 17);
22782 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22783 }
22784 {
22785 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));
22786 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22787 written |= (1 << 16);
22788 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22789 }
22790 {
22791 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));
22792 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22793 written |= (1 << 18);
22794 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22795 }
22796 }
22797 }
22798
22799 abuf->written = written;
22800 return vpc;
22801 #undef FLD
22802 }
22803
22804 /* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22805
22806 static SEM_PC
22807 SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22808 {
22809 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22810 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22811 int UNUSED written = 0;
22812 IADDR UNUSED pc = abuf->addr;
22813 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22814
22815 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22816 frvbf_media_register_not_aligned (current_cpu);
22817 } else {
22818 {
22819 {
22820 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22822 written |= (1 << 9);
22823 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22824 }
22825 {
22826 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22827 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22828 written |= (1 << 10);
22829 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22830 }
22831 {
22832 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22833 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22834 written |= (1 << 11);
22835 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22836 }
22837 {
22838 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22839 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22840 written |= (1 << 13);
22841 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22842 }
22843 {
22844 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22845 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22846 written |= (1 << 12);
22847 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22848 }
22849 {
22850 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22851 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22852 written |= (1 << 14);
22853 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22854 }
22855 }
22856 }
22857
22858 abuf->written = written;
22859 return vpc;
22860 #undef FLD
22861 }
22862
22863 /* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22864
22865 static SEM_PC
22866 SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22867 {
22868 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22869 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22870 int UNUSED written = 0;
22871 IADDR UNUSED pc = abuf->addr;
22872 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22873
22874 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22875 frvbf_media_register_not_aligned (current_cpu);
22876 } else {
22877 {
22878 {
22879 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22880 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22881 written |= (1 << 9);
22882 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22883 }
22884 {
22885 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22886 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22887 written |= (1 << 10);
22888 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22889 }
22890 {
22891 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22892 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22893 written |= (1 << 11);
22894 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22895 }
22896 {
22897 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22898 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22899 written |= (1 << 13);
22900 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22901 }
22902 {
22903 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22904 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22905 written |= (1 << 12);
22906 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22907 }
22908 {
22909 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22910 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22911 written |= (1 << 14);
22912 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22913 }
22914 }
22915 }
22916
22917 abuf->written = written;
22918 return vpc;
22919 #undef FLD
22920 }
22921
22922 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22923
22924 static SEM_PC
22925 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22926 {
22927 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22929 int UNUSED written = 0;
22930 IADDR UNUSED pc = abuf->addr;
22931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22932
22933 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22934 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22935 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22936 frvbf_media_acc_not_aligned (current_cpu);
22937 } else {
22938 {
22939 DI tmp_tmp;
22940 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
22941 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
22942 {
22943 {
22944 DI opval = MAKEDI (127, 0xffffffff);
22945 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22946 written |= (1 << 4);
22947 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22948 }
22949 frvbf_media_overflow (current_cpu, 8);
22950 }
22951 } else {
22952 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
22953 {
22954 {
22955 DI opval = INVDI (MAKEDI (127, 0xffffffff));
22956 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22957 written |= (1 << 4);
22958 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22959 }
22960 frvbf_media_overflow (current_cpu, 8);
22961 }
22962 } else {
22963 {
22964 DI opval = tmp_tmp;
22965 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22966 written |= (1 << 4);
22967 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22968 }
22969 }
22970 }
22971 }
22972 }
22973 }
22974 }
22975
22976 abuf->written = written;
22977 return vpc;
22978 #undef FLD
22979 }
22980
22981 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22982
22983 static SEM_PC
22984 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22985 {
22986 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22988 int UNUSED written = 0;
22989 IADDR UNUSED pc = abuf->addr;
22990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22991
22992 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22993 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22994 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22995 frvbf_media_acc_not_aligned (current_cpu);
22996 } else {
22997 {
22998 DI tmp_tmp;
22999 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23000 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23001 {
23002 {
23003 DI opval = MAKEDI (127, 0xffffffff);
23004 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23005 written |= (1 << 4);
23006 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23007 }
23008 frvbf_media_overflow (current_cpu, 8);
23009 }
23010 } else {
23011 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23012 {
23013 {
23014 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23015 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23016 written |= (1 << 4);
23017 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23018 }
23019 frvbf_media_overflow (current_cpu, 8);
23020 }
23021 } else {
23022 {
23023 DI opval = tmp_tmp;
23024 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23025 written |= (1 << 4);
23026 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23027 }
23028 }
23029 }
23030 }
23031 }
23032 }
23033 }
23034
23035 abuf->written = written;
23036 return vpc;
23037 #undef FLD
23038 }
23039
23040 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23041
23042 static SEM_PC
23043 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23044 {
23045 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23046 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23047 int UNUSED written = 0;
23048 IADDR UNUSED pc = abuf->addr;
23049 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23050
23051 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23052 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23053 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23054 frvbf_media_acc_not_aligned (current_cpu);
23055 } else {
23056 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23057 frvbf_media_acc_not_aligned (current_cpu);
23058 } else {
23059 {
23060 {
23061 DI tmp_tmp;
23062 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23063 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23064 {
23065 {
23066 DI opval = MAKEDI (127, 0xffffffff);
23067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23068 written |= (1 << 6);
23069 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23070 }
23071 frvbf_media_overflow (current_cpu, 8);
23072 }
23073 } else {
23074 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23075 {
23076 {
23077 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23078 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23079 written |= (1 << 6);
23080 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23081 }
23082 frvbf_media_overflow (current_cpu, 8);
23083 }
23084 } else {
23085 {
23086 DI opval = tmp_tmp;
23087 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23088 written |= (1 << 6);
23089 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23090 }
23091 }
23092 }
23093 }
23094 {
23095 DI tmp_tmp;
23096 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23097 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23098 {
23099 {
23100 DI opval = MAKEDI (127, 0xffffffff);
23101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23102 written |= (1 << 7);
23103 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23104 }
23105 frvbf_media_overflow (current_cpu, 4);
23106 }
23107 } else {
23108 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23109 {
23110 {
23111 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23112 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23113 written |= (1 << 7);
23114 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23115 }
23116 frvbf_media_overflow (current_cpu, 4);
23117 }
23118 } else {
23119 {
23120 DI opval = tmp_tmp;
23121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23122 written |= (1 << 7);
23123 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23124 }
23125 }
23126 }
23127 }
23128 }
23129 }
23130 }
23131 }
23132 }
23133
23134 abuf->written = written;
23135 return vpc;
23136 #undef FLD
23137 }
23138
23139 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23140
23141 static SEM_PC
23142 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23143 {
23144 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23146 int UNUSED written = 0;
23147 IADDR UNUSED pc = abuf->addr;
23148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23149
23150 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23151 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23152 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23153 frvbf_media_acc_not_aligned (current_cpu);
23154 } else {
23155 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23156 frvbf_media_acc_not_aligned (current_cpu);
23157 } else {
23158 {
23159 {
23160 DI tmp_tmp;
23161 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23162 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23163 {
23164 {
23165 DI opval = MAKEDI (127, 0xffffffff);
23166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23167 written |= (1 << 6);
23168 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23169 }
23170 frvbf_media_overflow (current_cpu, 8);
23171 }
23172 } else {
23173 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23174 {
23175 {
23176 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23177 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23178 written |= (1 << 6);
23179 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23180 }
23181 frvbf_media_overflow (current_cpu, 8);
23182 }
23183 } else {
23184 {
23185 DI opval = tmp_tmp;
23186 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23187 written |= (1 << 6);
23188 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23189 }
23190 }
23191 }
23192 }
23193 {
23194 DI tmp_tmp;
23195 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23196 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23197 {
23198 {
23199 DI opval = MAKEDI (127, 0xffffffff);
23200 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23201 written |= (1 << 7);
23202 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23203 }
23204 frvbf_media_overflow (current_cpu, 4);
23205 }
23206 } else {
23207 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23208 {
23209 {
23210 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23211 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23212 written |= (1 << 7);
23213 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23214 }
23215 frvbf_media_overflow (current_cpu, 4);
23216 }
23217 } else {
23218 {
23219 DI opval = tmp_tmp;
23220 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23221 written |= (1 << 7);
23222 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23223 }
23224 }
23225 }
23226 }
23227 }
23228 }
23229 }
23230 }
23231 }
23232
23233 abuf->written = written;
23234 return vpc;
23235 #undef FLD
23236 }
23237
23238 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23239
23240 static SEM_PC
23241 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23242 {
23243 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23245 int UNUSED written = 0;
23246 IADDR UNUSED pc = abuf->addr;
23247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23248
23249 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23250 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23251 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23252 frvbf_media_acc_not_aligned (current_cpu);
23253 } else {
23254 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23255 frvbf_media_acc_not_aligned (current_cpu);
23256 } else {
23257 {
23258 {
23259 DI tmp_tmp;
23260 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23261 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23262 {
23263 {
23264 DI opval = MAKEDI (127, 0xffffffff);
23265 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23266 written |= (1 << 4);
23267 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23268 }
23269 frvbf_media_overflow (current_cpu, 8);
23270 }
23271 } else {
23272 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23273 {
23274 {
23275 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23276 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23277 written |= (1 << 4);
23278 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23279 }
23280 frvbf_media_overflow (current_cpu, 8);
23281 }
23282 } else {
23283 {
23284 DI opval = tmp_tmp;
23285 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23286 written |= (1 << 4);
23287 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23288 }
23289 }
23290 }
23291 }
23292 {
23293 DI tmp_tmp;
23294 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23295 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23296 {
23297 {
23298 DI opval = MAKEDI (127, 0xffffffff);
23299 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23300 written |= (1 << 5);
23301 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23302 }
23303 frvbf_media_overflow (current_cpu, 4);
23304 }
23305 } else {
23306 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23307 {
23308 {
23309 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23310 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23311 written |= (1 << 5);
23312 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23313 }
23314 frvbf_media_overflow (current_cpu, 4);
23315 }
23316 } else {
23317 {
23318 DI opval = tmp_tmp;
23319 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23320 written |= (1 << 5);
23321 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23322 }
23323 }
23324 }
23325 }
23326 }
23327 }
23328 }
23329 }
23330 }
23331
23332 abuf->written = written;
23333 return vpc;
23334 #undef FLD
23335 }
23336
23337 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23338
23339 static SEM_PC
23340 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23341 {
23342 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23344 int UNUSED written = 0;
23345 IADDR UNUSED pc = abuf->addr;
23346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23347
23348 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23349 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23350 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23351 frvbf_media_acc_not_aligned (current_cpu);
23352 } else {
23353 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23354 frvbf_media_acc_not_aligned (current_cpu);
23355 } else {
23356 {
23357 {
23358 DI tmp_tmp;
23359 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23360 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23361 {
23362 {
23363 DI opval = MAKEDI (127, 0xffffffff);
23364 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23365 written |= (1 << 6);
23366 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23367 }
23368 frvbf_media_overflow (current_cpu, 8);
23369 }
23370 } else {
23371 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23372 {
23373 {
23374 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23375 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23376 written |= (1 << 6);
23377 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23378 }
23379 frvbf_media_overflow (current_cpu, 8);
23380 }
23381 } else {
23382 {
23383 DI opval = tmp_tmp;
23384 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23385 written |= (1 << 6);
23386 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23387 }
23388 }
23389 }
23390 }
23391 {
23392 DI tmp_tmp;
23393 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23394 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23395 {
23396 {
23397 DI opval = MAKEDI (127, 0xffffffff);
23398 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23399 written |= (1 << 7);
23400 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23401 }
23402 frvbf_media_overflow (current_cpu, 4);
23403 }
23404 } else {
23405 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23406 {
23407 {
23408 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23409 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23410 written |= (1 << 7);
23411 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23412 }
23413 frvbf_media_overflow (current_cpu, 4);
23414 }
23415 } else {
23416 {
23417 DI opval = tmp_tmp;
23418 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23419 written |= (1 << 7);
23420 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23421 }
23422 }
23423 }
23424 }
23425 {
23426 DI tmp_tmp;
23427 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23428 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23429 {
23430 {
23431 DI opval = MAKEDI (127, 0xffffffff);
23432 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23433 written |= (1 << 8);
23434 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23435 }
23436 frvbf_media_overflow (current_cpu, 2);
23437 }
23438 } else {
23439 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23440 {
23441 {
23442 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23443 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23444 written |= (1 << 8);
23445 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23446 }
23447 frvbf_media_overflow (current_cpu, 2);
23448 }
23449 } else {
23450 {
23451 DI opval = tmp_tmp;
23452 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23453 written |= (1 << 8);
23454 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23455 }
23456 }
23457 }
23458 }
23459 {
23460 DI tmp_tmp;
23461 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23462 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23463 {
23464 {
23465 DI opval = MAKEDI (127, 0xffffffff);
23466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23467 written |= (1 << 9);
23468 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23469 }
23470 frvbf_media_overflow (current_cpu, 1);
23471 }
23472 } else {
23473 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23474 {
23475 {
23476 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23477 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23478 written |= (1 << 9);
23479 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23480 }
23481 frvbf_media_overflow (current_cpu, 1);
23482 }
23483 } else {
23484 {
23485 DI opval = tmp_tmp;
23486 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23487 written |= (1 << 9);
23488 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23489 }
23490 }
23491 }
23492 }
23493 }
23494 }
23495 }
23496 }
23497 }
23498
23499 abuf->written = written;
23500 return vpc;
23501 #undef FLD
23502 }
23503
23504 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23505
23506 static SEM_PC
23507 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23508 {
23509 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23510 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23511 int UNUSED written = 0;
23512 IADDR UNUSED pc = abuf->addr;
23513 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23514
23515 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23516 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23517 frvbf_media_acc_not_aligned (current_cpu);
23518 } else {
23519 {
23520 HI tmp_argihi;
23521 HI tmp_argilo;
23522 HI tmp_argjhi;
23523 HI tmp_argjlo;
23524 {
23525 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23526 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23527 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23528 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23529 }
23530 {
23531 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23532 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23533 written |= (1 << 9);
23534 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23535 }
23536 {
23537 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23538 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23539 written |= (1 << 10);
23540 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23541 }
23542 }
23543 }
23544 }
23545
23546 abuf->written = written;
23547 return vpc;
23548 #undef FLD
23549 }
23550
23551 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23552
23553 static SEM_PC
23554 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23555 {
23556 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23557 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23558 int UNUSED written = 0;
23559 IADDR UNUSED pc = abuf->addr;
23560 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23561
23562 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23563 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23564 frvbf_media_acc_not_aligned (current_cpu);
23565 } else {
23566 {
23567 UHI tmp_argihi;
23568 UHI tmp_argilo;
23569 UHI tmp_argjhi;
23570 UHI tmp_argjlo;
23571 {
23572 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23573 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23574 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23575 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23576 }
23577 {
23578 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23579 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23580 written |= (1 << 9);
23581 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23582 }
23583 {
23584 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23585 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23586 written |= (1 << 10);
23587 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23588 }
23589 }
23590 }
23591 }
23592
23593 abuf->written = written;
23594 return vpc;
23595 #undef FLD
23596 }
23597
23598 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23599
23600 static SEM_PC
23601 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23602 {
23603 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23604 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23605 int UNUSED written = 0;
23606 IADDR UNUSED pc = abuf->addr;
23607 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23608
23609 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23610 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23611 frvbf_media_acc_not_aligned (current_cpu);
23612 } else {
23613 {
23614 HI tmp_argihi;
23615 HI tmp_argilo;
23616 HI tmp_argjhi;
23617 HI tmp_argjlo;
23618 {
23619 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23620 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23621 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23622 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23623 }
23624 {
23625 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23626 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23627 written |= (1 << 9);
23628 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23629 }
23630 {
23631 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23632 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23633 written |= (1 << 10);
23634 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23635 }
23636 }
23637 }
23638 }
23639
23640 abuf->written = written;
23641 return vpc;
23642 #undef FLD
23643 }
23644
23645 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23646
23647 static SEM_PC
23648 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23649 {
23650 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23651 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23652 int UNUSED written = 0;
23653 IADDR UNUSED pc = abuf->addr;
23654 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23655
23656 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23657 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23658 frvbf_media_acc_not_aligned (current_cpu);
23659 } else {
23660 {
23661 UHI tmp_argihi;
23662 UHI tmp_argilo;
23663 UHI tmp_argjhi;
23664 UHI tmp_argjlo;
23665 {
23666 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23667 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23668 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23669 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23670 }
23671 {
23672 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23673 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23674 written |= (1 << 9);
23675 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23676 }
23677 {
23678 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23679 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23680 written |= (1 << 10);
23681 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23682 }
23683 }
23684 }
23685 }
23686
23687 abuf->written = written;
23688 return vpc;
23689 #undef FLD
23690 }
23691
23692 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23693
23694 static SEM_PC
23695 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23696 {
23697 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23698 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23699 int UNUSED written = 0;
23700 IADDR UNUSED pc = abuf->addr;
23701 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23702
23703 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23704 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23705 frvbf_media_acc_not_aligned (current_cpu);
23706 } else {
23707 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23708 {
23709 HI tmp_argihi;
23710 HI tmp_argilo;
23711 HI tmp_argjhi;
23712 HI tmp_argjlo;
23713 {
23714 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23715 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23716 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23717 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23718 }
23719 {
23720 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23721 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23722 written |= (1 << 11);
23723 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23724 }
23725 {
23726 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23727 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23728 written |= (1 << 12);
23729 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23730 }
23731 }
23732 }
23733 }
23734 }
23735
23736 abuf->written = written;
23737 return vpc;
23738 #undef FLD
23739 }
23740
23741 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23742
23743 static SEM_PC
23744 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23745 {
23746 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23747 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23748 int UNUSED written = 0;
23749 IADDR UNUSED pc = abuf->addr;
23750 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23751
23752 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23753 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23754 frvbf_media_acc_not_aligned (current_cpu);
23755 } else {
23756 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23757 {
23758 UHI tmp_argihi;
23759 UHI tmp_argilo;
23760 UHI tmp_argjhi;
23761 UHI tmp_argjlo;
23762 {
23763 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23764 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23765 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23766 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23767 }
23768 {
23769 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23770 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23771 written |= (1 << 11);
23772 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23773 }
23774 {
23775 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23776 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23777 written |= (1 << 12);
23778 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23779 }
23780 }
23781 }
23782 }
23783 }
23784
23785 abuf->written = written;
23786 return vpc;
23787 #undef FLD
23788 }
23789
23790 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23791
23792 static SEM_PC
23793 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23794 {
23795 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23796 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23797 int UNUSED written = 0;
23798 IADDR UNUSED pc = abuf->addr;
23799 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23800
23801 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23802 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23803 frvbf_media_acc_not_aligned (current_cpu);
23804 } else {
23805 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23806 frvbf_media_register_not_aligned (current_cpu);
23807 } else {
23808 {
23809 HI tmp_argihi;
23810 HI tmp_argilo;
23811 HI tmp_argjhi;
23812 HI tmp_argjlo;
23813 {
23814 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23815 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23816 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23817 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23818 }
23819 {
23820 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23821 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23822 written |= (1 << 13);
23823 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23824 }
23825 {
23826 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23827 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23828 written |= (1 << 14);
23829 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23830 }
23831 {
23832 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23833 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23834 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23835 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23836 }
23837 {
23838 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23839 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23840 written |= (1 << 15);
23841 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23842 }
23843 {
23844 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23845 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23846 written |= (1 << 16);
23847 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23848 }
23849 }
23850 }
23851 }
23852 }
23853
23854 abuf->written = written;
23855 return vpc;
23856 #undef FLD
23857 }
23858
23859 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23860
23861 static SEM_PC
23862 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23863 {
23864 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23866 int UNUSED written = 0;
23867 IADDR UNUSED pc = abuf->addr;
23868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23869
23870 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23871 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23872 frvbf_media_acc_not_aligned (current_cpu);
23873 } else {
23874 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23875 frvbf_media_register_not_aligned (current_cpu);
23876 } else {
23877 {
23878 UHI tmp_argihi;
23879 UHI tmp_argilo;
23880 UHI tmp_argjhi;
23881 UHI tmp_argjlo;
23882 {
23883 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23884 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23885 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23886 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23887 }
23888 {
23889 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23890 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23891 written |= (1 << 13);
23892 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23893 }
23894 {
23895 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23896 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23897 written |= (1 << 14);
23898 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23899 }
23900 {
23901 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23902 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23903 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23904 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23905 }
23906 {
23907 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23908 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23909 written |= (1 << 15);
23910 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23911 }
23912 {
23913 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23914 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23915 written |= (1 << 16);
23916 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23917 }
23918 }
23919 }
23920 }
23921 }
23922
23923 abuf->written = written;
23924 return vpc;
23925 #undef FLD
23926 }
23927
23928 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23929
23930 static SEM_PC
23931 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23932 {
23933 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23935 int UNUSED written = 0;
23936 IADDR UNUSED pc = abuf->addr;
23937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23938
23939 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23940 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23941 frvbf_media_acc_not_aligned (current_cpu);
23942 } else {
23943 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23944 frvbf_media_register_not_aligned (current_cpu);
23945 } else {
23946 {
23947 HI tmp_argihi;
23948 HI tmp_argilo;
23949 HI tmp_argjhi;
23950 HI tmp_argjlo;
23951 {
23952 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23953 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23954 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23955 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23956 }
23957 {
23958 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23959 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23960 written |= (1 << 13);
23961 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23962 }
23963 {
23964 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23965 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23966 written |= (1 << 14);
23967 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23968 }
23969 {
23970 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23971 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23972 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23973 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23974 }
23975 {
23976 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23978 written |= (1 << 15);
23979 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23980 }
23981 {
23982 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23983 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23984 written |= (1 << 16);
23985 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23986 }
23987 }
23988 }
23989 }
23990 }
23991
23992 abuf->written = written;
23993 return vpc;
23994 #undef FLD
23995 }
23996
23997 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23998
23999 static SEM_PC
24000 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24001 {
24002 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24003 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24004 int UNUSED written = 0;
24005 IADDR UNUSED pc = abuf->addr;
24006 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24007
24008 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24009 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24010 frvbf_media_acc_not_aligned (current_cpu);
24011 } else {
24012 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24013 frvbf_media_register_not_aligned (current_cpu);
24014 } else {
24015 {
24016 UHI tmp_argihi;
24017 UHI tmp_argilo;
24018 UHI tmp_argjhi;
24019 UHI tmp_argjlo;
24020 {
24021 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24022 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24023 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24024 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24025 }
24026 {
24027 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24028 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24029 written |= (1 << 13);
24030 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24031 }
24032 {
24033 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24034 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24035 written |= (1 << 14);
24036 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24037 }
24038 {
24039 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24040 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24041 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24042 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24043 }
24044 {
24045 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24046 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24047 written |= (1 << 15);
24048 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24049 }
24050 {
24051 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24052 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24053 written |= (1 << 16);
24054 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24055 }
24056 }
24057 }
24058 }
24059 }
24060
24061 abuf->written = written;
24062 return vpc;
24063 #undef FLD
24064 }
24065
24066 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24067
24068 static SEM_PC
24069 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24070 {
24071 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24073 int UNUSED written = 0;
24074 IADDR UNUSED pc = abuf->addr;
24075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24076
24077 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24078 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24079 frvbf_media_acc_not_aligned (current_cpu);
24080 } else {
24081 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24082 frvbf_media_register_not_aligned (current_cpu);
24083 } else {
24084 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24085 {
24086 HI tmp_argihi;
24087 HI tmp_argilo;
24088 HI tmp_argjhi;
24089 HI tmp_argjlo;
24090 {
24091 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24092 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24093 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24094 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24095 }
24096 {
24097 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24098 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24099 written |= (1 << 15);
24100 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24101 }
24102 {
24103 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24105 written |= (1 << 16);
24106 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24107 }
24108 {
24109 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24110 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24111 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24112 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24113 }
24114 {
24115 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24116 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24117 written |= (1 << 17);
24118 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24119 }
24120 {
24121 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24122 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24123 written |= (1 << 18);
24124 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24125 }
24126 }
24127 }
24128 }
24129 }
24130 }
24131
24132 abuf->written = written;
24133 return vpc;
24134 #undef FLD
24135 }
24136
24137 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24138
24139 static SEM_PC
24140 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24141 {
24142 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24144 int UNUSED written = 0;
24145 IADDR UNUSED pc = abuf->addr;
24146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24147
24148 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24149 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24150 frvbf_media_acc_not_aligned (current_cpu);
24151 } else {
24152 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24153 frvbf_media_register_not_aligned (current_cpu);
24154 } else {
24155 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24156 {
24157 UHI tmp_argihi;
24158 UHI tmp_argilo;
24159 UHI tmp_argjhi;
24160 UHI tmp_argjlo;
24161 {
24162 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24163 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24164 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24165 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24166 }
24167 {
24168 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24169 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24170 written |= (1 << 15);
24171 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24172 }
24173 {
24174 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24175 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24176 written |= (1 << 16);
24177 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24178 }
24179 {
24180 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24181 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24182 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24183 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24184 }
24185 {
24186 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24187 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24188 written |= (1 << 17);
24189 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24190 }
24191 {
24192 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24193 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24194 written |= (1 << 18);
24195 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24196 }
24197 }
24198 }
24199 }
24200 }
24201 }
24202
24203 abuf->written = written;
24204 return vpc;
24205 #undef FLD
24206 }
24207
24208 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24209
24210 static SEM_PC
24211 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24212 {
24213 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24214 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24215 int UNUSED written = 0;
24216 IADDR UNUSED pc = abuf->addr;
24217 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24218
24219 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24220 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24221 frvbf_media_acc_not_aligned (current_cpu);
24222 } else {
24223 {
24224 HI tmp_argihi;
24225 HI tmp_argilo;
24226 HI tmp_argjhi;
24227 HI tmp_argjlo;
24228 {
24229 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24230 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24231 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24232 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24233 }
24234 {
24235 DI tmp_tmp;
24236 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24237 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24238 {
24239 {
24240 DI opval = MAKEDI (127, 0xffffffff);
24241 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24242 written |= (1 << 11);
24243 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24244 }
24245 frvbf_media_overflow (current_cpu, 8);
24246 }
24247 } else {
24248 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24249 {
24250 {
24251 DI opval = MAKEDI (0xffffff80, 0);
24252 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24253 written |= (1 << 11);
24254 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24255 }
24256 frvbf_media_overflow (current_cpu, 8);
24257 }
24258 } else {
24259 {
24260 DI opval = tmp_tmp;
24261 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24262 written |= (1 << 11);
24263 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24264 }
24265 }
24266 }
24267 }
24268 {
24269 DI tmp_tmp;
24270 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24271 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24272 {
24273 {
24274 DI opval = MAKEDI (127, 0xffffffff);
24275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24276 written |= (1 << 12);
24277 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24278 }
24279 frvbf_media_overflow (current_cpu, 4);
24280 }
24281 } else {
24282 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24283 {
24284 {
24285 DI opval = MAKEDI (0xffffff80, 0);
24286 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24287 written |= (1 << 12);
24288 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24289 }
24290 frvbf_media_overflow (current_cpu, 4);
24291 }
24292 } else {
24293 {
24294 DI opval = tmp_tmp;
24295 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24296 written |= (1 << 12);
24297 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24298 }
24299 }
24300 }
24301 }
24302 }
24303 }
24304 }
24305
24306 abuf->written = written;
24307 return vpc;
24308 #undef FLD
24309 }
24310
24311 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24312
24313 static SEM_PC
24314 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24315 {
24316 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24317 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24318 int UNUSED written = 0;
24319 IADDR UNUSED pc = abuf->addr;
24320 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24321
24322 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24323 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24324 frvbf_media_acc_not_aligned (current_cpu);
24325 } else {
24326 {
24327 UHI tmp_argihi;
24328 UHI tmp_argilo;
24329 UHI tmp_argjhi;
24330 UHI tmp_argjlo;
24331 {
24332 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24333 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24334 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24335 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24336 }
24337 {
24338 DI tmp_tmp;
24339 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24340 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24341 {
24342 {
24343 UDI opval = MAKEDI (255, 0xffffffff);
24344 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24345 written |= (1 << 11);
24346 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24347 }
24348 frvbf_media_overflow (current_cpu, 8);
24349 }
24350 } else {
24351 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24352 {
24353 {
24354 UDI opval = MAKEDI (0, 0);
24355 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24356 written |= (1 << 11);
24357 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24358 }
24359 frvbf_media_overflow (current_cpu, 8);
24360 }
24361 } else {
24362 {
24363 UDI opval = tmp_tmp;
24364 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24365 written |= (1 << 11);
24366 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24367 }
24368 }
24369 }
24370 }
24371 {
24372 DI tmp_tmp;
24373 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24374 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24375 {
24376 {
24377 UDI opval = MAKEDI (255, 0xffffffff);
24378 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24379 written |= (1 << 12);
24380 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24381 }
24382 frvbf_media_overflow (current_cpu, 4);
24383 }
24384 } else {
24385 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24386 {
24387 {
24388 UDI opval = MAKEDI (0, 0);
24389 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24390 written |= (1 << 12);
24391 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24392 }
24393 frvbf_media_overflow (current_cpu, 4);
24394 }
24395 } else {
24396 {
24397 UDI opval = tmp_tmp;
24398 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24399 written |= (1 << 12);
24400 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24401 }
24402 }
24403 }
24404 }
24405 }
24406 }
24407 }
24408
24409 abuf->written = written;
24410 return vpc;
24411 #undef FLD
24412 }
24413
24414 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24415
24416 static SEM_PC
24417 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24418 {
24419 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24421 int UNUSED written = 0;
24422 IADDR UNUSED pc = abuf->addr;
24423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24424
24425 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24426 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24427 frvbf_media_acc_not_aligned (current_cpu);
24428 } else {
24429 {
24430 HI tmp_argihi;
24431 HI tmp_argilo;
24432 HI tmp_argjhi;
24433 HI tmp_argjlo;
24434 {
24435 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24436 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24437 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24438 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24439 }
24440 {
24441 DI tmp_tmp;
24442 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24443 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24444 {
24445 {
24446 DI opval = MAKEDI (127, 0xffffffff);
24447 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24448 written |= (1 << 11);
24449 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24450 }
24451 frvbf_media_overflow (current_cpu, 8);
24452 }
24453 } else {
24454 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24455 {
24456 {
24457 DI opval = MAKEDI (0xffffff80, 0);
24458 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24459 written |= (1 << 11);
24460 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24461 }
24462 frvbf_media_overflow (current_cpu, 8);
24463 }
24464 } else {
24465 {
24466 DI opval = tmp_tmp;
24467 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24468 written |= (1 << 11);
24469 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24470 }
24471 }
24472 }
24473 }
24474 {
24475 DI tmp_tmp;
24476 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24477 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24478 {
24479 {
24480 DI opval = MAKEDI (127, 0xffffffff);
24481 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24482 written |= (1 << 12);
24483 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24484 }
24485 frvbf_media_overflow (current_cpu, 4);
24486 }
24487 } else {
24488 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24489 {
24490 {
24491 DI opval = MAKEDI (0xffffff80, 0);
24492 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24493 written |= (1 << 12);
24494 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24495 }
24496 frvbf_media_overflow (current_cpu, 4);
24497 }
24498 } else {
24499 {
24500 DI opval = tmp_tmp;
24501 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24502 written |= (1 << 12);
24503 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24504 }
24505 }
24506 }
24507 }
24508 }
24509 }
24510 }
24511
24512 abuf->written = written;
24513 return vpc;
24514 #undef FLD
24515 }
24516
24517 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24518
24519 static SEM_PC
24520 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24521 {
24522 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24524 int UNUSED written = 0;
24525 IADDR UNUSED pc = abuf->addr;
24526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24527
24528 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24529 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24530 frvbf_media_acc_not_aligned (current_cpu);
24531 } else {
24532 {
24533 UHI tmp_argihi;
24534 UHI tmp_argilo;
24535 UHI tmp_argjhi;
24536 UHI tmp_argjlo;
24537 {
24538 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24539 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24540 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24541 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24542 }
24543 {
24544 DI tmp_tmp;
24545 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24546 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24547 {
24548 {
24549 UDI opval = MAKEDI (255, 0xffffffff);
24550 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24551 written |= (1 << 11);
24552 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24553 }
24554 frvbf_media_overflow (current_cpu, 8);
24555 }
24556 } else {
24557 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24558 {
24559 {
24560 UDI opval = MAKEDI (0, 0);
24561 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24562 written |= (1 << 11);
24563 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24564 }
24565 frvbf_media_overflow (current_cpu, 8);
24566 }
24567 } else {
24568 {
24569 UDI opval = tmp_tmp;
24570 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24571 written |= (1 << 11);
24572 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24573 }
24574 }
24575 }
24576 }
24577 {
24578 DI tmp_tmp;
24579 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24580 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24581 {
24582 {
24583 UDI opval = MAKEDI (255, 0xffffffff);
24584 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24585 written |= (1 << 12);
24586 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24587 }
24588 frvbf_media_overflow (current_cpu, 4);
24589 }
24590 } else {
24591 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24592 {
24593 {
24594 UDI opval = MAKEDI (0, 0);
24595 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24596 written |= (1 << 12);
24597 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24598 }
24599 frvbf_media_overflow (current_cpu, 4);
24600 }
24601 } else {
24602 {
24603 UDI opval = tmp_tmp;
24604 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24605 written |= (1 << 12);
24606 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24607 }
24608 }
24609 }
24610 }
24611 }
24612 }
24613 }
24614
24615 abuf->written = written;
24616 return vpc;
24617 #undef FLD
24618 }
24619
24620 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24621
24622 static SEM_PC
24623 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24624 {
24625 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24626 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24627 int UNUSED written = 0;
24628 IADDR UNUSED pc = abuf->addr;
24629 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24630
24631 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24632 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24633 frvbf_media_acc_not_aligned (current_cpu);
24634 } else {
24635 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24636 {
24637 HI tmp_argihi;
24638 HI tmp_argilo;
24639 HI tmp_argjhi;
24640 HI tmp_argjlo;
24641 {
24642 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24643 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24644 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24645 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24646 }
24647 {
24648 DI tmp_tmp;
24649 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24650 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24651 {
24652 {
24653 DI opval = MAKEDI (127, 0xffffffff);
24654 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24655 written |= (1 << 13);
24656 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24657 }
24658 frvbf_media_overflow (current_cpu, 8);
24659 }
24660 } else {
24661 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24662 {
24663 {
24664 DI opval = MAKEDI (0xffffff80, 0);
24665 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24666 written |= (1 << 13);
24667 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24668 }
24669 frvbf_media_overflow (current_cpu, 8);
24670 }
24671 } else {
24672 {
24673 DI opval = tmp_tmp;
24674 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24675 written |= (1 << 13);
24676 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24677 }
24678 }
24679 }
24680 }
24681 {
24682 DI tmp_tmp;
24683 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24684 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24685 {
24686 {
24687 DI opval = MAKEDI (127, 0xffffffff);
24688 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24689 written |= (1 << 14);
24690 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24691 }
24692 frvbf_media_overflow (current_cpu, 4);
24693 }
24694 } else {
24695 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24696 {
24697 {
24698 DI opval = MAKEDI (0xffffff80, 0);
24699 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24700 written |= (1 << 14);
24701 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24702 }
24703 frvbf_media_overflow (current_cpu, 4);
24704 }
24705 } else {
24706 {
24707 DI opval = tmp_tmp;
24708 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24709 written |= (1 << 14);
24710 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24711 }
24712 }
24713 }
24714 }
24715 }
24716 }
24717 }
24718 }
24719
24720 abuf->written = written;
24721 return vpc;
24722 #undef FLD
24723 }
24724
24725 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24726
24727 static SEM_PC
24728 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24729 {
24730 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24731 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24732 int UNUSED written = 0;
24733 IADDR UNUSED pc = abuf->addr;
24734 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24735
24736 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24737 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24738 frvbf_media_acc_not_aligned (current_cpu);
24739 } else {
24740 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24741 {
24742 UHI tmp_argihi;
24743 UHI tmp_argilo;
24744 UHI tmp_argjhi;
24745 UHI tmp_argjlo;
24746 {
24747 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24748 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24749 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24750 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24751 }
24752 {
24753 DI tmp_tmp;
24754 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24755 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24756 {
24757 {
24758 UDI opval = MAKEDI (255, 0xffffffff);
24759 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24760 written |= (1 << 13);
24761 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24762 }
24763 frvbf_media_overflow (current_cpu, 8);
24764 }
24765 } else {
24766 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24767 {
24768 {
24769 UDI opval = MAKEDI (0, 0);
24770 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24771 written |= (1 << 13);
24772 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24773 }
24774 frvbf_media_overflow (current_cpu, 8);
24775 }
24776 } else {
24777 {
24778 UDI opval = tmp_tmp;
24779 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24780 written |= (1 << 13);
24781 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24782 }
24783 }
24784 }
24785 }
24786 {
24787 DI tmp_tmp;
24788 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24789 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24790 {
24791 {
24792 UDI opval = MAKEDI (255, 0xffffffff);
24793 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24794 written |= (1 << 14);
24795 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24796 }
24797 frvbf_media_overflow (current_cpu, 4);
24798 }
24799 } else {
24800 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24801 {
24802 {
24803 UDI opval = MAKEDI (0, 0);
24804 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24805 written |= (1 << 14);
24806 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24807 }
24808 frvbf_media_overflow (current_cpu, 4);
24809 }
24810 } else {
24811 {
24812 UDI opval = tmp_tmp;
24813 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24814 written |= (1 << 14);
24815 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24816 }
24817 }
24818 }
24819 }
24820 }
24821 }
24822 }
24823 }
24824
24825 abuf->written = written;
24826 return vpc;
24827 #undef FLD
24828 }
24829
24830 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24831
24832 static SEM_PC
24833 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24834 {
24835 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24837 int UNUSED written = 0;
24838 IADDR UNUSED pc = abuf->addr;
24839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24840
24841 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24842 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24843 frvbf_media_acc_not_aligned (current_cpu);
24844 } else {
24845 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24846 frvbf_media_register_not_aligned (current_cpu);
24847 } else {
24848 {
24849 HI tmp_argihi;
24850 HI tmp_argilo;
24851 HI tmp_argjhi;
24852 HI tmp_argjlo;
24853 {
24854 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24855 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24856 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24857 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24858 }
24859 {
24860 DI tmp_tmp;
24861 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24862 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24863 {
24864 {
24865 DI opval = MAKEDI (127, 0xffffffff);
24866 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24867 written |= (1 << 17);
24868 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24869 }
24870 frvbf_media_overflow (current_cpu, 8);
24871 }
24872 } else {
24873 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24874 {
24875 {
24876 DI opval = MAKEDI (0xffffff80, 0);
24877 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24878 written |= (1 << 17);
24879 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24880 }
24881 frvbf_media_overflow (current_cpu, 8);
24882 }
24883 } else {
24884 {
24885 DI opval = tmp_tmp;
24886 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24887 written |= (1 << 17);
24888 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24889 }
24890 }
24891 }
24892 }
24893 {
24894 DI tmp_tmp;
24895 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24896 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24897 {
24898 {
24899 DI opval = MAKEDI (127, 0xffffffff);
24900 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24901 written |= (1 << 18);
24902 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24903 }
24904 frvbf_media_overflow (current_cpu, 4);
24905 }
24906 } else {
24907 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24908 {
24909 {
24910 DI opval = MAKEDI (0xffffff80, 0);
24911 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24912 written |= (1 << 18);
24913 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24914 }
24915 frvbf_media_overflow (current_cpu, 4);
24916 }
24917 } else {
24918 {
24919 DI opval = tmp_tmp;
24920 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24921 written |= (1 << 18);
24922 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24923 }
24924 }
24925 }
24926 }
24927 {
24928 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24929 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24930 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24931 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24932 }
24933 {
24934 DI tmp_tmp;
24935 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24936 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24937 {
24938 {
24939 DI opval = MAKEDI (127, 0xffffffff);
24940 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24941 written |= (1 << 19);
24942 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24943 }
24944 frvbf_media_overflow (current_cpu, 2);
24945 }
24946 } else {
24947 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24948 {
24949 {
24950 DI opval = MAKEDI (0xffffff80, 0);
24951 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24952 written |= (1 << 19);
24953 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24954 }
24955 frvbf_media_overflow (current_cpu, 2);
24956 }
24957 } else {
24958 {
24959 DI opval = tmp_tmp;
24960 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24961 written |= (1 << 19);
24962 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24963 }
24964 }
24965 }
24966 }
24967 {
24968 DI tmp_tmp;
24969 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24970 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24971 {
24972 {
24973 DI opval = MAKEDI (127, 0xffffffff);
24974 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24975 written |= (1 << 20);
24976 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24977 }
24978 frvbf_media_overflow (current_cpu, 1);
24979 }
24980 } else {
24981 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24982 {
24983 {
24984 DI opval = MAKEDI (0xffffff80, 0);
24985 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24986 written |= (1 << 20);
24987 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24988 }
24989 frvbf_media_overflow (current_cpu, 1);
24990 }
24991 } else {
24992 {
24993 DI opval = tmp_tmp;
24994 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24995 written |= (1 << 20);
24996 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24997 }
24998 }
24999 }
25000 }
25001 }
25002 }
25003 }
25004 }
25005
25006 abuf->written = written;
25007 return vpc;
25008 #undef FLD
25009 }
25010
25011 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25012
25013 static SEM_PC
25014 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25015 {
25016 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25018 int UNUSED written = 0;
25019 IADDR UNUSED pc = abuf->addr;
25020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25021
25022 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25023 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25024 frvbf_media_acc_not_aligned (current_cpu);
25025 } else {
25026 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25027 frvbf_media_register_not_aligned (current_cpu);
25028 } else {
25029 {
25030 UHI tmp_argihi;
25031 UHI tmp_argilo;
25032 UHI tmp_argjhi;
25033 UHI tmp_argjlo;
25034 {
25035 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25036 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25037 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25038 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25039 }
25040 {
25041 DI tmp_tmp;
25042 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25043 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25044 {
25045 {
25046 UDI opval = MAKEDI (255, 0xffffffff);
25047 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25048 written |= (1 << 17);
25049 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25050 }
25051 frvbf_media_overflow (current_cpu, 8);
25052 }
25053 } else {
25054 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25055 {
25056 {
25057 UDI opval = MAKEDI (0, 0);
25058 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25059 written |= (1 << 17);
25060 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25061 }
25062 frvbf_media_overflow (current_cpu, 8);
25063 }
25064 } else {
25065 {
25066 UDI opval = tmp_tmp;
25067 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25068 written |= (1 << 17);
25069 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25070 }
25071 }
25072 }
25073 }
25074 {
25075 DI tmp_tmp;
25076 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25077 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25078 {
25079 {
25080 UDI opval = MAKEDI (255, 0xffffffff);
25081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25082 written |= (1 << 18);
25083 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25084 }
25085 frvbf_media_overflow (current_cpu, 4);
25086 }
25087 } else {
25088 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25089 {
25090 {
25091 UDI opval = MAKEDI (0, 0);
25092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25093 written |= (1 << 18);
25094 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25095 }
25096 frvbf_media_overflow (current_cpu, 4);
25097 }
25098 } else {
25099 {
25100 UDI opval = tmp_tmp;
25101 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25102 written |= (1 << 18);
25103 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25104 }
25105 }
25106 }
25107 }
25108 {
25109 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25110 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25111 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25112 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25113 }
25114 {
25115 DI tmp_tmp;
25116 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25117 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25118 {
25119 {
25120 UDI opval = MAKEDI (255, 0xffffffff);
25121 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25122 written |= (1 << 19);
25123 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25124 }
25125 frvbf_media_overflow (current_cpu, 2);
25126 }
25127 } else {
25128 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25129 {
25130 {
25131 UDI opval = MAKEDI (0, 0);
25132 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25133 written |= (1 << 19);
25134 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25135 }
25136 frvbf_media_overflow (current_cpu, 2);
25137 }
25138 } else {
25139 {
25140 UDI opval = tmp_tmp;
25141 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25142 written |= (1 << 19);
25143 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25144 }
25145 }
25146 }
25147 }
25148 {
25149 DI tmp_tmp;
25150 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25151 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25152 {
25153 {
25154 UDI opval = MAKEDI (255, 0xffffffff);
25155 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25156 written |= (1 << 20);
25157 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25158 }
25159 frvbf_media_overflow (current_cpu, 1);
25160 }
25161 } else {
25162 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25163 {
25164 {
25165 UDI opval = MAKEDI (0, 0);
25166 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25167 written |= (1 << 20);
25168 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25169 }
25170 frvbf_media_overflow (current_cpu, 1);
25171 }
25172 } else {
25173 {
25174 UDI opval = tmp_tmp;
25175 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25176 written |= (1 << 20);
25177 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25178 }
25179 }
25180 }
25181 }
25182 }
25183 }
25184 }
25185 }
25186
25187 abuf->written = written;
25188 return vpc;
25189 #undef FLD
25190 }
25191
25192 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25193
25194 static SEM_PC
25195 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25196 {
25197 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25198 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25199 int UNUSED written = 0;
25200 IADDR UNUSED pc = abuf->addr;
25201 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25202
25203 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25204 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25205 frvbf_media_acc_not_aligned (current_cpu);
25206 } else {
25207 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25208 frvbf_media_register_not_aligned (current_cpu);
25209 } else {
25210 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25211 {
25212 HI tmp_argihi;
25213 HI tmp_argilo;
25214 HI tmp_argjhi;
25215 HI tmp_argjlo;
25216 {
25217 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25218 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25219 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25220 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25221 }
25222 {
25223 DI tmp_tmp;
25224 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25225 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25226 {
25227 {
25228 DI opval = MAKEDI (127, 0xffffffff);
25229 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25230 written |= (1 << 19);
25231 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25232 }
25233 frvbf_media_overflow (current_cpu, 8);
25234 }
25235 } else {
25236 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25237 {
25238 {
25239 DI opval = MAKEDI (0xffffff80, 0);
25240 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25241 written |= (1 << 19);
25242 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25243 }
25244 frvbf_media_overflow (current_cpu, 8);
25245 }
25246 } else {
25247 {
25248 DI opval = tmp_tmp;
25249 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25250 written |= (1 << 19);
25251 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25252 }
25253 }
25254 }
25255 }
25256 {
25257 DI tmp_tmp;
25258 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25259 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25260 {
25261 {
25262 DI opval = MAKEDI (127, 0xffffffff);
25263 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25264 written |= (1 << 20);
25265 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25266 }
25267 frvbf_media_overflow (current_cpu, 4);
25268 }
25269 } else {
25270 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25271 {
25272 {
25273 DI opval = MAKEDI (0xffffff80, 0);
25274 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25275 written |= (1 << 20);
25276 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25277 }
25278 frvbf_media_overflow (current_cpu, 4);
25279 }
25280 } else {
25281 {
25282 DI opval = tmp_tmp;
25283 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25284 written |= (1 << 20);
25285 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25286 }
25287 }
25288 }
25289 }
25290 {
25291 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25292 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25293 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25294 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25295 }
25296 {
25297 DI tmp_tmp;
25298 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25299 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25300 {
25301 {
25302 DI opval = MAKEDI (127, 0xffffffff);
25303 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25304 written |= (1 << 21);
25305 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25306 }
25307 frvbf_media_overflow (current_cpu, 2);
25308 }
25309 } else {
25310 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25311 {
25312 {
25313 DI opval = MAKEDI (0xffffff80, 0);
25314 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25315 written |= (1 << 21);
25316 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25317 }
25318 frvbf_media_overflow (current_cpu, 2);
25319 }
25320 } else {
25321 {
25322 DI opval = tmp_tmp;
25323 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25324 written |= (1 << 21);
25325 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25326 }
25327 }
25328 }
25329 }
25330 {
25331 DI tmp_tmp;
25332 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25333 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25334 {
25335 {
25336 DI opval = MAKEDI (127, 0xffffffff);
25337 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25338 written |= (1 << 22);
25339 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25340 }
25341 frvbf_media_overflow (current_cpu, 1);
25342 }
25343 } else {
25344 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25345 {
25346 {
25347 DI opval = MAKEDI (0xffffff80, 0);
25348 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25349 written |= (1 << 22);
25350 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25351 }
25352 frvbf_media_overflow (current_cpu, 1);
25353 }
25354 } else {
25355 {
25356 DI opval = tmp_tmp;
25357 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25358 written |= (1 << 22);
25359 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25360 }
25361 }
25362 }
25363 }
25364 }
25365 }
25366 }
25367 }
25368 }
25369
25370 abuf->written = written;
25371 return vpc;
25372 #undef FLD
25373 }
25374
25375 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25376
25377 static SEM_PC
25378 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25379 {
25380 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25382 int UNUSED written = 0;
25383 IADDR UNUSED pc = abuf->addr;
25384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25385
25386 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25387 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25388 frvbf_media_acc_not_aligned (current_cpu);
25389 } else {
25390 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25391 frvbf_media_register_not_aligned (current_cpu);
25392 } else {
25393 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25394 {
25395 UHI tmp_argihi;
25396 UHI tmp_argilo;
25397 UHI tmp_argjhi;
25398 UHI tmp_argjlo;
25399 {
25400 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25401 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25402 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25403 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25404 }
25405 {
25406 DI tmp_tmp;
25407 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25408 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25409 {
25410 {
25411 UDI opval = MAKEDI (255, 0xffffffff);
25412 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25413 written |= (1 << 19);
25414 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25415 }
25416 frvbf_media_overflow (current_cpu, 8);
25417 }
25418 } else {
25419 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25420 {
25421 {
25422 UDI opval = MAKEDI (0, 0);
25423 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25424 written |= (1 << 19);
25425 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25426 }
25427 frvbf_media_overflow (current_cpu, 8);
25428 }
25429 } else {
25430 {
25431 UDI opval = tmp_tmp;
25432 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25433 written |= (1 << 19);
25434 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25435 }
25436 }
25437 }
25438 }
25439 {
25440 DI tmp_tmp;
25441 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25442 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25443 {
25444 {
25445 UDI opval = MAKEDI (255, 0xffffffff);
25446 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25447 written |= (1 << 20);
25448 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25449 }
25450 frvbf_media_overflow (current_cpu, 4);
25451 }
25452 } else {
25453 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25454 {
25455 {
25456 UDI opval = MAKEDI (0, 0);
25457 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25458 written |= (1 << 20);
25459 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25460 }
25461 frvbf_media_overflow (current_cpu, 4);
25462 }
25463 } else {
25464 {
25465 UDI opval = tmp_tmp;
25466 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25467 written |= (1 << 20);
25468 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25469 }
25470 }
25471 }
25472 }
25473 {
25474 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25475 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25476 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25477 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25478 }
25479 {
25480 DI tmp_tmp;
25481 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25482 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25483 {
25484 {
25485 UDI opval = MAKEDI (255, 0xffffffff);
25486 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25487 written |= (1 << 21);
25488 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25489 }
25490 frvbf_media_overflow (current_cpu, 2);
25491 }
25492 } else {
25493 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25494 {
25495 {
25496 UDI opval = MAKEDI (0, 0);
25497 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25498 written |= (1 << 21);
25499 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25500 }
25501 frvbf_media_overflow (current_cpu, 2);
25502 }
25503 } else {
25504 {
25505 UDI opval = tmp_tmp;
25506 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25507 written |= (1 << 21);
25508 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25509 }
25510 }
25511 }
25512 }
25513 {
25514 DI tmp_tmp;
25515 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25516 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25517 {
25518 {
25519 UDI opval = MAKEDI (255, 0xffffffff);
25520 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25521 written |= (1 << 22);
25522 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25523 }
25524 frvbf_media_overflow (current_cpu, 1);
25525 }
25526 } else {
25527 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25528 {
25529 {
25530 UDI opval = MAKEDI (0, 0);
25531 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25532 written |= (1 << 22);
25533 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25534 }
25535 frvbf_media_overflow (current_cpu, 1);
25536 }
25537 } else {
25538 {
25539 UDI opval = tmp_tmp;
25540 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25541 written |= (1 << 22);
25542 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25543 }
25544 }
25545 }
25546 }
25547 }
25548 }
25549 }
25550 }
25551 }
25552
25553 abuf->written = written;
25554 return vpc;
25555 #undef FLD
25556 }
25557
25558 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25559
25560 static SEM_PC
25561 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25562 {
25563 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25565 int UNUSED written = 0;
25566 IADDR UNUSED pc = abuf->addr;
25567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25568
25569 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25570 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25571 frvbf_media_acc_not_aligned (current_cpu);
25572 } else {
25573 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25574 frvbf_media_register_not_aligned (current_cpu);
25575 } else {
25576 {
25577 HI tmp_argihi;
25578 HI tmp_argilo;
25579 HI tmp_argjhi;
25580 HI tmp_argjlo;
25581 {
25582 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25583 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25584 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25585 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25586 }
25587 {
25588 DI tmp_tmp;
25589 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25590 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25591 {
25592 {
25593 DI opval = MAKEDI (127, 0xffffffff);
25594 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25595 written |= (1 << 19);
25596 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25597 }
25598 frvbf_media_overflow (current_cpu, 2);
25599 }
25600 } else {
25601 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25602 {
25603 {
25604 DI opval = MAKEDI (0xffffff80, 0);
25605 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25606 written |= (1 << 19);
25607 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25608 }
25609 frvbf_media_overflow (current_cpu, 2);
25610 }
25611 } else {
25612 {
25613 DI opval = tmp_tmp;
25614 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25615 written |= (1 << 19);
25616 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25617 }
25618 }
25619 }
25620 }
25621 {
25622 DI tmp_tmp;
25623 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25624 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25625 {
25626 {
25627 DI opval = MAKEDI (127, 0xffffffff);
25628 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25629 written |= (1 << 20);
25630 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25631 }
25632 frvbf_media_overflow (current_cpu, 1);
25633 }
25634 } else {
25635 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25636 {
25637 {
25638 DI opval = MAKEDI (0xffffff80, 0);
25639 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25640 written |= (1 << 20);
25641 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25642 }
25643 frvbf_media_overflow (current_cpu, 1);
25644 }
25645 } else {
25646 {
25647 DI opval = tmp_tmp;
25648 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25649 written |= (1 << 20);
25650 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25651 }
25652 }
25653 }
25654 }
25655 {
25656 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25657 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25658 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25659 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25660 }
25661 {
25662 DI tmp_tmp;
25663 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25664 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25665 {
25666 {
25667 DI opval = MAKEDI (127, 0xffffffff);
25668 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25669 written |= (1 << 17);
25670 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25671 }
25672 frvbf_media_overflow (current_cpu, 8);
25673 }
25674 } else {
25675 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25676 {
25677 {
25678 DI opval = MAKEDI (0xffffff80, 0);
25679 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25680 written |= (1 << 17);
25681 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25682 }
25683 frvbf_media_overflow (current_cpu, 8);
25684 }
25685 } else {
25686 {
25687 DI opval = tmp_tmp;
25688 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25689 written |= (1 << 17);
25690 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25691 }
25692 }
25693 }
25694 }
25695 {
25696 DI tmp_tmp;
25697 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25698 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25699 {
25700 {
25701 DI opval = MAKEDI (127, 0xffffffff);
25702 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25703 written |= (1 << 18);
25704 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25705 }
25706 frvbf_media_overflow (current_cpu, 4);
25707 }
25708 } else {
25709 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25710 {
25711 {
25712 DI opval = MAKEDI (0xffffff80, 0);
25713 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25714 written |= (1 << 18);
25715 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25716 }
25717 frvbf_media_overflow (current_cpu, 4);
25718 }
25719 } else {
25720 {
25721 DI opval = tmp_tmp;
25722 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25723 written |= (1 << 18);
25724 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25725 }
25726 }
25727 }
25728 }
25729 }
25730 }
25731 }
25732 }
25733
25734 abuf->written = written;
25735 return vpc;
25736 #undef FLD
25737 }
25738
25739 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25740
25741 static SEM_PC
25742 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25743 {
25744 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25746 int UNUSED written = 0;
25747 IADDR UNUSED pc = abuf->addr;
25748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25749
25750 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25751 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25752 frvbf_media_acc_not_aligned (current_cpu);
25753 } else {
25754 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25755 frvbf_media_register_not_aligned (current_cpu);
25756 } else {
25757 {
25758 HI tmp_argihi;
25759 HI tmp_argilo;
25760 HI tmp_argjhi;
25761 HI tmp_argjlo;
25762 {
25763 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25764 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25765 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25766 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25767 }
25768 {
25769 DI tmp_tmp;
25770 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25771 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25772 {
25773 {
25774 DI opval = MAKEDI (127, 0xffffffff);
25775 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25776 written |= (1 << 19);
25777 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25778 }
25779 frvbf_media_overflow (current_cpu, 2);
25780 }
25781 } else {
25782 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25783 {
25784 {
25785 DI opval = MAKEDI (0xffffff80, 0);
25786 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25787 written |= (1 << 19);
25788 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25789 }
25790 frvbf_media_overflow (current_cpu, 2);
25791 }
25792 } else {
25793 {
25794 DI opval = tmp_tmp;
25795 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25796 written |= (1 << 19);
25797 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25798 }
25799 }
25800 }
25801 }
25802 {
25803 DI tmp_tmp;
25804 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25805 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25806 {
25807 {
25808 DI opval = MAKEDI (127, 0xffffffff);
25809 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25810 written |= (1 << 20);
25811 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25812 }
25813 frvbf_media_overflow (current_cpu, 1);
25814 }
25815 } else {
25816 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25817 {
25818 {
25819 DI opval = MAKEDI (0xffffff80, 0);
25820 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25821 written |= (1 << 20);
25822 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25823 }
25824 frvbf_media_overflow (current_cpu, 1);
25825 }
25826 } else {
25827 {
25828 DI opval = tmp_tmp;
25829 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25830 written |= (1 << 20);
25831 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25832 }
25833 }
25834 }
25835 }
25836 {
25837 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25838 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25839 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25840 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25841 }
25842 {
25843 DI tmp_tmp;
25844 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25845 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25846 {
25847 {
25848 DI opval = MAKEDI (127, 0xffffffff);
25849 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25850 written |= (1 << 17);
25851 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25852 }
25853 frvbf_media_overflow (current_cpu, 8);
25854 }
25855 } else {
25856 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25857 {
25858 {
25859 DI opval = MAKEDI (0xffffff80, 0);
25860 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25861 written |= (1 << 17);
25862 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25863 }
25864 frvbf_media_overflow (current_cpu, 8);
25865 }
25866 } else {
25867 {
25868 DI opval = tmp_tmp;
25869 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25870 written |= (1 << 17);
25871 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25872 }
25873 }
25874 }
25875 }
25876 {
25877 DI tmp_tmp;
25878 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25879 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25880 {
25881 {
25882 DI opval = MAKEDI (127, 0xffffffff);
25883 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25884 written |= (1 << 18);
25885 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25886 }
25887 frvbf_media_overflow (current_cpu, 4);
25888 }
25889 } else {
25890 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25891 {
25892 {
25893 DI opval = MAKEDI (0xffffff80, 0);
25894 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25895 written |= (1 << 18);
25896 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25897 }
25898 frvbf_media_overflow (current_cpu, 4);
25899 }
25900 } else {
25901 {
25902 DI opval = tmp_tmp;
25903 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25904 written |= (1 << 18);
25905 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25906 }
25907 }
25908 }
25909 }
25910 }
25911 }
25912 }
25913 }
25914
25915 abuf->written = written;
25916 return vpc;
25917 #undef FLD
25918 }
25919
25920 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25921
25922 static SEM_PC
25923 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25924 {
25925 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25927 int UNUSED written = 0;
25928 IADDR UNUSED pc = abuf->addr;
25929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25930
25931 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25932 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25933 frvbf_media_acc_not_aligned (current_cpu);
25934 } else {
25935 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25936 frvbf_media_register_not_aligned (current_cpu);
25937 } else {
25938 {
25939 HI tmp_argihi;
25940 HI tmp_argilo;
25941 HI tmp_argjhi;
25942 HI tmp_argjlo;
25943 {
25944 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25945 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25946 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25947 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25948 }
25949 {
25950 DI tmp_tmp;
25951 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25952 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25953 {
25954 {
25955 DI opval = MAKEDI (127, 0xffffffff);
25956 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25957 written |= (1 << 17);
25958 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25959 }
25960 frvbf_media_overflow (current_cpu, 8);
25961 }
25962 } else {
25963 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25964 {
25965 {
25966 DI opval = MAKEDI (0xffffff80, 0);
25967 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25968 written |= (1 << 17);
25969 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25970 }
25971 frvbf_media_overflow (current_cpu, 8);
25972 }
25973 } else {
25974 {
25975 DI opval = tmp_tmp;
25976 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25977 written |= (1 << 17);
25978 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25979 }
25980 }
25981 }
25982 }
25983 {
25984 DI tmp_tmp;
25985 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25986 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25987 {
25988 {
25989 DI opval = MAKEDI (127, 0xffffffff);
25990 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25991 written |= (1 << 18);
25992 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25993 }
25994 frvbf_media_overflow (current_cpu, 4);
25995 }
25996 } else {
25997 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25998 {
25999 {
26000 DI opval = MAKEDI (0xffffff80, 0);
26001 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26002 written |= (1 << 18);
26003 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26004 }
26005 frvbf_media_overflow (current_cpu, 4);
26006 }
26007 } else {
26008 {
26009 DI opval = tmp_tmp;
26010 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26011 written |= (1 << 18);
26012 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26013 }
26014 }
26015 }
26016 }
26017 {
26018 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26019 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26020 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26021 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26022 }
26023 {
26024 DI tmp_tmp;
26025 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26026 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26027 {
26028 {
26029 DI opval = MAKEDI (127, 0xffffffff);
26030 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26031 written |= (1 << 19);
26032 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26033 }
26034 frvbf_media_overflow (current_cpu, 2);
26035 }
26036 } else {
26037 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26038 {
26039 {
26040 DI opval = MAKEDI (0xffffff80, 0);
26041 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26042 written |= (1 << 19);
26043 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26044 }
26045 frvbf_media_overflow (current_cpu, 2);
26046 }
26047 } else {
26048 {
26049 DI opval = tmp_tmp;
26050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26051 written |= (1 << 19);
26052 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26053 }
26054 }
26055 }
26056 }
26057 {
26058 DI tmp_tmp;
26059 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26060 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26061 {
26062 {
26063 DI opval = MAKEDI (127, 0xffffffff);
26064 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26065 written |= (1 << 20);
26066 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26067 }
26068 frvbf_media_overflow (current_cpu, 1);
26069 }
26070 } else {
26071 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26072 {
26073 {
26074 DI opval = MAKEDI (0xffffff80, 0);
26075 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26076 written |= (1 << 20);
26077 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26078 }
26079 frvbf_media_overflow (current_cpu, 1);
26080 }
26081 } else {
26082 {
26083 DI opval = tmp_tmp;
26084 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26085 written |= (1 << 20);
26086 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26087 }
26088 }
26089 }
26090 }
26091 }
26092 }
26093 }
26094 }
26095
26096 abuf->written = written;
26097 return vpc;
26098 #undef FLD
26099 }
26100
26101 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26102
26103 static SEM_PC
26104 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26105 {
26106 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26107 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26108 int UNUSED written = 0;
26109 IADDR UNUSED pc = abuf->addr;
26110 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26111
26112 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26113 {
26114 HI tmp_argihi;
26115 HI tmp_argilo;
26116 HI tmp_argjhi;
26117 HI tmp_argjlo;
26118 {
26119 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26120 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26121 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26122 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26123 }
26124 {
26125 DI tmp_tmp1;
26126 DI tmp_tmp2;
26127 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26128 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26129 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26130 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26131 {
26132 {
26133 DI opval = MAKEDI (127, 0xffffffff);
26134 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26135 written |= (1 << 9);
26136 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26137 }
26138 frvbf_media_overflow (current_cpu, 8);
26139 }
26140 } else {
26141 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26142 {
26143 {
26144 DI opval = MAKEDI (0xffffff80, 0);
26145 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26146 written |= (1 << 9);
26147 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26148 }
26149 frvbf_media_overflow (current_cpu, 8);
26150 }
26151 } else {
26152 {
26153 DI opval = tmp_tmp1;
26154 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26155 written |= (1 << 9);
26156 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26157 }
26158 }
26159 }
26160 }
26161 }
26162 }
26163
26164 abuf->written = written;
26165 return vpc;
26166 #undef FLD
26167 }
26168
26169 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26170
26171 static SEM_PC
26172 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26173 {
26174 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26175 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26176 int UNUSED written = 0;
26177 IADDR UNUSED pc = abuf->addr;
26178 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26179
26180 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26181 {
26182 UHI tmp_argihi;
26183 UHI tmp_argilo;
26184 UHI tmp_argjhi;
26185 UHI tmp_argjlo;
26186 {
26187 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26188 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26189 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26190 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26191 }
26192 {
26193 DI tmp_tmp1;
26194 DI tmp_tmp2;
26195 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26196 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26197 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26198 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26199 {
26200 {
26201 DI opval = MAKEDI (255, 0xffffffff);
26202 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26203 written |= (1 << 9);
26204 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26205 }
26206 frvbf_media_overflow (current_cpu, 8);
26207 }
26208 } else {
26209 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26210 {
26211 {
26212 DI opval = MAKEDI (0, 0);
26213 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26214 written |= (1 << 9);
26215 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26216 }
26217 frvbf_media_overflow (current_cpu, 8);
26218 }
26219 } else {
26220 {
26221 DI opval = tmp_tmp1;
26222 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26223 written |= (1 << 9);
26224 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26225 }
26226 }
26227 }
26228 }
26229 }
26230 }
26231
26232 abuf->written = written;
26233 return vpc;
26234 #undef FLD
26235 }
26236
26237 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26238
26239 static SEM_PC
26240 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26241 {
26242 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26243 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26244 int UNUSED written = 0;
26245 IADDR UNUSED pc = abuf->addr;
26246 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26247
26248 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26249 {
26250 HI tmp_argihi;
26251 HI tmp_argilo;
26252 HI tmp_argjhi;
26253 HI tmp_argjlo;
26254 {
26255 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26256 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26257 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26258 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26259 }
26260 {
26261 DI tmp_tmp1;
26262 DI tmp_tmp2;
26263 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26264 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26265 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26266 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26267 {
26268 {
26269 DI opval = MAKEDI (127, 0xffffffff);
26270 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26271 written |= (1 << 9);
26272 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26273 }
26274 frvbf_media_overflow (current_cpu, 8);
26275 }
26276 } else {
26277 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26278 {
26279 {
26280 DI opval = MAKEDI (0xffffff80, 0);
26281 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26282 written |= (1 << 9);
26283 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26284 }
26285 frvbf_media_overflow (current_cpu, 8);
26286 }
26287 } else {
26288 {
26289 DI opval = tmp_tmp1;
26290 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26291 written |= (1 << 9);
26292 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26293 }
26294 }
26295 }
26296 }
26297 }
26298 }
26299
26300 abuf->written = written;
26301 return vpc;
26302 #undef FLD
26303 }
26304
26305 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26306
26307 static SEM_PC
26308 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26309 {
26310 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26312 int UNUSED written = 0;
26313 IADDR UNUSED pc = abuf->addr;
26314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26315
26316 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26317 {
26318 UHI tmp_argihi;
26319 UHI tmp_argilo;
26320 UHI tmp_argjhi;
26321 UHI tmp_argjlo;
26322 {
26323 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26324 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26325 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26326 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26327 }
26328 {
26329 DI tmp_tmp1;
26330 DI tmp_tmp2;
26331 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26332 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26333 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26334 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26335 {
26336 {
26337 DI opval = MAKEDI (255, 0xffffffff);
26338 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26339 written |= (1 << 9);
26340 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26341 }
26342 frvbf_media_overflow (current_cpu, 8);
26343 }
26344 } else {
26345 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26346 {
26347 {
26348 DI opval = MAKEDI (0, 0);
26349 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26350 written |= (1 << 9);
26351 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26352 }
26353 frvbf_media_overflow (current_cpu, 8);
26354 }
26355 } else {
26356 {
26357 DI opval = tmp_tmp1;
26358 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26359 written |= (1 << 9);
26360 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26361 }
26362 }
26363 }
26364 }
26365 }
26366 }
26367
26368 abuf->written = written;
26369 return vpc;
26370 #undef FLD
26371 }
26372
26373 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26374
26375 static SEM_PC
26376 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26377 {
26378 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26379 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26380 int UNUSED written = 0;
26381 IADDR UNUSED pc = abuf->addr;
26382 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26383
26384 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26385 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26386 {
26387 HI tmp_argihi;
26388 HI tmp_argilo;
26389 HI tmp_argjhi;
26390 HI tmp_argjlo;
26391 {
26392 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26393 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26394 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26395 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26396 }
26397 {
26398 DI tmp_tmp1;
26399 DI tmp_tmp2;
26400 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26401 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26402 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26403 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26404 {
26405 {
26406 DI opval = MAKEDI (127, 0xffffffff);
26407 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26408 written |= (1 << 11);
26409 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26410 }
26411 frvbf_media_overflow (current_cpu, 8);
26412 }
26413 } else {
26414 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26415 {
26416 {
26417 DI opval = MAKEDI (0xffffff80, 0);
26418 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26419 written |= (1 << 11);
26420 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26421 }
26422 frvbf_media_overflow (current_cpu, 8);
26423 }
26424 } else {
26425 {
26426 DI opval = tmp_tmp1;
26427 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26428 written |= (1 << 11);
26429 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26430 }
26431 }
26432 }
26433 }
26434 }
26435 }
26436 }
26437
26438 abuf->written = written;
26439 return vpc;
26440 #undef FLD
26441 }
26442
26443 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26444
26445 static SEM_PC
26446 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26447 {
26448 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26449 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26450 int UNUSED written = 0;
26451 IADDR UNUSED pc = abuf->addr;
26452 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26453
26454 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26455 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26456 {
26457 UHI tmp_argihi;
26458 UHI tmp_argilo;
26459 UHI tmp_argjhi;
26460 UHI tmp_argjlo;
26461 {
26462 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26463 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26464 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26465 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26466 }
26467 {
26468 DI tmp_tmp1;
26469 DI tmp_tmp2;
26470 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26471 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26472 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26473 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26474 {
26475 {
26476 DI opval = MAKEDI (255, 0xffffffff);
26477 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26478 written |= (1 << 11);
26479 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26480 }
26481 frvbf_media_overflow (current_cpu, 8);
26482 }
26483 } else {
26484 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26485 {
26486 {
26487 DI opval = MAKEDI (0, 0);
26488 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26489 written |= (1 << 11);
26490 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26491 }
26492 frvbf_media_overflow (current_cpu, 8);
26493 }
26494 } else {
26495 {
26496 DI opval = tmp_tmp1;
26497 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26498 written |= (1 << 11);
26499 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26500 }
26501 }
26502 }
26503 }
26504 }
26505 }
26506 }
26507
26508 abuf->written = written;
26509 return vpc;
26510 #undef FLD
26511 }
26512
26513 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26514
26515 static SEM_PC
26516 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26517 {
26518 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26519 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26520 int UNUSED written = 0;
26521 IADDR UNUSED pc = abuf->addr;
26522 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26523
26524 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26525 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26526 {
26527 HI tmp_argihi;
26528 HI tmp_argilo;
26529 HI tmp_argjhi;
26530 HI tmp_argjlo;
26531 {
26532 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26533 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26534 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26535 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26536 }
26537 {
26538 DI tmp_tmp1;
26539 DI tmp_tmp2;
26540 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26541 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26542 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26543 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26544 {
26545 {
26546 DI opval = MAKEDI (127, 0xffffffff);
26547 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26548 written |= (1 << 11);
26549 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26550 }
26551 frvbf_media_overflow (current_cpu, 8);
26552 }
26553 } else {
26554 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26555 {
26556 {
26557 DI opval = MAKEDI (0xffffff80, 0);
26558 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26559 written |= (1 << 11);
26560 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26561 }
26562 frvbf_media_overflow (current_cpu, 8);
26563 }
26564 } else {
26565 {
26566 DI opval = tmp_tmp1;
26567 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26568 written |= (1 << 11);
26569 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26570 }
26571 }
26572 }
26573 }
26574 }
26575 }
26576 }
26577
26578 abuf->written = written;
26579 return vpc;
26580 #undef FLD
26581 }
26582
26583 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26584
26585 static SEM_PC
26586 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26587 {
26588 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26590 int UNUSED written = 0;
26591 IADDR UNUSED pc = abuf->addr;
26592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26593
26594 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26595 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26596 {
26597 UHI tmp_argihi;
26598 UHI tmp_argilo;
26599 UHI tmp_argjhi;
26600 UHI tmp_argjlo;
26601 {
26602 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26603 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26604 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26605 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26606 }
26607 {
26608 DI tmp_tmp1;
26609 DI tmp_tmp2;
26610 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26611 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26612 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26613 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26614 {
26615 {
26616 DI opval = MAKEDI (255, 0xffffffff);
26617 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26618 written |= (1 << 11);
26619 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26620 }
26621 frvbf_media_overflow (current_cpu, 8);
26622 }
26623 } else {
26624 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26625 {
26626 {
26627 DI opval = MAKEDI (0, 0);
26628 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26629 written |= (1 << 11);
26630 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26631 }
26632 frvbf_media_overflow (current_cpu, 8);
26633 }
26634 } else {
26635 {
26636 DI opval = tmp_tmp1;
26637 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26638 written |= (1 << 11);
26639 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26640 }
26641 }
26642 }
26643 }
26644 }
26645 }
26646 }
26647
26648 abuf->written = written;
26649 return vpc;
26650 #undef FLD
26651 }
26652
26653 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26654
26655 static SEM_PC
26656 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26657 {
26658 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26660 int UNUSED written = 0;
26661 IADDR UNUSED pc = abuf->addr;
26662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26663
26664 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26665 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26666 frvbf_media_acc_not_aligned (current_cpu);
26667 } else {
26668 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26669 frvbf_media_register_not_aligned (current_cpu);
26670 } else {
26671 {
26672 HI tmp_argihi;
26673 HI tmp_argilo;
26674 HI tmp_argjhi;
26675 HI tmp_argjlo;
26676 {
26677 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26678 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26679 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26680 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26681 }
26682 {
26683 DI tmp_tmp1;
26684 DI tmp_tmp2;
26685 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26686 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26687 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26688 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26689 {
26690 {
26691 DI opval = MAKEDI (127, 0xffffffff);
26692 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26693 written |= (1 << 13);
26694 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26695 }
26696 frvbf_media_overflow (current_cpu, 8);
26697 }
26698 } else {
26699 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26700 {
26701 {
26702 DI opval = MAKEDI (0xffffff80, 0);
26703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26704 written |= (1 << 13);
26705 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26706 }
26707 frvbf_media_overflow (current_cpu, 8);
26708 }
26709 } else {
26710 {
26711 DI opval = tmp_tmp1;
26712 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26713 written |= (1 << 13);
26714 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26715 }
26716 }
26717 }
26718 }
26719 {
26720 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26721 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26722 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26723 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26724 }
26725 {
26726 DI tmp_tmp1;
26727 DI tmp_tmp2;
26728 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26729 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26730 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26731 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26732 {
26733 {
26734 DI opval = MAKEDI (127, 0xffffffff);
26735 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26736 written |= (1 << 14);
26737 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26738 }
26739 frvbf_media_overflow (current_cpu, 4);
26740 }
26741 } else {
26742 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26743 {
26744 {
26745 DI opval = MAKEDI (0xffffff80, 0);
26746 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26747 written |= (1 << 14);
26748 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26749 }
26750 frvbf_media_overflow (current_cpu, 4);
26751 }
26752 } else {
26753 {
26754 DI opval = tmp_tmp1;
26755 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26756 written |= (1 << 14);
26757 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26758 }
26759 }
26760 }
26761 }
26762 }
26763 }
26764 }
26765 }
26766
26767 abuf->written = written;
26768 return vpc;
26769 #undef FLD
26770 }
26771
26772 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26773
26774 static SEM_PC
26775 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26776 {
26777 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26779 int UNUSED written = 0;
26780 IADDR UNUSED pc = abuf->addr;
26781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26782
26783 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26784 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26785 frvbf_media_acc_not_aligned (current_cpu);
26786 } else {
26787 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26788 frvbf_media_register_not_aligned (current_cpu);
26789 } else {
26790 {
26791 UHI tmp_argihi;
26792 UHI tmp_argilo;
26793 UHI tmp_argjhi;
26794 UHI tmp_argjlo;
26795 {
26796 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26797 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26798 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26799 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26800 }
26801 {
26802 DI tmp_tmp1;
26803 DI tmp_tmp2;
26804 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26805 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26806 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26807 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26808 {
26809 {
26810 DI opval = MAKEDI (255, 0xffffffff);
26811 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26812 written |= (1 << 13);
26813 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26814 }
26815 frvbf_media_overflow (current_cpu, 8);
26816 }
26817 } else {
26818 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26819 {
26820 {
26821 DI opval = MAKEDI (0, 0);
26822 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26823 written |= (1 << 13);
26824 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26825 }
26826 frvbf_media_overflow (current_cpu, 8);
26827 }
26828 } else {
26829 {
26830 DI opval = tmp_tmp1;
26831 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26832 written |= (1 << 13);
26833 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26834 }
26835 }
26836 }
26837 }
26838 {
26839 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26840 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26841 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26842 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26843 }
26844 {
26845 DI tmp_tmp1;
26846 DI tmp_tmp2;
26847 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26848 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26849 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26850 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26851 {
26852 {
26853 DI opval = MAKEDI (255, 0xffffffff);
26854 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26855 written |= (1 << 14);
26856 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26857 }
26858 frvbf_media_overflow (current_cpu, 4);
26859 }
26860 } else {
26861 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26862 {
26863 {
26864 DI opval = MAKEDI (0, 0);
26865 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26866 written |= (1 << 14);
26867 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26868 }
26869 frvbf_media_overflow (current_cpu, 4);
26870 }
26871 } else {
26872 {
26873 DI opval = tmp_tmp1;
26874 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26875 written |= (1 << 14);
26876 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26877 }
26878 }
26879 }
26880 }
26881 }
26882 }
26883 }
26884 }
26885
26886 abuf->written = written;
26887 return vpc;
26888 #undef FLD
26889 }
26890
26891 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26892
26893 static SEM_PC
26894 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26895 {
26896 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26898 int UNUSED written = 0;
26899 IADDR UNUSED pc = abuf->addr;
26900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26901
26902 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26903 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26904 frvbf_media_acc_not_aligned (current_cpu);
26905 } else {
26906 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26907 frvbf_media_register_not_aligned (current_cpu);
26908 } else {
26909 {
26910 HI tmp_argihi;
26911 HI tmp_argilo;
26912 HI tmp_argjhi;
26913 HI tmp_argjlo;
26914 {
26915 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26916 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26917 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26918 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26919 }
26920 {
26921 DI tmp_tmp1;
26922 DI tmp_tmp2;
26923 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26924 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26925 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26926 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26927 {
26928 {
26929 DI opval = MAKEDI (127, 0xffffffff);
26930 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26931 written |= (1 << 13);
26932 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26933 }
26934 frvbf_media_overflow (current_cpu, 8);
26935 }
26936 } else {
26937 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26938 {
26939 {
26940 DI opval = MAKEDI (0xffffff80, 0);
26941 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26942 written |= (1 << 13);
26943 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26944 }
26945 frvbf_media_overflow (current_cpu, 8);
26946 }
26947 } else {
26948 {
26949 DI opval = tmp_tmp1;
26950 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26951 written |= (1 << 13);
26952 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26953 }
26954 }
26955 }
26956 }
26957 {
26958 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26959 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26960 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26961 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26962 }
26963 {
26964 DI tmp_tmp1;
26965 DI tmp_tmp2;
26966 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26967 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26968 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26969 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26970 {
26971 {
26972 DI opval = MAKEDI (127, 0xffffffff);
26973 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26974 written |= (1 << 14);
26975 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26976 }
26977 frvbf_media_overflow (current_cpu, 4);
26978 }
26979 } else {
26980 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26981 {
26982 {
26983 DI opval = MAKEDI (0xffffff80, 0);
26984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26985 written |= (1 << 14);
26986 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26987 }
26988 frvbf_media_overflow (current_cpu, 4);
26989 }
26990 } else {
26991 {
26992 DI opval = tmp_tmp1;
26993 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26994 written |= (1 << 14);
26995 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26996 }
26997 }
26998 }
26999 }
27000 }
27001 }
27002 }
27003 }
27004
27005 abuf->written = written;
27006 return vpc;
27007 #undef FLD
27008 }
27009
27010 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27011
27012 static SEM_PC
27013 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27014 {
27015 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
27016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27017 int UNUSED written = 0;
27018 IADDR UNUSED pc = abuf->addr;
27019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27020
27021 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
27022 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27023 frvbf_media_acc_not_aligned (current_cpu);
27024 } else {
27025 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27026 frvbf_media_register_not_aligned (current_cpu);
27027 } else {
27028 {
27029 UHI tmp_argihi;
27030 UHI tmp_argilo;
27031 UHI tmp_argjhi;
27032 UHI tmp_argjlo;
27033 {
27034 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27035 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27036 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27037 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27038 }
27039 {
27040 DI tmp_tmp1;
27041 DI tmp_tmp2;
27042 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27043 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27044 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27045 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27046 {
27047 {
27048 DI opval = MAKEDI (255, 0xffffffff);
27049 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27050 written |= (1 << 13);
27051 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27052 }
27053 frvbf_media_overflow (current_cpu, 8);
27054 }
27055 } else {
27056 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27057 {
27058 {
27059 DI opval = MAKEDI (0, 0);
27060 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27061 written |= (1 << 13);
27062 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27063 }
27064 frvbf_media_overflow (current_cpu, 8);
27065 }
27066 } else {
27067 {
27068 DI opval = tmp_tmp1;
27069 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27070 written |= (1 << 13);
27071 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27072 }
27073 }
27074 }
27075 }
27076 {
27077 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27078 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27079 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27080 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27081 }
27082 {
27083 DI tmp_tmp1;
27084 DI tmp_tmp2;
27085 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27086 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27087 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27088 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27089 {
27090 {
27091 DI opval = MAKEDI (255, 0xffffffff);
27092 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27093 written |= (1 << 14);
27094 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27095 }
27096 frvbf_media_overflow (current_cpu, 4);
27097 }
27098 } else {
27099 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27100 {
27101 {
27102 DI opval = MAKEDI (0, 0);
27103 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27104 written |= (1 << 14);
27105 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27106 }
27107 frvbf_media_overflow (current_cpu, 4);
27108 }
27109 } else {
27110 {
27111 DI opval = tmp_tmp1;
27112 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27113 written |= (1 << 14);
27114 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27115 }
27116 }
27117 }
27118 }
27119 }
27120 }
27121 }
27122 }
27123
27124 abuf->written = written;
27125 return vpc;
27126 #undef FLD
27127 }
27128
27129 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27130
27131 static SEM_PC
27132 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27133 {
27134 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27135 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27136 int UNUSED written = 0;
27137 IADDR UNUSED pc = abuf->addr;
27138 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27139
27140 {
27141 UHI tmp_tmp;
27142 if (ANDSI (FLD (f_u6), 1)) {
27143 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27144 } else {
27145 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27146 }
27147 {
27148 UHI opval = tmp_tmp;
27149 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27150 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27151 }
27152 {
27153 UHI opval = tmp_tmp;
27154 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27155 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27156 }
27157 }
27158
27159 return vpc;
27160 #undef FLD
27161 }
27162
27163 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27164
27165 static SEM_PC
27166 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27167 {
27168 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27169 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27170 int UNUSED written = 0;
27171 IADDR UNUSED pc = abuf->addr;
27172 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27173
27174 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27175 {
27176 UHI tmp_tmp;
27177 if (ANDSI (FLD (f_u6), 1)) {
27178 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27179 } else {
27180 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27181 }
27182 {
27183 UHI opval = tmp_tmp;
27184 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27185 written |= (1 << 7);
27186 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27187 }
27188 {
27189 UHI opval = tmp_tmp;
27190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27191 written |= (1 << 8);
27192 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27193 }
27194 }
27195 }
27196
27197 abuf->written = written;
27198 return vpc;
27199 #undef FLD
27200 }
27201
27202 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27203
27204 static SEM_PC
27205 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27206 {
27207 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27208 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27209 int UNUSED written = 0;
27210 IADDR UNUSED pc = abuf->addr;
27211 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27212
27213 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27214 frvbf_media_register_not_aligned (current_cpu);
27215 } else {
27216 {
27217 UHI tmp_tmp;
27218 {
27219 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27220 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27221 written |= (1 << 6);
27222 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27223 }
27224 if (ANDSI (FLD (f_u6), 1)) {
27225 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27226 } else {
27227 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27228 }
27229 {
27230 UHI opval = tmp_tmp;
27231 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27232 written |= (1 << 7);
27233 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27234 }
27235 {
27236 UHI opval = tmp_tmp;
27237 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27238 written |= (1 << 9);
27239 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27240 }
27241 {
27242 UHI opval = tmp_tmp;
27243 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27244 written |= (1 << 8);
27245 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27246 }
27247 {
27248 UHI opval = tmp_tmp;
27249 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27250 written |= (1 << 10);
27251 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27252 }
27253 }
27254 }
27255
27256 abuf->written = written;
27257 return vpc;
27258 #undef FLD
27259 }
27260
27261 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27262
27263 static SEM_PC
27264 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27265 {
27266 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27268 int UNUSED written = 0;
27269 IADDR UNUSED pc = abuf->addr;
27270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27271
27272 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27273 frvbf_media_register_not_aligned (current_cpu);
27274 } else {
27275 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27276 {
27277 UHI tmp_tmp;
27278 {
27279 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27280 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27281 written |= (1 << 8);
27282 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27283 }
27284 if (ANDSI (FLD (f_u6), 1)) {
27285 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27286 } else {
27287 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27288 }
27289 {
27290 UHI opval = tmp_tmp;
27291 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27292 written |= (1 << 9);
27293 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27294 }
27295 {
27296 UHI opval = tmp_tmp;
27297 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27298 written |= (1 << 11);
27299 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27300 }
27301 {
27302 UHI opval = tmp_tmp;
27303 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27304 written |= (1 << 10);
27305 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27306 }
27307 {
27308 UHI opval = tmp_tmp;
27309 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27310 written |= (1 << 12);
27311 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27312 }
27313 }
27314 }
27315 }
27316
27317 abuf->written = written;
27318 return vpc;
27319 #undef FLD
27320 }
27321
27322 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27323
27324 static SEM_PC
27325 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27326 {
27327 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27328 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27329 int UNUSED written = 0;
27330 IADDR UNUSED pc = abuf->addr;
27331 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27332
27333 {
27334 {
27335 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27336 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27337 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27338 }
27339 {
27340 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27341 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27342 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27343 }
27344 }
27345
27346 return vpc;
27347 #undef FLD
27348 }
27349
27350 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27351
27352 static SEM_PC
27353 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27354 {
27355 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27356 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27357 int UNUSED written = 0;
27358 IADDR UNUSED pc = abuf->addr;
27359 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27360
27361 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27362 frvbf_media_register_not_aligned (current_cpu);
27363 } else {
27364 {
27365 {
27366 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27367 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27368 written |= (1 << 10);
27369 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27370 }
27371 {
27372 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27373 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27374 written |= (1 << 11);
27375 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27376 }
27377 {
27378 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27379 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27380 written |= (1 << 12);
27381 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27382 }
27383 {
27384 {
27385 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27386 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27387 written |= (1 << 13);
27388 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27389 }
27390 {
27391 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27392 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27393 written |= (1 << 15);
27394 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27395 }
27396 }
27397 {
27398 {
27399 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27400 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27401 written |= (1 << 14);
27402 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27403 }
27404 {
27405 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27406 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27407 written |= (1 << 16);
27408 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27409 }
27410 }
27411 }
27412 }
27413
27414 abuf->written = written;
27415 return vpc;
27416 #undef FLD
27417 }
27418
27419 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27420
27421 static SEM_PC
27422 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27423 {
27424 #define FLD(f) abuf->fields.sfmt_munpackh.f
27425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27426 int UNUSED written = 0;
27427 IADDR UNUSED pc = abuf->addr;
27428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27429
27430 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27431 frvbf_media_register_not_aligned (current_cpu);
27432 } else {
27433 {
27434 {
27435 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27436 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27437 written |= (1 << 6);
27438 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27439 }
27440 {
27441 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27442 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27443 written |= (1 << 7);
27444 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27445 }
27446 {
27447 {
27448 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27449 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27450 written |= (1 << 8);
27451 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27452 }
27453 {
27454 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27455 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27456 written |= (1 << 10);
27457 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27458 }
27459 {
27460 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27461 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27462 written |= (1 << 9);
27463 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27464 }
27465 {
27466 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27468 written |= (1 << 11);
27469 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27470 }
27471 }
27472 }
27473 }
27474
27475 abuf->written = written;
27476 return vpc;
27477 #undef FLD
27478 }
27479
27480 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27481
27482 static SEM_PC
27483 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27484 {
27485 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27486 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27487 int UNUSED written = 0;
27488 IADDR UNUSED pc = abuf->addr;
27489 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27490
27491 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27492 frvbf_media_register_not_aligned (current_cpu);
27493 } else {
27494 {
27495 {
27496 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27497 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27498 written |= (1 << 8);
27499 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27500 }
27501 {
27502 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27503 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27504 written |= (1 << 9);
27505 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27506 }
27507 {
27508 {
27509 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27510 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27511 written |= (1 << 10);
27512 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27513 }
27514 {
27515 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27516 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27517 written |= (1 << 14);
27518 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27519 }
27520 {
27521 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27522 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27523 written |= (1 << 12);
27524 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27525 }
27526 {
27527 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27528 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27529 written |= (1 << 16);
27530 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27531 }
27532 }
27533 {
27534 {
27535 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27536 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27537 written |= (1 << 11);
27538 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27539 }
27540 {
27541 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27542 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27543 written |= (1 << 15);
27544 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27545 }
27546 {
27547 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27548 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27549 written |= (1 << 13);
27550 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27551 }
27552 {
27553 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27554 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27555 written |= (1 << 17);
27556 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27557 }
27558 }
27559 }
27560 }
27561
27562 abuf->written = written;
27563 return vpc;
27564 #undef FLD
27565 }
27566
27567 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27568
27569 static SEM_PC
27570 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27571 {
27572 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27574 int UNUSED written = 0;
27575 IADDR UNUSED pc = abuf->addr;
27576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27577
27578 {
27579 {
27580 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27581 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27582 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27583 }
27584 {
27585 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27587 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27588 }
27589 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27590 frvbf_media_register_not_aligned (current_cpu);
27591 } else {
27592 {
27593 {
27594 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27595 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27596 written |= (1 << 10);
27597 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27598 }
27599 {
27600 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27601 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27602 written |= (1 << 12);
27603 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27604 }
27605 {
27606 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27607 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27608 written |= (1 << 11);
27609 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27610 }
27611 {
27612 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27613 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27614 written |= (1 << 13);
27615 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27616 }
27617 }
27618 }
27619 }
27620
27621 abuf->written = written;
27622 return vpc;
27623 #undef FLD
27624 }
27625
27626 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27627
27628 static SEM_PC
27629 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27630 {
27631 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27633 int UNUSED written = 0;
27634 IADDR UNUSED pc = abuf->addr;
27635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27636
27637 {
27638 {
27639 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27640 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27641 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27642 }
27643 {
27644 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27645 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27646 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27647 }
27648 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27649 frvbf_media_register_not_aligned (current_cpu);
27650 } else {
27651 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27652 {
27653 {
27654 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27655 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27656 written |= (1 << 12);
27657 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27658 }
27659 {
27660 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27661 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27662 written |= (1 << 14);
27663 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27664 }
27665 {
27666 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27667 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27668 written |= (1 << 13);
27669 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27670 }
27671 {
27672 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27673 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27674 written |= (1 << 15);
27675 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27676 }
27677 }
27678 }
27679 }
27680 }
27681
27682 abuf->written = written;
27683 return vpc;
27684 #undef FLD
27685 }
27686
27687 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27688
27689 static SEM_PC
27690 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27691 {
27692 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27693 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27694 int UNUSED written = 0;
27695 IADDR UNUSED pc = abuf->addr;
27696 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27697
27698 {
27699 {
27700 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27701 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27702 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27703 }
27704 {
27705 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27706 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27707 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27708 }
27709 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27710 frvbf_media_register_not_aligned (current_cpu);
27711 } else {
27712 {
27713 {
27714 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27715 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27716 written |= (1 << 13);
27717 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27718 }
27719 {
27720 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27721 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27722 written |= (1 << 12);
27723 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27724 }
27725 {
27726 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27727 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27728 written |= (1 << 11);
27729 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27730 }
27731 {
27732 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27733 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27734 written |= (1 << 10);
27735 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27736 }
27737 }
27738 }
27739 }
27740
27741 abuf->written = written;
27742 return vpc;
27743 #undef FLD
27744 }
27745
27746 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27747
27748 static SEM_PC
27749 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27750 {
27751 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27753 int UNUSED written = 0;
27754 IADDR UNUSED pc = abuf->addr;
27755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27756
27757 {
27758 {
27759 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27761 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27762 }
27763 {
27764 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27765 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27766 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27767 }
27768 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27769 frvbf_media_register_not_aligned (current_cpu);
27770 } else {
27771 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27772 {
27773 {
27774 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27775 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27776 written |= (1 << 15);
27777 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27778 }
27779 {
27780 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27781 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27782 written |= (1 << 14);
27783 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27784 }
27785 {
27786 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27788 written |= (1 << 13);
27789 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27790 }
27791 {
27792 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27794 written |= (1 << 12);
27795 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27796 }
27797 }
27798 }
27799 }
27800 }
27801
27802 abuf->written = written;
27803 return vpc;
27804 #undef FLD
27805 }
27806
27807 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27808
27809 static SEM_PC
27810 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27811 {
27812 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27814 int UNUSED written = 0;
27815 IADDR UNUSED pc = abuf->addr;
27816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27817
27818 {
27819 {
27820 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27821 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27822 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27823 }
27824 {
27825 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27826 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27827 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27828 }
27829 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27830 frvbf_media_register_not_aligned (current_cpu);
27831 } else {
27832 {
27833 {
27834 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27835 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27836 written |= (1 << 10);
27837 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27838 }
27839 {
27840 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27841 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27842 written |= (1 << 14);
27843 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27844 }
27845 {
27846 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27847 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27848 written |= (1 << 11);
27849 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27850 }
27851 {
27852 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27853 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27854 written |= (1 << 15);
27855 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27856 }
27857 {
27858 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27859 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27860 written |= (1 << 12);
27861 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27862 }
27863 {
27864 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27865 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27866 written |= (1 << 16);
27867 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27868 }
27869 {
27870 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27871 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27872 written |= (1 << 13);
27873 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27874 }
27875 {
27876 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27877 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27878 written |= (1 << 17);
27879 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27880 }
27881 }
27882 }
27883 }
27884
27885 abuf->written = written;
27886 return vpc;
27887 #undef FLD
27888 }
27889
27890 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27891
27892 static SEM_PC
27893 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27894 {
27895 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27897 int UNUSED written = 0;
27898 IADDR UNUSED pc = abuf->addr;
27899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27900
27901 {
27902 {
27903 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27904 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27905 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27906 }
27907 {
27908 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27909 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27910 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27911 }
27912 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27913 frvbf_media_register_not_aligned (current_cpu);
27914 } else {
27915 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27916 {
27917 {
27918 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27919 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27920 written |= (1 << 12);
27921 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27922 }
27923 {
27924 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27925 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27926 written |= (1 << 16);
27927 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27928 }
27929 {
27930 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27931 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27932 written |= (1 << 13);
27933 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27934 }
27935 {
27936 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27937 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27938 written |= (1 << 17);
27939 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27940 }
27941 {
27942 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27943 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27944 written |= (1 << 14);
27945 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27946 }
27947 {
27948 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27949 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27950 written |= (1 << 18);
27951 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27952 }
27953 {
27954 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27955 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27956 written |= (1 << 15);
27957 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27958 }
27959 {
27960 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27961 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27962 written |= (1 << 19);
27963 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27964 }
27965 }
27966 }
27967 }
27968 }
27969
27970 abuf->written = written;
27971 return vpc;
27972 #undef FLD
27973 }
27974
27975 /* mnop: mnop$pack */
27976
27977 static SEM_PC
27978 SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27979 {
27980 #define FLD(f) abuf->fields.sfmt_empty.f
27981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27982 int UNUSED written = 0;
27983 IADDR UNUSED pc = abuf->addr;
27984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27985
27986 ((void) 0); /*nop*/
27987
27988 return vpc;
27989 #undef FLD
27990 }
27991
27992 /* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27993
27994 static SEM_PC
27995 SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27996 {
27997 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
27998 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27999 int UNUSED written = 0;
28000 IADDR UNUSED pc = abuf->addr;
28001 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28002
28003 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28004
28005 return vpc;
28006 #undef FLD
28007 }
28008
28009 /* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28010
28011 static SEM_PC
28012 SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28013 {
28014 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
28015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28016 int UNUSED written = 0;
28017 IADDR UNUSED pc = abuf->addr;
28018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28019
28020 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
28021
28022 return vpc;
28023 #undef FLD
28024 }
28025
28026 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28027
28028 static SEM_PC
28029 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28030 {
28031 #define FLD(f) abuf->fields.sfmt_mcuti.f
28032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28033 int UNUSED written = 0;
28034 IADDR UNUSED pc = abuf->addr;
28035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28036
28037 {
28038 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28039 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28040 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28041 }
28042
28043 return vpc;
28044 #undef FLD
28045 }
28046
28047 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28048
28049 static SEM_PC
28050 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28051 {
28052 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
28053 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28054 int UNUSED written = 0;
28055 IADDR UNUSED pc = abuf->addr;
28056 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28057
28058 {
28059 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28060 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28061 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28062 }
28063
28064 return vpc;
28065 #undef FLD
28066 }
28067
28068 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28069
28070 static SEM_PC
28071 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28072 {
28073 #define FLD(f) abuf->fields.sfmt_cmmachs.f
28074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28075 int UNUSED written = 0;
28076 IADDR UNUSED pc = abuf->addr;
28077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28078
28079 {
28080 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28081 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28082 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28083 }
28084
28085 return vpc;
28086 #undef FLD
28087 }
28088
28089 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28090
28091 static SEM_PC
28092 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28093 {
28094 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
28095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28096 int UNUSED written = 0;
28097 IADDR UNUSED pc = abuf->addr;
28098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28099
28100 {
28101 frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
28102 {
28103 USI opval = GET_H_FR_INT (FLD (f_FRi));
28104 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28105 CGEN_TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28106 }
28107 }
28108
28109 return vpc;
28110 #undef FLD
28111 }
28112
28113 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28114
28115 static SEM_PC
28116 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28117 {
28118 #define FLD(f) abuf->fields.sfmt_empty.f
28119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28120 int UNUSED written = 0;
28121 IADDR UNUSED pc = abuf->addr;
28122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28123
28124 frvbf_media_cop (current_cpu, 1);
28125
28126 return vpc;
28127 #undef FLD
28128 }
28129
28130 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28131
28132 static SEM_PC
28133 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28134 {
28135 #define FLD(f) abuf->fields.sfmt_empty.f
28136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28137 int UNUSED written = 0;
28138 IADDR UNUSED pc = abuf->addr;
28139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28140
28141 frvbf_media_cop (current_cpu, 2);
28142
28143 return vpc;
28144 #undef FLD
28145 }
28146
28147 /* fnop: fnop$pack */
28148
28149 static SEM_PC
28150 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28151 {
28152 #define FLD(f) abuf->fields.sfmt_empty.f
28153 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28154 int UNUSED written = 0;
28155 IADDR UNUSED pc = abuf->addr;
28156 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28157
28158 ((void) 0); /*nop*/
28159
28160 return vpc;
28161 #undef FLD
28162 }
28163
28164 /* Table of all semantic fns. */
28165
28166 static const struct sem_fn_desc sem_fns[] = {
28167 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28168 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28169 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28170 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28171 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28172 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28173 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28174 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28175 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28176 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28177 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28178 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28179 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28180 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28181 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28182 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28183 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28184 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
28185 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28186 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28187 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
28188 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28189 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28190 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
28191 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28192 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
28193 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28194 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28195 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28196 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28197 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28198 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28199 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28200 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28201 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28202 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28203 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28204 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28205 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28206 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28207 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28208 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28209 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28210 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28211 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28212 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28213 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28214 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28215 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28216 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28217 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28218 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28219 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28220 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28221 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28222 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28223 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28224 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28225 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28226 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28227 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28228 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28229 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
28230 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28231 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
28232 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28233 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28234 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28235 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28236 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28237 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28238 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28239 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28240 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28241 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28242 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28243 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28244 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28245 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28246 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28247 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28248 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28249 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28250 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28251 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28252 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28253 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28254 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28255 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28256 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28257 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28258 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28259 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28260 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28261 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28262 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28263 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28264 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28265 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28266 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28267 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28268 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28269 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28270 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28271 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28272 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28273 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28274 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28275 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28276 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28277 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28278 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28279 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28280 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28281 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28282 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28283 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28284 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28285 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28286 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28287 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28288 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28289 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28290 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28291 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28292 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28293 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28294 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28295 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28296 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28297 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28298 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28299 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28300 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28301 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28302 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28303 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28304 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28305 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28306 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28307 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28308 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28309 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28310 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28311 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28312 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28313 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28314 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28315 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28316 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28317 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28318 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28319 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28320 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28321 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28322 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28323 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28324 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28325 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28326 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28327 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28328 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28329 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28330 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28331 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28332 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28333 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28334 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28335 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28336 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28337 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28338 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28339 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28340 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28341 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
28342 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28343 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28344 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28345 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28346 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28347 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28348 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28349 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
28350 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28351 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28352 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
28353 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28354 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28355 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
28356 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28357 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28358 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28359 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28360 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28361 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28362 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28363 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28364 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28365 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28366 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28367 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28368 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28369 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28370 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28371 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28372 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28373 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28374 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28375 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28376 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28377 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28378 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28379 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28380 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28381 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28382 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28383 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28384 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28385 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28386 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28387 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28388 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28389 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28390 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28391 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28392 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28393 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28394 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28395 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28396 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28397 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28398 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28399 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28400 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28401 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28402 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28403 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28404 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28405 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28406 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28407 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28408 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28409 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28410 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28411 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28412 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28413 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28414 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28415 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28416 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28417 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28418 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28419 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28420 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28421 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28422 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28423 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28424 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28425 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28426 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28427 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28428 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28429 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28430 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28431 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28432 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28433 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28434 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28435 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28436 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28437 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28438 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28439 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28440 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28441 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28442 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28443 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28444 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28445 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28446 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28447 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28448 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28449 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28450 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28451 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28452 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28453 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28454 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28455 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28456 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28457 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28458 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28459 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28460 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28461 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28462 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28463 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28464 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28465 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28466 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28467 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28468 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28469 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28470 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28471 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28472 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28473 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28474 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28475 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28476 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28477 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28478 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28479 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28480 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28481 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28482 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28483 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28484 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28485 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28486 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28487 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28488 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28489 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28490 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28491 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28492 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28493 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28494 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28495 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28496 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28497 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28498 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28499 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28500 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28501 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28502 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28503 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28504 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28505 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28506 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28507 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28508 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28509 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28510 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28511 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28512 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28513 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28514 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28515 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28516 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28517 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28518 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28519 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28520 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28521 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28522 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28523 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28524 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28525 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28526 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28527 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28528 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28529 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28530 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28531 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28532 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28533 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28534 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28535 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28536 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28537 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28538 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28539 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28540 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28541 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28542 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28543 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28544 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28545 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28546 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28547 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28548 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28549 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28550 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28551 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28552 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28553 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28554 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28555 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28556 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28557 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28558 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28559 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28560 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28561 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28562 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28563 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28564 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28565 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28566 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28567 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28568 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28569 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28570 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28571 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28572 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28573 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28574 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28575 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28576 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28577 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28578 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28579 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28580 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28581 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28582 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28583 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28584 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28585 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28586 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28587 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28588 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28589 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28590 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28591 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28592 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28593 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28594 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28595 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28596 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28597 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28598 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28599 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28600 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28601 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28602 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28603 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28604 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28605 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28606 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28607 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28608 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28609 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28610 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28611 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28612 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28613 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28614 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28615 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28616 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28617 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28618 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28619 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28620 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28621 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28622 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28623 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28624 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28625 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28626 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28627 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28628 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28629 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28630 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28631 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28632 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28633 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28634 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28635 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28636 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28637 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28638 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28639 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28640 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28641 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28642 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28643 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28644 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28645 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28646 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28647 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28648 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28649 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28650 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28651 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28652 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28653 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28654 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28655 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28656 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28657 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28658 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28659 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28660 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28661 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28662 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28663 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28664 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28665 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28666 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28667 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28668 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28669 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28670 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28671 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28672 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28673 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28674 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28675 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28676 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28677 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28678 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28679 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28680 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28681 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28682 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28683 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28684 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28685 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28686 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28687 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28688 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28689 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28690 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28691 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28692 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28693 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28694 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28695 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28696 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28697 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
28698 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28699 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28700 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28701 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28702 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28703 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28704 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28705 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28706 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28707 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28708 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28709 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28710 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28711 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28712 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28713 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28714 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28715 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28716 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28717 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28718 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28719 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28720 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28721 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28722 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28723 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28724 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28725 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28726 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28727 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28728 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28729 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28730 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28731 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28732 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28733 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28734 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28735 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28736 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28737 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28738 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28739 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28740 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28741 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28742 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28743 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28744 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28745 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28746 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28747 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28748 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28749 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28750 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28751 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28752 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28753 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28754 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28755 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28756 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28757 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28758 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28759 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28760 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28761 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28762 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28763 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28764 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28765 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28766 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28767 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28768 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28769 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28770 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28771 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28772 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28773 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28774 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28775 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28776 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28777 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28778 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28779 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28780 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28781 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28782 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28783 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28784 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28785 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28786 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28787 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28788 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28789 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28790 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28791 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28792 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28793 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28794 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28795 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28796 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28797 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28798 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28799 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28800 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28801 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28802 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28803 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28804 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28805 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28806 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28807 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28808 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28809 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28810 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28811 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28812 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28813 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28814 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28815 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28816 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28817 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28818 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28819 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28820 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28821 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28822 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28823 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28824 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28825 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28826 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28827 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28828 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28829 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28830 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28831 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28832 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28833 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28834 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28835 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28836 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28837 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28838 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28839 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28840 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28841 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28842 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28843 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28844 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28845 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28846 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28847 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28848 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
28849 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28850 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28851 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28852 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28853 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28854 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28855 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28856 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28857 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28858 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28859 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28860 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28861 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28862 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28863 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28864 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28865 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28866 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28867 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28868 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28869 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28870 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28871 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28872 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28873 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28874 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28875 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28876 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28877 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28878 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28879 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28880 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28881 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28882 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28883 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28884 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28885 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28886 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28887 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28888 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28889 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28890 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28891 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28892 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28893 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28894 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28895 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28896 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28897 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28898 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28899 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28900 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28901 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28902 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28903 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28904 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28905 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28906 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28907 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28908 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
28909 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28910 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28911 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28912 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28913 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28914 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28915 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28916 { 0, 0 }
28917 };
28918
28919 /* Add the semantic fns to IDESC_TABLE. */
28920
28921 void
28922 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28923 {
28924 IDESC *idesc_table = CPU_IDESC (current_cpu);
28925 const struct sem_fn_desc *sf;
28926 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28927
28928 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28929 {
28930 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28931 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28932 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28933 #if FAST_P
28934 if (valid_p)
28935 idesc_table[sf->index].sem_fast = sf->fn;
28936 else
28937 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28938 #else
28939 if (valid_p)
28940 idesc_table[sf->index].sem_full = sf->fn;
28941 else
28942 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28943 #endif
28944 }
28945 }
28946