1 /* Simulator instruction semantics for mepcore1.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 2000-2010 Red Hat, Inc.
7 This file is part of the Red Hat simulators.
18 using namespace mep_ext1; // FIXME: namespace organization still wip
19 #define GET_ATTR(name) GET_ATTR_##name ()
22 // ********** x-invalid: --invalid--
25 mepcore1_sem_x_invalid (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
27 #define FLD(f) abuf->fields.fmt_empty.f
28 sem_status status = SEM_STATUS_NORMAL;
29 mepcore1_scache* abuf = sem;
30 unsigned long long written = 0;
31 PCADDR pc = abuf->addr;
35 current_cpu->invalid_insn (pc);
40 current_cpu->done_insn (npc, status);
45 // ********** stcb_r: stcb $rn,($rma)
48 mepcore1_sem_stcb_r (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
50 #define FLD(f) abuf->fields.sfmt_stcb_r.f
51 sem_status status = SEM_STATUS_NORMAL;
52 mepcore1_scache* abuf = sem;
53 unsigned long long written = 0;
54 PCADDR pc = abuf->addr;
57 current_cpu->do_stcb (* FLD (i_rn), ANDSI (* FLD (i_rma), 65535));
59 current_cpu->done_insn (npc, status);
64 // ********** ldcb_r: ldcb $rn,($rma)
67 mepcore1_sem_ldcb_r (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
69 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
70 sem_status status = SEM_STATUS_NORMAL;
71 mepcore1_scache* abuf = sem;
72 unsigned long long written = 0;
73 PCADDR pc = abuf->addr;
77 SI opval = current_cpu->do_ldcb (ANDSI (* FLD (i_rma), 65535));
78 if (UNLIKELY(current_cpu->trace_result_p))
79 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
83 current_cpu->done_insn (npc, status);
88 // ********** pref: pref $cimm4,($rma)
91 mepcore1_sem_pref (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
93 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
94 sem_status status = SEM_STATUS_NORMAL;
95 mepcore1_scache* abuf = sem;
96 unsigned long long written = 0;
97 PCADDR pc = abuf->addr;
101 current_cpu->check_option_dcache (pc);
102 current_cpu->do_cache_prefetch (FLD (f_rn), * FLD (i_rma), pc);
105 current_cpu->done_insn (npc, status);
110 // ********** prefd: pref $cimm4,$sdisp16($rma)
113 mepcore1_sem_prefd (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
115 #define FLD(f) abuf->fields.sfmt_lhu16.f
116 sem_status status = SEM_STATUS_NORMAL;
117 mepcore1_scache* abuf = sem;
118 unsigned long long written = 0;
119 PCADDR pc = abuf->addr;
123 current_cpu->check_option_dcache (pc);
124 current_cpu->do_cache_prefetch (FLD (f_rn), ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), pc);
127 current_cpu->done_insn (npc, status);
132 // ********** casb3: casb3 $rl5,$rn,($rm)
135 mepcore1_sem_casb3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
137 #define FLD(f) abuf->fields.sfmt_casb3.f
138 sem_status status = SEM_STATUS_NORMAL;
139 mepcore1_scache* abuf = sem;
140 unsigned long long written = 0;
141 PCADDR pc = abuf->addr;
145 current_cpu->do_casb3 (FLD (f_rl5), * FLD (i_rn), * FLD (i_rm), pc);
147 SI opval = * FLD (i_rl5);
148 if (UNLIKELY(current_cpu->trace_result_p))
149 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rl5) << ']' << ":=0x" << hex << opval << dec << " ";
150 * FLD (i_rl5) = opval;
154 current_cpu->done_insn (npc, status);
159 // ********** cash3: cash3 $rl5,$rn,($rm)
162 mepcore1_sem_cash3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
164 #define FLD(f) abuf->fields.sfmt_casb3.f
165 sem_status status = SEM_STATUS_NORMAL;
166 mepcore1_scache* abuf = sem;
167 unsigned long long written = 0;
168 PCADDR pc = abuf->addr;
172 current_cpu->do_cash3 (FLD (f_rl5), * FLD (i_rn), * FLD (i_rm), pc);
174 SI opval = * FLD (i_rl5);
175 if (UNLIKELY(current_cpu->trace_result_p))
176 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rl5) << ']' << ":=0x" << hex << opval << dec << " ";
177 * FLD (i_rl5) = opval;
181 current_cpu->done_insn (npc, status);
186 // ********** casw3: casw3 $rl5,$rn,($rm)
189 mepcore1_sem_casw3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
191 #define FLD(f) abuf->fields.sfmt_casb3.f
192 sem_status status = SEM_STATUS_NORMAL;
193 mepcore1_scache* abuf = sem;
194 unsigned long long written = 0;
195 PCADDR pc = abuf->addr;
199 current_cpu->do_casw3 (FLD (f_rl5), * FLD (i_rn), * FLD (i_rm), pc);
201 SI opval = * FLD (i_rl5);
202 if (UNLIKELY(current_cpu->trace_result_p))
203 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rl5) << ']' << ":=0x" << hex << opval << dec << " ";
204 * FLD (i_rl5) = opval;
208 current_cpu->done_insn (npc, status);
213 // ********** sbcp: sbcp $crn,$cdisp12($rma)
216 mepcore1_sem_sbcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
218 #define FLD(f) abuf->fields.sfmt_sbcp.f
219 sem_status status = SEM_STATUS_NORMAL;
220 mepcore1_scache* abuf = sem;
221 unsigned long long written = 0;
222 PCADDR pc = abuf->addr;
226 current_cpu->check_option_cp (pc);
227 current_cpu->check_write_to_text (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))));
229 QI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 255);
230 if (UNLIKELY(current_cpu->trace_result_p))
231 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
232 current_cpu->SETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))), opval);
236 current_cpu->done_insn (npc, status);
241 // ********** lbcp: lbcp $crn,$cdisp12($rma)
244 mepcore1_sem_lbcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
246 #define FLD(f) abuf->fields.sfmt_sbcp.f
247 sem_status status = SEM_STATUS_NORMAL;
248 mepcore1_scache* abuf = sem;
249 unsigned long long written = 0;
250 PCADDR pc = abuf->addr;
254 current_cpu->check_option_cp (pc);
256 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20)))));
257 if (UNLIKELY(current_cpu->trace_result_p))
258 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
259 current_cpu->h_cr_set (FLD (f_crn), opval);
263 current_cpu->done_insn (npc, status);
268 // ********** lbucp: lbucp $crn,$cdisp12($rma)
271 mepcore1_sem_lbucp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
273 #define FLD(f) abuf->fields.sfmt_sbcp.f
274 sem_status status = SEM_STATUS_NORMAL;
275 mepcore1_scache* abuf = sem;
276 unsigned long long written = 0;
277 PCADDR pc = abuf->addr;
281 current_cpu->check_option_cp (pc);
283 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20)))));
284 if (UNLIKELY(current_cpu->trace_result_p))
285 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
286 current_cpu->h_cr_set (FLD (f_crn), opval);
290 current_cpu->done_insn (npc, status);
295 // ********** shcp: shcp $crn,$cdisp12($rma)
298 mepcore1_sem_shcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
300 #define FLD(f) abuf->fields.sfmt_sbcp.f
301 sem_status status = SEM_STATUS_NORMAL;
302 mepcore1_scache* abuf = sem;
303 unsigned long long written = 0;
304 PCADDR pc = abuf->addr;
308 current_cpu->check_option_cp (pc);
309 current_cpu->check_write_to_text (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))));
311 HI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 65535);
312 if (UNLIKELY(current_cpu->trace_result_p))
313 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))) << dec << ']' << ":=0x" << hex << opval << dec << " ";
314 current_cpu->SETMEMHI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20))), opval);
318 current_cpu->done_insn (npc, status);
323 // ********** lhcp: lhcp $crn,$cdisp12($rma)
326 mepcore1_sem_lhcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
328 #define FLD(f) abuf->fields.sfmt_sbcp.f
329 sem_status status = SEM_STATUS_NORMAL;
330 mepcore1_scache* abuf = sem;
331 unsigned long long written = 0;
332 PCADDR pc = abuf->addr;
336 current_cpu->check_option_cp (pc);
338 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20)))));
339 if (UNLIKELY(current_cpu->trace_result_p))
340 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
341 current_cpu->h_cr_set (FLD (f_crn), opval);
345 current_cpu->done_insn (npc, status);
350 // ********** lhucp: lhucp $crn,$cdisp12($rma)
353 mepcore1_sem_lhucp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
355 #define FLD(f) abuf->fields.sfmt_sbcp.f
356 sem_status status = SEM_STATUS_NORMAL;
357 mepcore1_scache* abuf = sem;
358 unsigned long long written = 0;
359 PCADDR pc = abuf->addr;
363 current_cpu->check_option_cp (pc);
365 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_12s20)))));
366 if (UNLIKELY(current_cpu->trace_result_p))
367 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
368 current_cpu->h_cr_set (FLD (f_crn), opval);
372 current_cpu->done_insn (npc, status);
377 // ********** lbucpa: lbucpa $crn,($rma+),$cdisp10
380 mepcore1_sem_lbucpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
382 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
383 sem_status status = SEM_STATUS_NORMAL;
384 mepcore1_scache* abuf = sem;
385 unsigned long long written = 0;
386 PCADDR pc = abuf->addr;
390 current_cpu->check_option_cp (pc);
392 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
393 if (UNLIKELY(current_cpu->trace_result_p))
394 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
395 current_cpu->h_cr_set (FLD (f_crn), opval);
398 SI opval = ADDSI (* FLD (i_rma), FLD (f_cdisp10));
399 if (UNLIKELY(current_cpu->trace_result_p))
400 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
401 * FLD (i_rma) = opval;
405 current_cpu->done_insn (npc, status);
410 // ********** lhucpa: lhucpa $crn,($rma+),$cdisp10a2
413 mepcore1_sem_lhucpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
415 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
416 sem_status status = SEM_STATUS_NORMAL;
417 mepcore1_scache* abuf = sem;
418 unsigned long long written = 0;
419 PCADDR pc = abuf->addr;
423 current_cpu->check_option_cp (pc);
425 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
426 if (UNLIKELY(current_cpu->trace_result_p))
427 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
428 current_cpu->h_cr_set (FLD (f_crn), opval);
431 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
432 if (UNLIKELY(current_cpu->trace_result_p))
433 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
434 * FLD (i_rma) = opval;
438 current_cpu->done_insn (npc, status);
443 // ********** lbucpm0: lbucpm0 $crn,($rma+),$cdisp10
446 mepcore1_sem_lbucpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
448 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
449 sem_status status = SEM_STATUS_NORMAL;
450 mepcore1_scache* abuf = sem;
451 unsigned long long written = 0;
452 PCADDR pc = abuf->addr;
456 current_cpu->check_option_cp (pc);
458 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
459 if (UNLIKELY(current_cpu->trace_result_p))
460 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
461 current_cpu->h_cr_set (FLD (f_crn), opval);
464 SI opval = ({ SI tmp_modulo_mask;
465 tmp_modulo_mask = ({ SI tmp_temp;
466 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
467 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
468 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
469 if (UNLIKELY(current_cpu->trace_result_p))
470 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
471 * FLD (i_rma) = opval;
475 current_cpu->done_insn (npc, status);
480 // ********** lhucpm0: lhucpm0 $crn,($rma+),$cdisp10a2
483 mepcore1_sem_lhucpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
485 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
486 sem_status status = SEM_STATUS_NORMAL;
487 mepcore1_scache* abuf = sem;
488 unsigned long long written = 0;
489 PCADDR pc = abuf->addr;
493 current_cpu->check_option_cp (pc);
495 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
496 if (UNLIKELY(current_cpu->trace_result_p))
497 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
498 current_cpu->h_cr_set (FLD (f_crn), opval);
501 SI opval = ({ SI tmp_modulo_mask;
502 tmp_modulo_mask = ({ SI tmp_temp;
503 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
504 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
505 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
506 if (UNLIKELY(current_cpu->trace_result_p))
507 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
508 * FLD (i_rma) = opval;
512 current_cpu->done_insn (npc, status);
517 // ********** lbucpm1: lbucpm1 $crn,($rma+),$cdisp10
520 mepcore1_sem_lbucpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
522 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
523 sem_status status = SEM_STATUS_NORMAL;
524 mepcore1_scache* abuf = sem;
525 unsigned long long written = 0;
526 PCADDR pc = abuf->addr;
530 current_cpu->check_option_cp (pc);
532 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
533 if (UNLIKELY(current_cpu->trace_result_p))
534 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
535 current_cpu->h_cr_set (FLD (f_crn), opval);
538 SI opval = ({ SI tmp_modulo_mask;
539 tmp_modulo_mask = ({ SI tmp_temp;
540 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
541 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
542 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
543 if (UNLIKELY(current_cpu->trace_result_p))
544 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
545 * FLD (i_rma) = opval;
549 current_cpu->done_insn (npc, status);
554 // ********** lhucpm1: lhucpm1 $crn,($rma+),$cdisp10a2
557 mepcore1_sem_lhucpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
559 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
560 sem_status status = SEM_STATUS_NORMAL;
561 mepcore1_scache* abuf = sem;
562 unsigned long long written = 0;
563 PCADDR pc = abuf->addr;
567 current_cpu->check_option_cp (pc);
569 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
570 if (UNLIKELY(current_cpu->trace_result_p))
571 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
572 current_cpu->h_cr_set (FLD (f_crn), opval);
575 SI opval = ({ SI tmp_modulo_mask;
576 tmp_modulo_mask = ({ SI tmp_temp;
577 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
578 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
579 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
580 if (UNLIKELY(current_cpu->trace_result_p))
581 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
582 * FLD (i_rma) = opval;
586 current_cpu->done_insn (npc, status);
591 // ********** uci: uci $rn,$rm,$uimm16
594 mepcore1_sem_uci (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
596 #define FLD(f) abuf->fields.sfmt_uci.f
597 sem_status status = SEM_STATUS_NORMAL;
598 mepcore1_scache* abuf = sem;
599 unsigned long long written = 0;
600 PCADDR pc = abuf->addr;
604 SI opval = current_cpu->do_UCI (* FLD (i_rn), * FLD (i_rm), ZEXTSISI (FLD (f_16u16)), pc);
605 if (UNLIKELY(current_cpu->trace_result_p))
606 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
607 * FLD (i_rn) = opval;
610 current_cpu->done_insn (npc, status);
615 // ********** dsp: dsp $rn,$rm,$uimm16
618 mepcore1_sem_dsp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
620 #define FLD(f) abuf->fields.sfmt_uci.f
621 sem_status status = SEM_STATUS_NORMAL;
622 mepcore1_scache* abuf = sem;
623 unsigned long long written = 0;
624 PCADDR pc = abuf->addr;
628 SI opval = current_cpu->do_DSP (* FLD (i_rn), * FLD (i_rm), ZEXTSISI (FLD (f_16u16)), pc);
629 if (UNLIKELY(current_cpu->trace_result_p))
630 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
631 * FLD (i_rn) = opval;
634 current_cpu->done_insn (npc, status);
639 // ********** sb: sb $rnc,($rma)
642 mepcore1_sem_sb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
644 #define FLD(f) abuf->fields.sfmt_sb16.f
645 sem_status status = SEM_STATUS_NORMAL;
646 mepcore1_scache* abuf = sem;
647 unsigned long long written = 0;
648 PCADDR pc = abuf->addr;
652 current_cpu->check_write_to_text (* FLD (i_rma));
654 UQI opval = ANDSI (* FLD (i_rnc), 255);
655 if (UNLIKELY(current_cpu->trace_result_p))
656 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (USI) opval << dec << " ";
657 current_cpu->SETMEMUQI (pc, * FLD (i_rma), opval);
661 current_cpu->done_insn (npc, status);
666 // ********** sh: sh $rns,($rma)
669 mepcore1_sem_sh (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
671 #define FLD(f) abuf->fields.sfmt_sh16.f
672 sem_status status = SEM_STATUS_NORMAL;
673 mepcore1_scache* abuf = sem;
674 unsigned long long written = 0;
675 PCADDR pc = abuf->addr;
679 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (1)));
681 UHI opval = ANDSI (* FLD (i_rns), 65535);
682 if (UNLIKELY(current_cpu->trace_result_p))
683 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
684 current_cpu->SETMEMUHI (pc, ANDSI (* FLD (i_rma), INVSI (1)), opval);
688 current_cpu->done_insn (npc, status);
693 // ********** sw: sw $rnl,($rma)
696 mepcore1_sem_sw (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
698 #define FLD(f) abuf->fields.sfmt_sw16.f
699 sem_status status = SEM_STATUS_NORMAL;
700 mepcore1_scache* abuf = sem;
701 unsigned long long written = 0;
702 PCADDR pc = abuf->addr;
706 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
708 USI opval = * FLD (i_rnl);
709 if (UNLIKELY(current_cpu->trace_result_p))
710 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
711 current_cpu->SETMEMUSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
715 current_cpu->done_insn (npc, status);
720 // ********** lb: lb $rnc,($rma)
723 mepcore1_sem_lb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
725 #define FLD(f) abuf->fields.sfmt_lb16.f
726 sem_status status = SEM_STATUS_NORMAL;
727 mepcore1_scache* abuf = sem;
728 unsigned long long written = 0;
729 PCADDR pc = abuf->addr;
733 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
734 if (UNLIKELY(current_cpu->trace_result_p))
735 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
736 * FLD (i_rnc) = opval;
739 current_cpu->done_insn (npc, status);
744 // ********** lh: lh $rns,($rma)
747 mepcore1_sem_lh (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
749 #define FLD(f) abuf->fields.sfmt_lh16.f
750 sem_status status = SEM_STATUS_NORMAL;
751 mepcore1_scache* abuf = sem;
752 unsigned long long written = 0;
753 PCADDR pc = abuf->addr;
757 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
758 if (UNLIKELY(current_cpu->trace_result_p))
759 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
760 * FLD (i_rns) = opval;
763 current_cpu->done_insn (npc, status);
768 // ********** lw: lw $rnl,($rma)
771 mepcore1_sem_lw (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
773 #define FLD(f) abuf->fields.sfmt_lw16.f
774 sem_status status = SEM_STATUS_NORMAL;
775 mepcore1_scache* abuf = sem;
776 unsigned long long written = 0;
777 PCADDR pc = abuf->addr;
781 SI opval = current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)));
782 if (UNLIKELY(current_cpu->trace_result_p))
783 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
784 * FLD (i_rnl) = opval;
787 current_cpu->done_insn (npc, status);
792 // ********** lbu: lbu $rnuc,($rma)
795 mepcore1_sem_lbu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
797 #define FLD(f) abuf->fields.sfmt_lbu16.f
798 sem_status status = SEM_STATUS_NORMAL;
799 mepcore1_scache* abuf = sem;
800 unsigned long long written = 0;
801 PCADDR pc = abuf->addr;
805 SI opval = ZEXTQISI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)));
806 if (UNLIKELY(current_cpu->trace_result_p))
807 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
808 * FLD (i_rnuc) = opval;
811 current_cpu->done_insn (npc, status);
816 // ********** lhu: lhu $rnus,($rma)
819 mepcore1_sem_lhu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
821 #define FLD(f) abuf->fields.sfmt_lhu16.f
822 sem_status status = SEM_STATUS_NORMAL;
823 mepcore1_scache* abuf = sem;
824 unsigned long long written = 0;
825 PCADDR pc = abuf->addr;
829 SI opval = ZEXTHISI (current_cpu->GETMEMUHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
830 if (UNLIKELY(current_cpu->trace_result_p))
831 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
832 * FLD (i_rnus) = opval;
835 current_cpu->done_insn (npc, status);
840 // ********** sw-sp: sw $rnl,$udisp7a4($spr)
843 mepcore1_sem_sw_sp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
845 #define FLD(f) abuf->fields.sfmt_sw_sp.f
846 sem_status status = SEM_STATUS_NORMAL;
847 mepcore1_scache* abuf = sem;
848 unsigned long long written = 0;
849 PCADDR pc = abuf->addr;
853 current_cpu->check_write_to_text (ANDSI (ADDSI (FLD (f_7u9a4), current_cpu->hardware.h_gpr[((UINT) 15)]), INVSI (3)));
855 SI opval = * FLD (i_rnl);
856 if (UNLIKELY(current_cpu->trace_result_p))
857 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (FLD (f_7u9a4), current_cpu->hardware.h_gpr[((UINT) 15)]), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
858 current_cpu->SETMEMSI (pc, ANDSI (ADDSI (FLD (f_7u9a4), current_cpu->hardware.h_gpr[((UINT) 15)]), INVSI (3)), opval);
862 current_cpu->done_insn (npc, status);
867 // ********** lw-sp: lw $rnl,$udisp7a4($spr)
870 mepcore1_sem_lw_sp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
872 #define FLD(f) abuf->fields.sfmt_lw_sp.f
873 sem_status status = SEM_STATUS_NORMAL;
874 mepcore1_scache* abuf = sem;
875 unsigned long long written = 0;
876 PCADDR pc = abuf->addr;
880 SI opval = current_cpu->GETMEMSI (pc, ANDSI (ADDSI (FLD (f_7u9a4), current_cpu->hardware.h_gpr[((UINT) 15)]), INVSI (3)));
881 if (UNLIKELY(current_cpu->trace_result_p))
882 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
883 * FLD (i_rnl) = opval;
886 current_cpu->done_insn (npc, status);
891 // ********** sb-tp: sb $rn3c,$udisp7($tpr)
894 mepcore1_sem_sb_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
896 #define FLD(f) abuf->fields.sfmt_sb_tp.f
897 sem_status status = SEM_STATUS_NORMAL;
898 mepcore1_scache* abuf = sem;
899 unsigned long long written = 0;
900 PCADDR pc = abuf->addr;
904 current_cpu->check_write_to_text (ADDSI (ZEXTSISI (FLD (f_7u9)), current_cpu->hardware.h_gpr[((UINT) 13)]));
906 QI opval = ANDSI (* FLD (i_rn3c), 255);
907 if (UNLIKELY(current_cpu->trace_result_p))
908 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (ZEXTSISI (FLD (f_7u9)), current_cpu->hardware.h_gpr[((UINT) 13)]) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
909 current_cpu->SETMEMQI (pc, ADDSI (ZEXTSISI (FLD (f_7u9)), current_cpu->hardware.h_gpr[((UINT) 13)]), opval);
913 current_cpu->done_insn (npc, status);
918 // ********** sh-tp: sh $rn3s,$udisp7a2($tpr)
921 mepcore1_sem_sh_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
923 #define FLD(f) abuf->fields.sfmt_sh_tp.f
924 sem_status status = SEM_STATUS_NORMAL;
925 mepcore1_scache* abuf = sem;
926 unsigned long long written = 0;
927 PCADDR pc = abuf->addr;
931 current_cpu->check_write_to_text (ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a2)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (1)));
933 HI opval = ANDSI (* FLD (i_rn3s), 65535);
934 if (UNLIKELY(current_cpu->trace_result_p))
935 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a2)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
936 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a2)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (1)), opval);
940 current_cpu->done_insn (npc, status);
945 // ********** sw-tp: sw $rn3l,$udisp7a4($tpr)
948 mepcore1_sem_sw_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
950 #define FLD(f) abuf->fields.sfmt_sw_tp.f
951 sem_status status = SEM_STATUS_NORMAL;
952 mepcore1_scache* abuf = sem;
953 unsigned long long written = 0;
954 PCADDR pc = abuf->addr;
958 current_cpu->check_write_to_text (ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a4)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (3)));
960 SI opval = * FLD (i_rn3l);
961 if (UNLIKELY(current_cpu->trace_result_p))
962 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a4)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
963 current_cpu->SETMEMSI (pc, ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a4)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (3)), opval);
967 current_cpu->done_insn (npc, status);
972 // ********** lb-tp: lb $rn3c,$udisp7($tpr)
975 mepcore1_sem_lb_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
977 #define FLD(f) abuf->fields.sfmt_lb_tp.f
978 sem_status status = SEM_STATUS_NORMAL;
979 mepcore1_scache* abuf = sem;
980 unsigned long long written = 0;
981 PCADDR pc = abuf->addr;
985 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, ADDSI (ZEXTSISI (FLD (f_7u9)), current_cpu->hardware.h_gpr[((UINT) 13)])));
986 if (UNLIKELY(current_cpu->trace_result_p))
987 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
988 * FLD (i_rn3c) = opval;
991 current_cpu->done_insn (npc, status);
996 // ********** lh-tp: lh $rn3s,$udisp7a2($tpr)
999 mepcore1_sem_lh_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1001 #define FLD(f) abuf->fields.sfmt_lh_tp.f
1002 sem_status status = SEM_STATUS_NORMAL;
1003 mepcore1_scache* abuf = sem;
1004 unsigned long long written = 0;
1005 PCADDR pc = abuf->addr;
1006 PCADDR npc = pc + 2;
1009 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a2)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (1))));
1010 if (UNLIKELY(current_cpu->trace_result_p))
1011 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
1012 * FLD (i_rn3s) = opval;
1015 current_cpu->done_insn (npc, status);
1020 // ********** lw-tp: lw $rn3l,$udisp7a4($tpr)
1023 mepcore1_sem_lw_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1025 #define FLD(f) abuf->fields.sfmt_lw_tp.f
1026 sem_status status = SEM_STATUS_NORMAL;
1027 mepcore1_scache* abuf = sem;
1028 unsigned long long written = 0;
1029 PCADDR pc = abuf->addr;
1030 PCADDR npc = pc + 2;
1033 SI opval = current_cpu->GETMEMSI (pc, ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a4)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (3)));
1034 if (UNLIKELY(current_cpu->trace_result_p))
1035 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
1036 * FLD (i_rn3l) = opval;
1039 current_cpu->done_insn (npc, status);
1044 // ********** lbu-tp: lbu $rn3uc,$udisp7($tpr)
1047 mepcore1_sem_lbu_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1049 #define FLD(f) abuf->fields.sfmt_lbu_tp.f
1050 sem_status status = SEM_STATUS_NORMAL;
1051 mepcore1_scache* abuf = sem;
1052 unsigned long long written = 0;
1053 PCADDR pc = abuf->addr;
1054 PCADDR npc = pc + 2;
1057 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, ADDSI (ZEXTSISI (FLD (f_7u9)), current_cpu->hardware.h_gpr[((UINT) 13)])));
1058 if (UNLIKELY(current_cpu->trace_result_p))
1059 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
1060 * FLD (i_rn3uc) = opval;
1063 current_cpu->done_insn (npc, status);
1068 // ********** lhu-tp: lhu $rn3us,$udisp7a2($tpr)
1071 mepcore1_sem_lhu_tp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1073 #define FLD(f) abuf->fields.sfmt_lhu_tp.f
1074 sem_status status = SEM_STATUS_NORMAL;
1075 mepcore1_scache* abuf = sem;
1076 unsigned long long written = 0;
1077 PCADDR pc = abuf->addr;
1078 PCADDR npc = pc + 2;
1081 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ANDSI (ADDSI (ZEXTSISI (FLD (f_7u9a2)), current_cpu->hardware.h_gpr[((UINT) 13)]), INVSI (1))));
1082 if (UNLIKELY(current_cpu->trace_result_p))
1083 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
1084 * FLD (i_rn3us) = opval;
1087 current_cpu->done_insn (npc, status);
1092 // ********** sb16: sb $rnc,$sdisp16($rma)
1095 mepcore1_sem_sb16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1097 #define FLD(f) abuf->fields.sfmt_sb16.f
1098 sem_status status = SEM_STATUS_NORMAL;
1099 mepcore1_scache* abuf = sem;
1100 unsigned long long written = 0;
1101 PCADDR pc = abuf->addr;
1102 PCADDR npc = pc + 4;
1105 current_cpu->check_write_to_text (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))));
1107 QI opval = ANDSI (* FLD (i_rnc), 255);
1108 if (UNLIKELY(current_cpu->trace_result_p))
1109 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
1110 current_cpu->SETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), opval);
1114 current_cpu->done_insn (npc, status);
1119 // ********** sh16: sh $rns,$sdisp16($rma)
1122 mepcore1_sem_sh16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1124 #define FLD(f) abuf->fields.sfmt_sh16.f
1125 sem_status status = SEM_STATUS_NORMAL;
1126 mepcore1_scache* abuf = sem;
1127 unsigned long long written = 0;
1128 PCADDR pc = abuf->addr;
1129 PCADDR npc = pc + 4;
1132 current_cpu->check_write_to_text (ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (1)));
1134 HI opval = ANDSI (* FLD (i_rns), 65535);
1135 if (UNLIKELY(current_cpu->trace_result_p))
1136 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1137 current_cpu->SETMEMHI (pc, ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (1)), opval);
1141 current_cpu->done_insn (npc, status);
1146 // ********** sw16: sw $rnl,$sdisp16($rma)
1149 mepcore1_sem_sw16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1151 #define FLD(f) abuf->fields.sfmt_sw16.f
1152 sem_status status = SEM_STATUS_NORMAL;
1153 mepcore1_scache* abuf = sem;
1154 unsigned long long written = 0;
1155 PCADDR pc = abuf->addr;
1156 PCADDR npc = pc + 4;
1159 current_cpu->check_write_to_text (ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (3)));
1161 SI opval = * FLD (i_rnl);
1162 if (UNLIKELY(current_cpu->trace_result_p))
1163 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1164 current_cpu->SETMEMSI (pc, ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (3)), opval);
1168 current_cpu->done_insn (npc, status);
1173 // ********** lb16: lb $rnc,$sdisp16($rma)
1176 mepcore1_sem_lb16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1178 #define FLD(f) abuf->fields.sfmt_lb16.f
1179 sem_status status = SEM_STATUS_NORMAL;
1180 mepcore1_scache* abuf = sem;
1181 unsigned long long written = 0;
1182 PCADDR pc = abuf->addr;
1183 PCADDR npc = pc + 4;
1186 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16)))));
1187 if (UNLIKELY(current_cpu->trace_result_p))
1188 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1189 * FLD (i_rnc) = opval;
1192 current_cpu->done_insn (npc, status);
1197 // ********** lh16: lh $rns,$sdisp16($rma)
1200 mepcore1_sem_lh16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1202 #define FLD(f) abuf->fields.sfmt_lh16.f
1203 sem_status status = SEM_STATUS_NORMAL;
1204 mepcore1_scache* abuf = sem;
1205 unsigned long long written = 0;
1206 PCADDR pc = abuf->addr;
1207 PCADDR npc = pc + 4;
1210 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (1))));
1211 if (UNLIKELY(current_cpu->trace_result_p))
1212 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1213 * FLD (i_rns) = opval;
1216 current_cpu->done_insn (npc, status);
1221 // ********** lw16: lw $rnl,$sdisp16($rma)
1224 mepcore1_sem_lw16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1226 #define FLD(f) abuf->fields.sfmt_lw16.f
1227 sem_status status = SEM_STATUS_NORMAL;
1228 mepcore1_scache* abuf = sem;
1229 unsigned long long written = 0;
1230 PCADDR pc = abuf->addr;
1231 PCADDR npc = pc + 4;
1234 SI opval = current_cpu->GETMEMSI (pc, ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (3)));
1235 if (UNLIKELY(current_cpu->trace_result_p))
1236 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1237 * FLD (i_rnl) = opval;
1240 current_cpu->done_insn (npc, status);
1245 // ********** lbu16: lbu $rnuc,$sdisp16($rma)
1248 mepcore1_sem_lbu16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1250 #define FLD(f) abuf->fields.sfmt_lbu16.f
1251 sem_status status = SEM_STATUS_NORMAL;
1252 mepcore1_scache* abuf = sem;
1253 unsigned long long written = 0;
1254 PCADDR pc = abuf->addr;
1255 PCADDR npc = pc + 4;
1258 SI opval = ZEXTQISI (current_cpu->GETMEMQI (pc, ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16)))));
1259 if (UNLIKELY(current_cpu->trace_result_p))
1260 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1261 * FLD (i_rnuc) = opval;
1264 current_cpu->done_insn (npc, status);
1269 // ********** lhu16: lhu $rnus,$sdisp16($rma)
1272 mepcore1_sem_lhu16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1274 #define FLD(f) abuf->fields.sfmt_lhu16.f
1275 sem_status status = SEM_STATUS_NORMAL;
1276 mepcore1_scache* abuf = sem;
1277 unsigned long long written = 0;
1278 PCADDR pc = abuf->addr;
1279 PCADDR npc = pc + 4;
1282 SI opval = ZEXTHISI (current_cpu->GETMEMHI (pc, ANDSI (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_16s16))), INVSI (1))));
1283 if (UNLIKELY(current_cpu->trace_result_p))
1284 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1285 * FLD (i_rnus) = opval;
1288 current_cpu->done_insn (npc, status);
1293 // ********** sw24: sw $rnl,($addr24a4)
1296 mepcore1_sem_sw24 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1298 #define FLD(f) abuf->fields.sfmt_sw24.f
1299 sem_status status = SEM_STATUS_NORMAL;
1300 mepcore1_scache* abuf = sem;
1301 unsigned long long written = 0;
1302 PCADDR pc = abuf->addr;
1303 PCADDR npc = pc + 4;
1306 current_cpu->check_write_to_text (ZEXTSISI (FLD (f_24u8a4n)));
1308 SI opval = * FLD (i_rnl);
1309 if (UNLIKELY(current_cpu->trace_result_p))
1310 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ZEXTSISI (FLD (f_24u8a4n)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
1311 current_cpu->SETMEMSI (pc, ZEXTSISI (FLD (f_24u8a4n)), opval);
1315 current_cpu->done_insn (npc, status);
1320 // ********** lw24: lw $rnl,($addr24a4)
1323 mepcore1_sem_lw24 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1325 #define FLD(f) abuf->fields.sfmt_lw24.f
1326 sem_status status = SEM_STATUS_NORMAL;
1327 mepcore1_scache* abuf = sem;
1328 unsigned long long written = 0;
1329 PCADDR pc = abuf->addr;
1330 PCADDR npc = pc + 4;
1333 SI opval = current_cpu->GETMEMSI (pc, ZEXTSISI (FLD (f_24u8a4n)));
1334 if (UNLIKELY(current_cpu->trace_result_p))
1335 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1336 * FLD (i_rnl) = opval;
1339 current_cpu->done_insn (npc, status);
1344 // ********** extb: extb $rn
1347 mepcore1_sem_extb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1349 #define FLD(f) abuf->fields.sfmt_clip.f
1350 sem_status status = SEM_STATUS_NORMAL;
1351 mepcore1_scache* abuf = sem;
1352 unsigned long long written = 0;
1353 PCADDR pc = abuf->addr;
1354 PCADDR npc = pc + 2;
1357 SI opval = EXTQISI (ANDQI (* FLD (i_rn), 255));
1358 if (UNLIKELY(current_cpu->trace_result_p))
1359 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1360 * FLD (i_rn) = opval;
1363 current_cpu->done_insn (npc, status);
1368 // ********** exth: exth $rn
1371 mepcore1_sem_exth (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1373 #define FLD(f) abuf->fields.sfmt_clip.f
1374 sem_status status = SEM_STATUS_NORMAL;
1375 mepcore1_scache* abuf = sem;
1376 unsigned long long written = 0;
1377 PCADDR pc = abuf->addr;
1378 PCADDR npc = pc + 2;
1381 SI opval = EXTHISI (ANDHI (* FLD (i_rn), 65535));
1382 if (UNLIKELY(current_cpu->trace_result_p))
1383 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1384 * FLD (i_rn) = opval;
1387 current_cpu->done_insn (npc, status);
1392 // ********** extub: extub $rn
1395 mepcore1_sem_extub (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1397 #define FLD(f) abuf->fields.sfmt_clip.f
1398 sem_status status = SEM_STATUS_NORMAL;
1399 mepcore1_scache* abuf = sem;
1400 unsigned long long written = 0;
1401 PCADDR pc = abuf->addr;
1402 PCADDR npc = pc + 2;
1405 SI opval = ZEXTSISI (ANDSI (* FLD (i_rn), 255));
1406 if (UNLIKELY(current_cpu->trace_result_p))
1407 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1408 * FLD (i_rn) = opval;
1411 current_cpu->done_insn (npc, status);
1416 // ********** extuh: extuh $rn
1419 mepcore1_sem_extuh (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1421 #define FLD(f) abuf->fields.sfmt_clip.f
1422 sem_status status = SEM_STATUS_NORMAL;
1423 mepcore1_scache* abuf = sem;
1424 unsigned long long written = 0;
1425 PCADDR pc = abuf->addr;
1426 PCADDR npc = pc + 2;
1429 SI opval = ZEXTSISI (ANDSI (* FLD (i_rn), 65535));
1430 if (UNLIKELY(current_cpu->trace_result_p))
1431 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1432 * FLD (i_rn) = opval;
1435 current_cpu->done_insn (npc, status);
1440 // ********** ssarb: ssarb $udisp2($rm)
1443 mepcore1_sem_ssarb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1445 #define FLD(f) abuf->fields.sfmt_ssarb.f
1446 sem_status status = SEM_STATUS_NORMAL;
1447 mepcore1_scache* abuf = sem;
1448 unsigned long long written = 0;
1449 PCADDR pc = abuf->addr;
1450 PCADDR npc = pc + 2;
1452 if (current_cpu->big_endian_p ()) {
1454 SI opval = ZEXTSISI (MULSI (ANDSI (ADDSI (FLD (f_2u6), * FLD (i_rm)), 3), 8));
1455 written |= (1ULL << 2);
1456 if (UNLIKELY(current_cpu->trace_result_p))
1457 current_cpu->trace_stream << "csr" << '[' << ((UINT) 2) << ']' << ":=0x" << hex << opval << dec << " ";
1458 current_cpu->h_csr_set (((UINT) 2), opval);
1462 SI opval = SUBSI (32, ZEXTSISI (MULSI (ANDSI (ADDSI (FLD (f_2u6), * FLD (i_rm)), 3), 8)));
1463 written |= (1ULL << 2);
1464 if (UNLIKELY(current_cpu->trace_result_p))
1465 current_cpu->trace_stream << "csr" << '[' << ((UINT) 2) << ']' << ":=0x" << hex << opval << dec << " ";
1466 current_cpu->h_csr_set (((UINT) 2), opval);
1470 abuf->written = written;
1471 current_cpu->done_insn (npc, status);
1476 // ********** mov: mov $rn,$rm
1479 mepcore1_sem_mov (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1481 #define FLD(f) abuf->fields.sfmt_add3x.f
1482 sem_status status = SEM_STATUS_NORMAL;
1483 mepcore1_scache* abuf = sem;
1484 unsigned long long written = 0;
1485 PCADDR pc = abuf->addr;
1486 PCADDR npc = pc + 2;
1489 SI opval = * FLD (i_rm);
1490 if (UNLIKELY(current_cpu->trace_result_p))
1491 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1492 * FLD (i_rn) = opval;
1495 current_cpu->done_insn (npc, status);
1500 // ********** movi8: mov $rn,$simm8
1503 mepcore1_sem_movi8 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1505 #define FLD(f) abuf->fields.sfmt_movi8.f
1506 sem_status status = SEM_STATUS_NORMAL;
1507 mepcore1_scache* abuf = sem;
1508 unsigned long long written = 0;
1509 PCADDR pc = abuf->addr;
1510 PCADDR npc = pc + 2;
1513 SI opval = EXTSISI (FLD (f_8s8));
1514 if (UNLIKELY(current_cpu->trace_result_p))
1515 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1516 * FLD (i_rn) = opval;
1519 current_cpu->done_insn (npc, status);
1524 // ********** movi16: mov $rn,$simm16
1527 mepcore1_sem_movi16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1529 #define FLD(f) abuf->fields.sfmt_add3x.f
1530 sem_status status = SEM_STATUS_NORMAL;
1531 mepcore1_scache* abuf = sem;
1532 unsigned long long written = 0;
1533 PCADDR pc = abuf->addr;
1534 PCADDR npc = pc + 4;
1537 SI opval = EXTSISI (FLD (f_16s16));
1538 if (UNLIKELY(current_cpu->trace_result_p))
1539 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1540 * FLD (i_rn) = opval;
1543 current_cpu->done_insn (npc, status);
1548 // ********** movu24: movu $rn3,$uimm24
1551 mepcore1_sem_movu24 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1553 #define FLD(f) abuf->fields.sfmt_movu24.f
1554 sem_status status = SEM_STATUS_NORMAL;
1555 mepcore1_scache* abuf = sem;
1556 unsigned long long written = 0;
1557 PCADDR pc = abuf->addr;
1558 PCADDR npc = pc + 4;
1561 SI opval = ZEXTSISI (FLD (f_24u8n));
1562 if (UNLIKELY(current_cpu->trace_result_p))
1563 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn3) << ']' << ":=0x" << hex << opval << dec << " ";
1564 * FLD (i_rn3) = opval;
1567 current_cpu->done_insn (npc, status);
1572 // ********** movu16: movu $rn,$uimm16
1575 mepcore1_sem_movu16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1577 #define FLD(f) abuf->fields.sfmt_uci.f
1578 sem_status status = SEM_STATUS_NORMAL;
1579 mepcore1_scache* abuf = sem;
1580 unsigned long long written = 0;
1581 PCADDR pc = abuf->addr;
1582 PCADDR npc = pc + 4;
1585 SI opval = ZEXTSISI (FLD (f_16u16));
1586 if (UNLIKELY(current_cpu->trace_result_p))
1587 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1588 * FLD (i_rn) = opval;
1591 current_cpu->done_insn (npc, status);
1596 // ********** movh: movh $rn,$uimm16
1599 mepcore1_sem_movh (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1601 #define FLD(f) abuf->fields.sfmt_uci.f
1602 sem_status status = SEM_STATUS_NORMAL;
1603 mepcore1_scache* abuf = sem;
1604 unsigned long long written = 0;
1605 PCADDR pc = abuf->addr;
1606 PCADDR npc = pc + 4;
1609 SI opval = SLLSI (FLD (f_16u16), 16);
1610 if (UNLIKELY(current_cpu->trace_result_p))
1611 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1612 * FLD (i_rn) = opval;
1615 current_cpu->done_insn (npc, status);
1620 // ********** add3: add3 $rl,$rn,$rm
1623 mepcore1_sem_add3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1625 #define FLD(f) abuf->fields.sfmt_add3.f
1626 sem_status status = SEM_STATUS_NORMAL;
1627 mepcore1_scache* abuf = sem;
1628 unsigned long long written = 0;
1629 PCADDR pc = abuf->addr;
1630 PCADDR npc = pc + 2;
1633 SI opval = ADDSI (* FLD (i_rn), * FLD (i_rm));
1634 if (UNLIKELY(current_cpu->trace_result_p))
1635 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rl) << ']' << ":=0x" << hex << opval << dec << " ";
1636 * FLD (i_rl) = opval;
1639 current_cpu->done_insn (npc, status);
1644 // ********** add: add $rn,$simm6
1647 mepcore1_sem_add (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1649 #define FLD(f) abuf->fields.sfmt_add.f
1650 sem_status status = SEM_STATUS_NORMAL;
1651 mepcore1_scache* abuf = sem;
1652 unsigned long long written = 0;
1653 PCADDR pc = abuf->addr;
1654 PCADDR npc = pc + 2;
1657 SI opval = ADDSI (* FLD (i_rn), EXTSISI (FLD (f_6s8)));
1658 if (UNLIKELY(current_cpu->trace_result_p))
1659 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1660 * FLD (i_rn) = opval;
1663 current_cpu->done_insn (npc, status);
1668 // ********** add3i: add3 $rn,$spr,$uimm7a4
1671 mepcore1_sem_add3i (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1673 #define FLD(f) abuf->fields.sfmt_add3i.f
1674 sem_status status = SEM_STATUS_NORMAL;
1675 mepcore1_scache* abuf = sem;
1676 unsigned long long written = 0;
1677 PCADDR pc = abuf->addr;
1678 PCADDR npc = pc + 2;
1681 SI opval = ADDSI (current_cpu->hardware.h_gpr[((UINT) 15)], ZEXTSISI (FLD (f_7u9a4)));
1682 if (UNLIKELY(current_cpu->trace_result_p))
1683 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1684 * FLD (i_rn) = opval;
1687 current_cpu->done_insn (npc, status);
1692 // ********** advck3: advck3 \$0,$rn,$rm
1695 mepcore1_sem_advck3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1697 #define FLD(f) abuf->fields.sfmt_advck3.f
1698 sem_status status = SEM_STATUS_NORMAL;
1699 mepcore1_scache* abuf = sem;
1700 unsigned long long written = 0;
1701 PCADDR pc = abuf->addr;
1702 PCADDR npc = pc + 2;
1704 if (ADDOFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
1707 written |= (1ULL << 2);
1708 if (UNLIKELY(current_cpu->trace_result_p))
1709 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1710 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1715 written |= (1ULL << 2);
1716 if (UNLIKELY(current_cpu->trace_result_p))
1717 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1718 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1722 abuf->written = written;
1723 current_cpu->done_insn (npc, status);
1728 // ********** sub: sub $rn,$rm
1731 mepcore1_sem_sub (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1733 #define FLD(f) abuf->fields.sfmt_fsft.f
1734 sem_status status = SEM_STATUS_NORMAL;
1735 mepcore1_scache* abuf = sem;
1736 unsigned long long written = 0;
1737 PCADDR pc = abuf->addr;
1738 PCADDR npc = pc + 2;
1741 SI opval = SUBSI (* FLD (i_rn), * FLD (i_rm));
1742 if (UNLIKELY(current_cpu->trace_result_p))
1743 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1744 * FLD (i_rn) = opval;
1747 current_cpu->done_insn (npc, status);
1752 // ********** sbvck3: sbvck3 \$0,$rn,$rm
1755 mepcore1_sem_sbvck3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1757 #define FLD(f) abuf->fields.sfmt_advck3.f
1758 sem_status status = SEM_STATUS_NORMAL;
1759 mepcore1_scache* abuf = sem;
1760 unsigned long long written = 0;
1761 PCADDR pc = abuf->addr;
1762 PCADDR npc = pc + 2;
1764 if (SUBOFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
1767 written |= (1ULL << 2);
1768 if (UNLIKELY(current_cpu->trace_result_p))
1769 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1770 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1775 written |= (1ULL << 2);
1776 if (UNLIKELY(current_cpu->trace_result_p))
1777 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1778 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1782 abuf->written = written;
1783 current_cpu->done_insn (npc, status);
1788 // ********** neg: neg $rn,$rm
1791 mepcore1_sem_neg (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1793 #define FLD(f) abuf->fields.sfmt_add3x.f
1794 sem_status status = SEM_STATUS_NORMAL;
1795 mepcore1_scache* abuf = sem;
1796 unsigned long long written = 0;
1797 PCADDR pc = abuf->addr;
1798 PCADDR npc = pc + 2;
1801 SI opval = NEGSI (* FLD (i_rm));
1802 if (UNLIKELY(current_cpu->trace_result_p))
1803 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
1804 * FLD (i_rn) = opval;
1807 current_cpu->done_insn (npc, status);
1812 // ********** slt3: slt3 \$0,$rn,$rm
1815 mepcore1_sem_slt3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1817 #define FLD(f) abuf->fields.sfmt_advck3.f
1818 sem_status status = SEM_STATUS_NORMAL;
1819 mepcore1_scache* abuf = sem;
1820 unsigned long long written = 0;
1821 PCADDR pc = abuf->addr;
1822 PCADDR npc = pc + 2;
1824 if (LTSI (* FLD (i_rn), * FLD (i_rm))) {
1827 written |= (1ULL << 2);
1828 if (UNLIKELY(current_cpu->trace_result_p))
1829 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1830 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1835 written |= (1ULL << 2);
1836 if (UNLIKELY(current_cpu->trace_result_p))
1837 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1838 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1842 abuf->written = written;
1843 current_cpu->done_insn (npc, status);
1848 // ********** sltu3: sltu3 \$0,$rn,$rm
1851 mepcore1_sem_sltu3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1853 #define FLD(f) abuf->fields.sfmt_advck3.f
1854 sem_status status = SEM_STATUS_NORMAL;
1855 mepcore1_scache* abuf = sem;
1856 unsigned long long written = 0;
1857 PCADDR pc = abuf->addr;
1858 PCADDR npc = pc + 2;
1860 if (LTUSI (* FLD (i_rn), * FLD (i_rm))) {
1863 written |= (1ULL << 2);
1864 if (UNLIKELY(current_cpu->trace_result_p))
1865 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1866 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1871 written |= (1ULL << 2);
1872 if (UNLIKELY(current_cpu->trace_result_p))
1873 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1874 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1878 abuf->written = written;
1879 current_cpu->done_insn (npc, status);
1884 // ********** slt3i: slt3 \$0,$rn,$uimm5
1887 mepcore1_sem_slt3i (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1889 #define FLD(f) abuf->fields.sfmt_slt3i.f
1890 sem_status status = SEM_STATUS_NORMAL;
1891 mepcore1_scache* abuf = sem;
1892 unsigned long long written = 0;
1893 PCADDR pc = abuf->addr;
1894 PCADDR npc = pc + 2;
1896 if (LTSI (* FLD (i_rn), ZEXTSISI (FLD (f_5u8)))) {
1899 written |= (1ULL << 2);
1900 if (UNLIKELY(current_cpu->trace_result_p))
1901 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1902 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1907 written |= (1ULL << 2);
1908 if (UNLIKELY(current_cpu->trace_result_p))
1909 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1910 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1914 abuf->written = written;
1915 current_cpu->done_insn (npc, status);
1920 // ********** sltu3i: sltu3 \$0,$rn,$uimm5
1923 mepcore1_sem_sltu3i (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1925 #define FLD(f) abuf->fields.sfmt_slt3i.f
1926 sem_status status = SEM_STATUS_NORMAL;
1927 mepcore1_scache* abuf = sem;
1928 unsigned long long written = 0;
1929 PCADDR pc = abuf->addr;
1930 PCADDR npc = pc + 2;
1932 if (LTUSI (* FLD (i_rn), ZEXTSISI (FLD (f_5u8)))) {
1935 written |= (1ULL << 2);
1936 if (UNLIKELY(current_cpu->trace_result_p))
1937 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1938 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1943 written |= (1ULL << 2);
1944 if (UNLIKELY(current_cpu->trace_result_p))
1945 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1946 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1950 abuf->written = written;
1951 current_cpu->done_insn (npc, status);
1956 // ********** sl1ad3: sl1ad3 \$0,$rn,$rm
1959 mepcore1_sem_sl1ad3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1961 #define FLD(f) abuf->fields.sfmt_advck3.f
1962 sem_status status = SEM_STATUS_NORMAL;
1963 mepcore1_scache* abuf = sem;
1964 unsigned long long written = 0;
1965 PCADDR pc = abuf->addr;
1966 PCADDR npc = pc + 2;
1969 SI opval = ADDSI (SLLSI (* FLD (i_rn), 1), * FLD (i_rm));
1970 if (UNLIKELY(current_cpu->trace_result_p))
1971 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1972 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1975 current_cpu->done_insn (npc, status);
1980 // ********** sl2ad3: sl2ad3 \$0,$rn,$rm
1983 mepcore1_sem_sl2ad3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
1985 #define FLD(f) abuf->fields.sfmt_advck3.f
1986 sem_status status = SEM_STATUS_NORMAL;
1987 mepcore1_scache* abuf = sem;
1988 unsigned long long written = 0;
1989 PCADDR pc = abuf->addr;
1990 PCADDR npc = pc + 2;
1993 SI opval = ADDSI (SLLSI (* FLD (i_rn), 2), * FLD (i_rm));
1994 if (UNLIKELY(current_cpu->trace_result_p))
1995 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
1996 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
1999 current_cpu->done_insn (npc, status);
2004 // ********** add3x: add3 $rn,$rm,$simm16
2007 mepcore1_sem_add3x (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2009 #define FLD(f) abuf->fields.sfmt_add3x.f
2010 sem_status status = SEM_STATUS_NORMAL;
2011 mepcore1_scache* abuf = sem;
2012 unsigned long long written = 0;
2013 PCADDR pc = abuf->addr;
2014 PCADDR npc = pc + 4;
2017 SI opval = ADDSI (* FLD (i_rm), EXTSISI (FLD (f_16s16)));
2018 if (UNLIKELY(current_cpu->trace_result_p))
2019 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2020 * FLD (i_rn) = opval;
2023 current_cpu->done_insn (npc, status);
2028 // ********** slt3x: slt3 $rn,$rm,$simm16
2031 mepcore1_sem_slt3x (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2033 #define FLD(f) abuf->fields.sfmt_add3x.f
2034 sem_status status = SEM_STATUS_NORMAL;
2035 mepcore1_scache* abuf = sem;
2036 unsigned long long written = 0;
2037 PCADDR pc = abuf->addr;
2038 PCADDR npc = pc + 4;
2040 if (LTSI (* FLD (i_rm), EXTSISI (FLD (f_16s16)))) {
2043 written |= (1ULL << 2);
2044 if (UNLIKELY(current_cpu->trace_result_p))
2045 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2046 * FLD (i_rn) = opval;
2051 written |= (1ULL << 2);
2052 if (UNLIKELY(current_cpu->trace_result_p))
2053 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2054 * FLD (i_rn) = opval;
2058 abuf->written = written;
2059 current_cpu->done_insn (npc, status);
2064 // ********** sltu3x: sltu3 $rn,$rm,$uimm16
2067 mepcore1_sem_sltu3x (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2069 #define FLD(f) abuf->fields.sfmt_uci.f
2070 sem_status status = SEM_STATUS_NORMAL;
2071 mepcore1_scache* abuf = sem;
2072 unsigned long long written = 0;
2073 PCADDR pc = abuf->addr;
2074 PCADDR npc = pc + 4;
2076 if (LTUSI (* FLD (i_rm), ZEXTSISI (FLD (f_16u16)))) {
2079 written |= (1ULL << 2);
2080 if (UNLIKELY(current_cpu->trace_result_p))
2081 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2082 * FLD (i_rn) = opval;
2087 written |= (1ULL << 2);
2088 if (UNLIKELY(current_cpu->trace_result_p))
2089 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2090 * FLD (i_rn) = opval;
2094 abuf->written = written;
2095 current_cpu->done_insn (npc, status);
2100 // ********** or: or $rn,$rm
2103 mepcore1_sem_or (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2105 #define FLD(f) abuf->fields.sfmt_fsft.f
2106 sem_status status = SEM_STATUS_NORMAL;
2107 mepcore1_scache* abuf = sem;
2108 unsigned long long written = 0;
2109 PCADDR pc = abuf->addr;
2110 PCADDR npc = pc + 2;
2113 SI opval = ORSI (* FLD (i_rn), * FLD (i_rm));
2114 if (UNLIKELY(current_cpu->trace_result_p))
2115 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2116 * FLD (i_rn) = opval;
2119 current_cpu->done_insn (npc, status);
2124 // ********** and: and $rn,$rm
2127 mepcore1_sem_and (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2129 #define FLD(f) abuf->fields.sfmt_fsft.f
2130 sem_status status = SEM_STATUS_NORMAL;
2131 mepcore1_scache* abuf = sem;
2132 unsigned long long written = 0;
2133 PCADDR pc = abuf->addr;
2134 PCADDR npc = pc + 2;
2137 SI opval = ANDSI (* FLD (i_rn), * FLD (i_rm));
2138 if (UNLIKELY(current_cpu->trace_result_p))
2139 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2140 * FLD (i_rn) = opval;
2143 current_cpu->done_insn (npc, status);
2148 // ********** xor: xor $rn,$rm
2151 mepcore1_sem_xor (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2153 #define FLD(f) abuf->fields.sfmt_fsft.f
2154 sem_status status = SEM_STATUS_NORMAL;
2155 mepcore1_scache* abuf = sem;
2156 unsigned long long written = 0;
2157 PCADDR pc = abuf->addr;
2158 PCADDR npc = pc + 2;
2161 SI opval = XORSI (* FLD (i_rn), * FLD (i_rm));
2162 if (UNLIKELY(current_cpu->trace_result_p))
2163 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2164 * FLD (i_rn) = opval;
2167 current_cpu->done_insn (npc, status);
2172 // ********** nor: nor $rn,$rm
2175 mepcore1_sem_nor (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2177 #define FLD(f) abuf->fields.sfmt_fsft.f
2178 sem_status status = SEM_STATUS_NORMAL;
2179 mepcore1_scache* abuf = sem;
2180 unsigned long long written = 0;
2181 PCADDR pc = abuf->addr;
2182 PCADDR npc = pc + 2;
2185 SI opval = INVSI (ORSI (* FLD (i_rn), * FLD (i_rm)));
2186 if (UNLIKELY(current_cpu->trace_result_p))
2187 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2188 * FLD (i_rn) = opval;
2191 current_cpu->done_insn (npc, status);
2196 // ********** or3: or3 $rn,$rm,$uimm16
2199 mepcore1_sem_or3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2201 #define FLD(f) abuf->fields.sfmt_uci.f
2202 sem_status status = SEM_STATUS_NORMAL;
2203 mepcore1_scache* abuf = sem;
2204 unsigned long long written = 0;
2205 PCADDR pc = abuf->addr;
2206 PCADDR npc = pc + 4;
2209 SI opval = ORSI (* FLD (i_rm), ZEXTSISI (FLD (f_16u16)));
2210 if (UNLIKELY(current_cpu->trace_result_p))
2211 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2212 * FLD (i_rn) = opval;
2215 current_cpu->done_insn (npc, status);
2220 // ********** and3: and3 $rn,$rm,$uimm16
2223 mepcore1_sem_and3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2225 #define FLD(f) abuf->fields.sfmt_uci.f
2226 sem_status status = SEM_STATUS_NORMAL;
2227 mepcore1_scache* abuf = sem;
2228 unsigned long long written = 0;
2229 PCADDR pc = abuf->addr;
2230 PCADDR npc = pc + 4;
2233 SI opval = ANDSI (* FLD (i_rm), ZEXTSISI (FLD (f_16u16)));
2234 if (UNLIKELY(current_cpu->trace_result_p))
2235 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2236 * FLD (i_rn) = opval;
2239 current_cpu->done_insn (npc, status);
2244 // ********** xor3: xor3 $rn,$rm,$uimm16
2247 mepcore1_sem_xor3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2249 #define FLD(f) abuf->fields.sfmt_uci.f
2250 sem_status status = SEM_STATUS_NORMAL;
2251 mepcore1_scache* abuf = sem;
2252 unsigned long long written = 0;
2253 PCADDR pc = abuf->addr;
2254 PCADDR npc = pc + 4;
2257 SI opval = XORSI (* FLD (i_rm), ZEXTSISI (FLD (f_16u16)));
2258 if (UNLIKELY(current_cpu->trace_result_p))
2259 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2260 * FLD (i_rn) = opval;
2263 current_cpu->done_insn (npc, status);
2268 // ********** sra: sra $rn,$rm
2271 mepcore1_sem_sra (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2273 #define FLD(f) abuf->fields.sfmt_fsft.f
2274 sem_status status = SEM_STATUS_NORMAL;
2275 mepcore1_scache* abuf = sem;
2276 unsigned long long written = 0;
2277 PCADDR pc = abuf->addr;
2278 PCADDR npc = pc + 2;
2281 SI opval = SRASI (* FLD (i_rn), ANDSI (* FLD (i_rm), 31));
2282 if (UNLIKELY(current_cpu->trace_result_p))
2283 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2284 * FLD (i_rn) = opval;
2287 current_cpu->done_insn (npc, status);
2292 // ********** srl: srl $rn,$rm
2295 mepcore1_sem_srl (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2297 #define FLD(f) abuf->fields.sfmt_fsft.f
2298 sem_status status = SEM_STATUS_NORMAL;
2299 mepcore1_scache* abuf = sem;
2300 unsigned long long written = 0;
2301 PCADDR pc = abuf->addr;
2302 PCADDR npc = pc + 2;
2305 SI opval = SRLSI (* FLD (i_rn), ANDSI (* FLD (i_rm), 31));
2306 if (UNLIKELY(current_cpu->trace_result_p))
2307 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2308 * FLD (i_rn) = opval;
2311 current_cpu->done_insn (npc, status);
2316 // ********** sll: sll $rn,$rm
2319 mepcore1_sem_sll (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2321 #define FLD(f) abuf->fields.sfmt_fsft.f
2322 sem_status status = SEM_STATUS_NORMAL;
2323 mepcore1_scache* abuf = sem;
2324 unsigned long long written = 0;
2325 PCADDR pc = abuf->addr;
2326 PCADDR npc = pc + 2;
2329 SI opval = SLLSI (* FLD (i_rn), ANDSI (* FLD (i_rm), 31));
2330 if (UNLIKELY(current_cpu->trace_result_p))
2331 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2332 * FLD (i_rn) = opval;
2335 current_cpu->done_insn (npc, status);
2340 // ********** srai: sra $rn,$uimm5
2343 mepcore1_sem_srai (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2345 #define FLD(f) abuf->fields.sfmt_srai.f
2346 sem_status status = SEM_STATUS_NORMAL;
2347 mepcore1_scache* abuf = sem;
2348 unsigned long long written = 0;
2349 PCADDR pc = abuf->addr;
2350 PCADDR npc = pc + 2;
2353 SI opval = SRASI (* FLD (i_rn), FLD (f_5u8));
2354 if (UNLIKELY(current_cpu->trace_result_p))
2355 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2356 * FLD (i_rn) = opval;
2359 current_cpu->done_insn (npc, status);
2364 // ********** srli: srl $rn,$uimm5
2367 mepcore1_sem_srli (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2369 #define FLD(f) abuf->fields.sfmt_srai.f
2370 sem_status status = SEM_STATUS_NORMAL;
2371 mepcore1_scache* abuf = sem;
2372 unsigned long long written = 0;
2373 PCADDR pc = abuf->addr;
2374 PCADDR npc = pc + 2;
2377 SI opval = SRLSI (* FLD (i_rn), FLD (f_5u8));
2378 if (UNLIKELY(current_cpu->trace_result_p))
2379 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2380 * FLD (i_rn) = opval;
2383 current_cpu->done_insn (npc, status);
2388 // ********** slli: sll $rn,$uimm5
2391 mepcore1_sem_slli (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2393 #define FLD(f) abuf->fields.sfmt_srai.f
2394 sem_status status = SEM_STATUS_NORMAL;
2395 mepcore1_scache* abuf = sem;
2396 unsigned long long written = 0;
2397 PCADDR pc = abuf->addr;
2398 PCADDR npc = pc + 2;
2401 SI opval = SLLSI (* FLD (i_rn), FLD (f_5u8));
2402 if (UNLIKELY(current_cpu->trace_result_p))
2403 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2404 * FLD (i_rn) = opval;
2407 current_cpu->done_insn (npc, status);
2412 // ********** sll3: sll3 \$0,$rn,$uimm5
2415 mepcore1_sem_sll3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2417 #define FLD(f) abuf->fields.sfmt_slt3i.f
2418 sem_status status = SEM_STATUS_NORMAL;
2419 mepcore1_scache* abuf = sem;
2420 unsigned long long written = 0;
2421 PCADDR pc = abuf->addr;
2422 PCADDR npc = pc + 2;
2425 SI opval = SLLSI (* FLD (i_rn), FLD (f_5u8));
2426 if (UNLIKELY(current_cpu->trace_result_p))
2427 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
2428 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
2431 current_cpu->done_insn (npc, status);
2436 // ********** fsft: fsft $rn,$rm
2439 mepcore1_sem_fsft (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2441 #define FLD(f) abuf->fields.sfmt_fsft.f
2442 sem_status status = SEM_STATUS_NORMAL;
2443 mepcore1_scache* abuf = sem;
2444 unsigned long long written = 0;
2445 PCADDR pc = abuf->addr;
2446 PCADDR npc = pc + 2;
2451 tmp_shamt = ANDSI (current_cpu->h_csr_get (((UINT) 2)), 63);
2452 tmp_temp = SLLDI (ORDI (SLLDI (ZEXTSIDI (* FLD (i_rn)), 32), ZEXTSIDI (* FLD (i_rm))), tmp_shamt);
2454 SI opval = SUBWORDDISI (SRLDI (tmp_temp, 32), 1);
2455 if (UNLIKELY(current_cpu->trace_result_p))
2456 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
2457 * FLD (i_rn) = opval;
2461 current_cpu->done_insn (npc, status);
2466 // ********** bra: bra $pcrel12a2
2469 mepcore1_sem_bra (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2471 #define FLD(f) abuf->fields.sfmt_bsr12.f
2472 sem_status status = SEM_STATUS_NORMAL;
2473 mepcore1_scache* abuf = sem;
2474 unsigned long long written = 0;
2475 PCADDR pc = abuf->addr;
2476 PCADDR npc = pc + 2;
2478 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2480 USI opval = ANDSI (FLD (f_12s4a2), INVSI (7));
2481 written |= (1ULL << 3);
2482 if (UNLIKELY(current_cpu->trace_result_p))
2483 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2484 current_cpu->branch (opval, npc, status);
2487 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2489 USI opval = ANDSI (FLD (f_12s4a2), INVSI (3));
2490 written |= (1ULL << 3);
2491 if (UNLIKELY(current_cpu->trace_result_p))
2492 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2493 current_cpu->branch (opval, npc, status);
2498 USI opval = ANDSI (FLD (f_12s4a2), INVSI (1));
2499 written |= (1ULL << 3);
2500 if (UNLIKELY(current_cpu->trace_result_p))
2501 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2502 current_cpu->branch (opval, npc, status);
2506 abuf->written = written;
2507 current_cpu->done_cti_insn (npc, status);
2512 // ********** beqz: beqz $rn,$pcrel8a2
2515 mepcore1_sem_beqz (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2517 #define FLD(f) abuf->fields.sfmt_beqz.f
2518 sem_status status = SEM_STATUS_NORMAL;
2519 mepcore1_scache* abuf = sem;
2520 unsigned long long written = 0;
2521 PCADDR pc = abuf->addr;
2522 PCADDR npc = pc + 2;
2524 if (EQSI (* FLD (i_rn), 0)) {
2525 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2527 USI opval = ANDSI (FLD (f_8s8a2), INVSI (7));
2528 written |= (1ULL << 4);
2529 if (UNLIKELY(current_cpu->trace_result_p))
2530 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2531 current_cpu->branch (opval, npc, status);
2534 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2536 USI opval = ANDSI (FLD (f_8s8a2), INVSI (3));
2537 written |= (1ULL << 4);
2538 if (UNLIKELY(current_cpu->trace_result_p))
2539 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2540 current_cpu->branch (opval, npc, status);
2545 USI opval = ANDSI (FLD (f_8s8a2), INVSI (1));
2546 written |= (1ULL << 4);
2547 if (UNLIKELY(current_cpu->trace_result_p))
2548 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2549 current_cpu->branch (opval, npc, status);
2554 abuf->written = written;
2555 current_cpu->done_cti_insn (npc, status);
2560 // ********** bnez: bnez $rn,$pcrel8a2
2563 mepcore1_sem_bnez (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2565 #define FLD(f) abuf->fields.sfmt_beqz.f
2566 sem_status status = SEM_STATUS_NORMAL;
2567 mepcore1_scache* abuf = sem;
2568 unsigned long long written = 0;
2569 PCADDR pc = abuf->addr;
2570 PCADDR npc = pc + 2;
2572 if (NESI (* FLD (i_rn), 0)) {
2573 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2575 USI opval = ANDSI (FLD (f_8s8a2), INVSI (7));
2576 written |= (1ULL << 4);
2577 if (UNLIKELY(current_cpu->trace_result_p))
2578 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2579 current_cpu->branch (opval, npc, status);
2582 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2584 USI opval = ANDSI (FLD (f_8s8a2), INVSI (3));
2585 written |= (1ULL << 4);
2586 if (UNLIKELY(current_cpu->trace_result_p))
2587 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2588 current_cpu->branch (opval, npc, status);
2593 USI opval = ANDSI (FLD (f_8s8a2), INVSI (1));
2594 written |= (1ULL << 4);
2595 if (UNLIKELY(current_cpu->trace_result_p))
2596 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2597 current_cpu->branch (opval, npc, status);
2602 abuf->written = written;
2603 current_cpu->done_cti_insn (npc, status);
2608 // ********** beqi: beqi $rn,$uimm4,$pcrel17a2
2611 mepcore1_sem_beqi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2613 #define FLD(f) abuf->fields.sfmt_beqi.f
2614 sem_status status = SEM_STATUS_NORMAL;
2615 mepcore1_scache* abuf = sem;
2616 unsigned long long written = 0;
2617 PCADDR pc = abuf->addr;
2618 PCADDR npc = pc + 4;
2620 if (EQSI (* FLD (i_rn), ZEXTSISI (FLD (f_4u8)))) {
2621 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2623 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2624 written |= (1ULL << 5);
2625 if (UNLIKELY(current_cpu->trace_result_p))
2626 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2627 current_cpu->branch (opval, npc, status);
2630 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2632 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2633 written |= (1ULL << 5);
2634 if (UNLIKELY(current_cpu->trace_result_p))
2635 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2636 current_cpu->branch (opval, npc, status);
2641 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2642 written |= (1ULL << 5);
2643 if (UNLIKELY(current_cpu->trace_result_p))
2644 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2645 current_cpu->branch (opval, npc, status);
2650 abuf->written = written;
2651 current_cpu->done_cti_insn (npc, status);
2656 // ********** bnei: bnei $rn,$uimm4,$pcrel17a2
2659 mepcore1_sem_bnei (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2661 #define FLD(f) abuf->fields.sfmt_beqi.f
2662 sem_status status = SEM_STATUS_NORMAL;
2663 mepcore1_scache* abuf = sem;
2664 unsigned long long written = 0;
2665 PCADDR pc = abuf->addr;
2666 PCADDR npc = pc + 4;
2668 if (NESI (* FLD (i_rn), ZEXTSISI (FLD (f_4u8)))) {
2669 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2671 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2672 written |= (1ULL << 5);
2673 if (UNLIKELY(current_cpu->trace_result_p))
2674 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2675 current_cpu->branch (opval, npc, status);
2678 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2680 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2681 written |= (1ULL << 5);
2682 if (UNLIKELY(current_cpu->trace_result_p))
2683 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2684 current_cpu->branch (opval, npc, status);
2689 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2690 written |= (1ULL << 5);
2691 if (UNLIKELY(current_cpu->trace_result_p))
2692 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2693 current_cpu->branch (opval, npc, status);
2698 abuf->written = written;
2699 current_cpu->done_cti_insn (npc, status);
2704 // ********** blti: blti $rn,$uimm4,$pcrel17a2
2707 mepcore1_sem_blti (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2709 #define FLD(f) abuf->fields.sfmt_beqi.f
2710 sem_status status = SEM_STATUS_NORMAL;
2711 mepcore1_scache* abuf = sem;
2712 unsigned long long written = 0;
2713 PCADDR pc = abuf->addr;
2714 PCADDR npc = pc + 4;
2716 if (LTSI (* FLD (i_rn), ZEXTSISI (FLD (f_4u8)))) {
2717 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2719 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2720 written |= (1ULL << 5);
2721 if (UNLIKELY(current_cpu->trace_result_p))
2722 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2723 current_cpu->branch (opval, npc, status);
2726 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2728 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2729 written |= (1ULL << 5);
2730 if (UNLIKELY(current_cpu->trace_result_p))
2731 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2732 current_cpu->branch (opval, npc, status);
2737 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2738 written |= (1ULL << 5);
2739 if (UNLIKELY(current_cpu->trace_result_p))
2740 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2741 current_cpu->branch (opval, npc, status);
2746 abuf->written = written;
2747 current_cpu->done_cti_insn (npc, status);
2752 // ********** bgei: bgei $rn,$uimm4,$pcrel17a2
2755 mepcore1_sem_bgei (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2757 #define FLD(f) abuf->fields.sfmt_beqi.f
2758 sem_status status = SEM_STATUS_NORMAL;
2759 mepcore1_scache* abuf = sem;
2760 unsigned long long written = 0;
2761 PCADDR pc = abuf->addr;
2762 PCADDR npc = pc + 4;
2764 if (GESI (* FLD (i_rn), ZEXTSISI (FLD (f_4u8)))) {
2765 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2767 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2768 written |= (1ULL << 5);
2769 if (UNLIKELY(current_cpu->trace_result_p))
2770 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2771 current_cpu->branch (opval, npc, status);
2774 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2776 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2777 written |= (1ULL << 5);
2778 if (UNLIKELY(current_cpu->trace_result_p))
2779 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2780 current_cpu->branch (opval, npc, status);
2785 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2786 written |= (1ULL << 5);
2787 if (UNLIKELY(current_cpu->trace_result_p))
2788 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2789 current_cpu->branch (opval, npc, status);
2794 abuf->written = written;
2795 current_cpu->done_cti_insn (npc, status);
2800 // ********** beq: beq $rn,$rm,$pcrel17a2
2803 mepcore1_sem_beq (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2805 #define FLD(f) abuf->fields.sfmt_beq.f
2806 sem_status status = SEM_STATUS_NORMAL;
2807 mepcore1_scache* abuf = sem;
2808 unsigned long long written = 0;
2809 PCADDR pc = abuf->addr;
2810 PCADDR npc = pc + 4;
2812 if (EQSI (* FLD (i_rn), * FLD (i_rm))) {
2813 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2815 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2816 written |= (1ULL << 5);
2817 if (UNLIKELY(current_cpu->trace_result_p))
2818 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2819 current_cpu->branch (opval, npc, status);
2822 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2824 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2825 written |= (1ULL << 5);
2826 if (UNLIKELY(current_cpu->trace_result_p))
2827 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2828 current_cpu->branch (opval, npc, status);
2833 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2834 written |= (1ULL << 5);
2835 if (UNLIKELY(current_cpu->trace_result_p))
2836 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2837 current_cpu->branch (opval, npc, status);
2842 abuf->written = written;
2843 current_cpu->done_cti_insn (npc, status);
2848 // ********** bne: bne $rn,$rm,$pcrel17a2
2851 mepcore1_sem_bne (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2853 #define FLD(f) abuf->fields.sfmt_beq.f
2854 sem_status status = SEM_STATUS_NORMAL;
2855 mepcore1_scache* abuf = sem;
2856 unsigned long long written = 0;
2857 PCADDR pc = abuf->addr;
2858 PCADDR npc = pc + 4;
2860 if (NESI (* FLD (i_rn), * FLD (i_rm))) {
2861 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2863 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
2864 written |= (1ULL << 5);
2865 if (UNLIKELY(current_cpu->trace_result_p))
2866 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2867 current_cpu->branch (opval, npc, status);
2870 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2872 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
2873 written |= (1ULL << 5);
2874 if (UNLIKELY(current_cpu->trace_result_p))
2875 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2876 current_cpu->branch (opval, npc, status);
2881 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
2882 written |= (1ULL << 5);
2883 if (UNLIKELY(current_cpu->trace_result_p))
2884 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2885 current_cpu->branch (opval, npc, status);
2890 abuf->written = written;
2891 current_cpu->done_cti_insn (npc, status);
2896 // ********** bsr12: bsr $pcrel12a2
2899 mepcore1_sem_bsr12 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2901 #define FLD(f) abuf->fields.sfmt_bsr12.f
2902 sem_status status = SEM_STATUS_NORMAL;
2903 mepcore1_scache* abuf = sem;
2904 unsigned long long written = 0;
2905 PCADDR pc = abuf->addr;
2906 PCADDR npc = pc + 2;
2909 current_cpu->cg_profile (pc, FLD (f_12s4a2));
2910 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2912 SI opval = ADDSI (pc, 8);
2913 written |= (1ULL << 4);
2914 if (UNLIKELY(current_cpu->trace_result_p))
2915 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
2916 current_cpu->h_csr_set (((UINT) 1), opval);
2919 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2921 SI opval = ADDSI (pc, 4);
2922 written |= (1ULL << 4);
2923 if (UNLIKELY(current_cpu->trace_result_p))
2924 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
2925 current_cpu->h_csr_set (((UINT) 1), opval);
2930 SI opval = ADDSI (pc, 2);
2931 written |= (1ULL << 4);
2932 if (UNLIKELY(current_cpu->trace_result_p))
2933 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
2934 current_cpu->h_csr_set (((UINT) 1), opval);
2937 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2939 USI opval = ANDSI (FLD (f_12s4a2), INVSI (7));
2940 written |= (1ULL << 5);
2941 if (UNLIKELY(current_cpu->trace_result_p))
2942 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2943 current_cpu->branch (opval, npc, status);
2946 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2948 USI opval = ANDSI (FLD (f_12s4a2), INVSI (3));
2949 written |= (1ULL << 5);
2950 if (UNLIKELY(current_cpu->trace_result_p))
2951 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2952 current_cpu->branch (opval, npc, status);
2957 USI opval = ANDSI (FLD (f_12s4a2), INVSI (1));
2958 written |= (1ULL << 5);
2959 if (UNLIKELY(current_cpu->trace_result_p))
2960 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
2961 current_cpu->branch (opval, npc, status);
2966 abuf->written = written;
2967 current_cpu->done_cti_insn (npc, status);
2972 // ********** bsr24: bsr $pcrel24a2
2975 mepcore1_sem_bsr24 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
2977 #define FLD(f) abuf->fields.sfmt_bsr24.f
2978 sem_status status = SEM_STATUS_NORMAL;
2979 mepcore1_scache* abuf = sem;
2980 unsigned long long written = 0;
2981 PCADDR pc = abuf->addr;
2982 PCADDR npc = pc + 4;
2985 current_cpu->cg_profile (pc, FLD (f_24s5a2n));
2986 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
2988 SI opval = ADDSI (pc, 8);
2989 written |= (1ULL << 4);
2990 if (UNLIKELY(current_cpu->trace_result_p))
2991 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
2992 current_cpu->h_csr_set (((UINT) 1), opval);
2995 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
2997 SI opval = ADDSI (pc, 4);
2998 written |= (1ULL << 4);
2999 if (UNLIKELY(current_cpu->trace_result_p))
3000 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3001 current_cpu->h_csr_set (((UINT) 1), opval);
3006 SI opval = ADDSI (pc, 4);
3007 written |= (1ULL << 4);
3008 if (UNLIKELY(current_cpu->trace_result_p))
3009 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3010 current_cpu->h_csr_set (((UINT) 1), opval);
3013 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3015 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (7));
3016 written |= (1ULL << 5);
3017 if (UNLIKELY(current_cpu->trace_result_p))
3018 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3019 current_cpu->branch (opval, npc, status);
3022 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3024 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (3));
3025 written |= (1ULL << 5);
3026 if (UNLIKELY(current_cpu->trace_result_p))
3027 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3028 current_cpu->branch (opval, npc, status);
3033 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (1));
3034 written |= (1ULL << 5);
3035 if (UNLIKELY(current_cpu->trace_result_p))
3036 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3037 current_cpu->branch (opval, npc, status);
3042 abuf->written = written;
3043 current_cpu->done_cti_insn (npc, status);
3048 // ********** jmp: jmp $rm
3051 mepcore1_sem_jmp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3053 #define FLD(f) abuf->fields.sfmt_jsr.f
3054 sem_status status = SEM_STATUS_NORMAL;
3055 mepcore1_scache* abuf = sem;
3056 unsigned long long written = 0;
3057 PCADDR pc = abuf->addr;
3058 PCADDR npc = pc + 2;
3061 if (EQSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), 0)) {
3062 if (ANDSI (* FLD (i_rm), 1)) {
3064 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
3065 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3067 USI opval = ANDSI (* FLD (i_rm), INVSI (3));
3068 written |= (1ULL << 4);
3069 if (UNLIKELY(current_cpu->trace_result_p))
3070 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3071 current_cpu->branch (opval, npc, status);
3075 USI opval = ANDSI (* FLD (i_rm), INVSI (7));
3076 written |= (1ULL << 4);
3077 if (UNLIKELY(current_cpu->trace_result_p))
3078 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3079 current_cpu->branch (opval, npc, status);
3085 USI opval = ANDSI (* FLD (i_rm), INVSI (1));
3086 written |= (1ULL << 4);
3087 if (UNLIKELY(current_cpu->trace_result_p))
3088 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3089 current_cpu->branch (opval, npc, status);
3093 if (ANDSI (* FLD (i_rm), 1)) {
3095 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
3097 USI opval = ANDSI (* FLD (i_rm), INVSI (1));
3098 written |= (1ULL << 4);
3099 if (UNLIKELY(current_cpu->trace_result_p))
3100 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3101 current_cpu->branch (opval, npc, status);
3105 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3107 USI opval = ANDSI (* FLD (i_rm), INVSI (3));
3108 written |= (1ULL << 4);
3109 if (UNLIKELY(current_cpu->trace_result_p))
3110 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3111 current_cpu->branch (opval, npc, status);
3115 USI opval = ANDSI (* FLD (i_rm), INVSI (7));
3116 written |= (1ULL << 4);
3117 if (UNLIKELY(current_cpu->trace_result_p))
3118 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3119 current_cpu->branch (opval, npc, status);
3124 current_cpu->cg_profile_jump (pc, * FLD (i_rm));
3127 abuf->written = written;
3128 current_cpu->done_cti_insn (npc, status);
3133 // ********** jmp24: jmp $pcabs24a2
3136 mepcore1_sem_jmp24 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3138 #define FLD(f) abuf->fields.sfmt_jmp24.f
3139 sem_status status = SEM_STATUS_NORMAL;
3140 mepcore1_scache* abuf = sem;
3141 unsigned long long written = 0;
3142 PCADDR pc = abuf->addr;
3143 PCADDR npc = pc + 4;
3146 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3148 USI opval = ANDSI (ORSI (ANDSI (pc, 0xf0000000), FLD (f_24u5a2n)), INVSI (7));
3149 written |= (1ULL << 4);
3150 if (UNLIKELY(current_cpu->trace_result_p))
3151 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3152 current_cpu->branch (opval, npc, status);
3155 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3157 USI opval = ANDSI (ORSI (ANDSI (pc, 0xf0000000), FLD (f_24u5a2n)), INVSI (3));
3158 written |= (1ULL << 4);
3159 if (UNLIKELY(current_cpu->trace_result_p))
3160 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3161 current_cpu->branch (opval, npc, status);
3166 USI opval = ANDSI (ORSI (ANDSI (pc, 0xf0000000), FLD (f_24u5a2n)), INVSI (1));
3167 written |= (1ULL << 4);
3168 if (UNLIKELY(current_cpu->trace_result_p))
3169 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3170 current_cpu->branch (opval, npc, status);
3173 current_cpu->cg_profile_jump (pc, FLD (f_24u5a2n));
3176 abuf->written = written;
3177 current_cpu->done_cti_insn (npc, status);
3182 // ********** jsr: jsr $rm
3185 mepcore1_sem_jsr (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3187 #define FLD(f) abuf->fields.sfmt_jsr.f
3188 sem_status status = SEM_STATUS_NORMAL;
3189 mepcore1_scache* abuf = sem;
3190 unsigned long long written = 0;
3191 PCADDR pc = abuf->addr;
3192 PCADDR npc = pc + 2;
3195 current_cpu->cg_profile (pc, * FLD (i_rm));
3196 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3198 SI opval = ADDSI (pc, 8);
3199 written |= (1ULL << 4);
3200 if (UNLIKELY(current_cpu->trace_result_p))
3201 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3202 current_cpu->h_csr_set (((UINT) 1), opval);
3205 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3207 SI opval = ADDSI (pc, 4);
3208 written |= (1ULL << 4);
3209 if (UNLIKELY(current_cpu->trace_result_p))
3210 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3211 current_cpu->h_csr_set (((UINT) 1), opval);
3216 SI opval = ADDSI (pc, 2);
3217 written |= (1ULL << 4);
3218 if (UNLIKELY(current_cpu->trace_result_p))
3219 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3220 current_cpu->h_csr_set (((UINT) 1), opval);
3223 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3225 USI opval = ANDSI (* FLD (i_rm), INVSI (7));
3226 written |= (1ULL << 5);
3227 if (UNLIKELY(current_cpu->trace_result_p))
3228 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3229 current_cpu->branch (opval, npc, status);
3232 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3234 USI opval = ANDSI (* FLD (i_rm), INVSI (3));
3235 written |= (1ULL << 5);
3236 if (UNLIKELY(current_cpu->trace_result_p))
3237 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3238 current_cpu->branch (opval, npc, status);
3243 USI opval = ANDSI (* FLD (i_rm), INVSI (1));
3244 written |= (1ULL << 5);
3245 if (UNLIKELY(current_cpu->trace_result_p))
3246 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3247 current_cpu->branch (opval, npc, status);
3252 abuf->written = written;
3253 current_cpu->done_cti_insn (npc, status);
3258 // ********** ret: ret
3261 mepcore1_sem_ret (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3263 #define FLD(f) abuf->fields.sfmt_ret.f
3264 sem_status status = SEM_STATUS_NORMAL;
3265 mepcore1_scache* abuf = sem;
3266 unsigned long long written = 0;
3267 PCADDR pc = abuf->addr;
3268 PCADDR npc = pc + 2;
3271 if (EQSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), 0)) {
3272 if (ANDSI (current_cpu->h_csr_get (((UINT) 1)), 1)) {
3274 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
3275 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3277 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (3));
3278 written |= (1ULL << 4);
3279 if (UNLIKELY(current_cpu->trace_result_p))
3280 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3281 current_cpu->branch (opval, npc, status);
3285 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (7));
3286 written |= (1ULL << 4);
3287 if (UNLIKELY(current_cpu->trace_result_p))
3288 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3289 current_cpu->branch (opval, npc, status);
3295 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (1));
3296 written |= (1ULL << 4);
3297 if (UNLIKELY(current_cpu->trace_result_p))
3298 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3299 current_cpu->branch (opval, npc, status);
3303 if (ANDSI (current_cpu->h_csr_get (((UINT) 1)), 1)) {
3305 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
3307 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (1));
3308 written |= (1ULL << 4);
3309 if (UNLIKELY(current_cpu->trace_result_p))
3310 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3311 current_cpu->branch (opval, npc, status);
3315 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3317 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (3));
3318 written |= (1ULL << 4);
3319 if (UNLIKELY(current_cpu->trace_result_p))
3320 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3321 current_cpu->branch (opval, npc, status);
3325 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 1)), INVSI (7));
3326 written |= (1ULL << 4);
3327 if (UNLIKELY(current_cpu->trace_result_p))
3328 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3329 current_cpu->branch (opval, npc, status);
3334 current_cpu->notify_ret (pc);
3337 abuf->written = written;
3338 current_cpu->done_cti_insn (npc, status);
3343 // ********** repeat: repeat $rn,$pcrel17a2
3346 mepcore1_sem_repeat (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3348 #define FLD(f) abuf->fields.sfmt_repeat.f
3349 sem_status status = SEM_STATUS_NORMAL;
3350 mepcore1_scache* abuf = sem;
3351 unsigned long long written = 0;
3352 PCADDR pc = abuf->addr;
3353 PCADDR npc = pc + 4;
3356 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3358 SI opval = ADDSI (pc, 8);
3359 written |= (1ULL << 5);
3360 if (UNLIKELY(current_cpu->trace_result_p))
3361 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3362 current_cpu->h_csr_set (((UINT) 4), opval);
3365 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3367 SI opval = ADDSI (pc, 4);
3368 written |= (1ULL << 5);
3369 if (UNLIKELY(current_cpu->trace_result_p))
3370 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3371 current_cpu->h_csr_set (((UINT) 4), opval);
3376 SI opval = ADDSI (pc, 4);
3377 written |= (1ULL << 5);
3378 if (UNLIKELY(current_cpu->trace_result_p))
3379 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3380 current_cpu->h_csr_set (((UINT) 4), opval);
3383 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3385 SI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
3386 written |= (1ULL << 6);
3387 if (UNLIKELY(current_cpu->trace_result_p))
3388 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3389 current_cpu->h_csr_set (((UINT) 5), opval);
3392 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3394 SI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
3395 written |= (1ULL << 6);
3396 if (UNLIKELY(current_cpu->trace_result_p))
3397 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3398 current_cpu->h_csr_set (((UINT) 5), opval);
3403 SI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
3404 written |= (1ULL << 6);
3405 if (UNLIKELY(current_cpu->trace_result_p))
3406 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3407 current_cpu->h_csr_set (((UINT) 5), opval);
3411 SI opval = * FLD (i_rn);
3412 if (UNLIKELY(current_cpu->trace_result_p))
3413 current_cpu->trace_stream << "csr" << '[' << ((UINT) 6) << ']' << ":=0x" << hex << opval << dec << " ";
3414 current_cpu->h_csr_set (((UINT) 6), opval);
3418 abuf->written = written;
3419 current_cpu->done_insn (npc, status);
3424 // ********** erepeat: erepeat $pcrel17a2
3427 mepcore1_sem_erepeat (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3429 #define FLD(f) abuf->fields.sfmt_repeat.f
3430 sem_status status = SEM_STATUS_NORMAL;
3431 mepcore1_scache* abuf = sem;
3432 unsigned long long written = 0;
3433 PCADDR pc = abuf->addr;
3434 PCADDR npc = pc + 4;
3437 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3439 SI opval = ADDSI (pc, 8);
3440 written |= (1ULL << 4);
3441 if (UNLIKELY(current_cpu->trace_result_p))
3442 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3443 current_cpu->h_csr_set (((UINT) 4), opval);
3446 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3448 SI opval = ADDSI (pc, 4);
3449 written |= (1ULL << 4);
3450 if (UNLIKELY(current_cpu->trace_result_p))
3451 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3452 current_cpu->h_csr_set (((UINT) 4), opval);
3457 SI opval = ADDSI (pc, 4);
3458 written |= (1ULL << 4);
3459 if (UNLIKELY(current_cpu->trace_result_p))
3460 current_cpu->trace_stream << "csr" << '[' << ((UINT) 4) << ']' << ":=0x" << hex << opval << dec << " ";
3461 current_cpu->h_csr_set (((UINT) 4), opval);
3464 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3466 SI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
3467 written |= (1ULL << 5);
3468 if (UNLIKELY(current_cpu->trace_result_p))
3469 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3470 current_cpu->h_csr_set (((UINT) 5), opval);
3473 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3475 SI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
3476 written |= (1ULL << 5);
3477 if (UNLIKELY(current_cpu->trace_result_p))
3478 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3479 current_cpu->h_csr_set (((UINT) 5), opval);
3484 SI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
3485 written |= (1ULL << 5);
3486 if (UNLIKELY(current_cpu->trace_result_p))
3487 current_cpu->trace_stream << "csr" << '[' << ((UINT) 5) << ']' << ":=0x" << hex << opval << dec << " ";
3488 current_cpu->h_csr_set (((UINT) 5), opval);
3491 current_cpu->hardware.h_csr[((UINT) 5)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 5)], INVSI (SLLSI (1, 0))), ANDSI (SLLSI (1, 0), SLLSI (1, 0)));
3494 if (UNLIKELY(current_cpu->trace_result_p))
3495 current_cpu->trace_stream << "csr" << '[' << ((UINT) 6) << ']' << ":=0x" << hex << opval << dec << " ";
3496 current_cpu->h_csr_set (((UINT) 6), opval);
3500 abuf->written = written;
3501 current_cpu->done_insn (npc, status);
3506 // ********** stc_lp: stc $rn,\$lp
3509 mepcore1_sem_stc_lp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3511 #define FLD(f) abuf->fields.sfmt_stc_lp.f
3512 sem_status status = SEM_STATUS_NORMAL;
3513 mepcore1_scache* abuf = sem;
3514 unsigned long long written = 0;
3515 PCADDR pc = abuf->addr;
3516 PCADDR npc = pc + 2;
3519 SI opval = * FLD (i_rn);
3520 if (UNLIKELY(current_cpu->trace_result_p))
3521 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
3522 current_cpu->h_csr_set (((UINT) 1), opval);
3525 current_cpu->done_insn (npc, status);
3530 // ********** stc_hi: stc $rn,\$hi
3533 mepcore1_sem_stc_hi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3535 #define FLD(f) abuf->fields.sfmt_maddr.f
3536 sem_status status = SEM_STATUS_NORMAL;
3537 mepcore1_scache* abuf = sem;
3538 unsigned long long written = 0;
3539 PCADDR pc = abuf->addr;
3540 PCADDR npc = pc + 2;
3543 SI opval = * FLD (i_rn);
3544 if (UNLIKELY(current_cpu->trace_result_p))
3545 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
3546 current_cpu->h_csr_set (((UINT) 7), opval);
3549 current_cpu->done_insn (npc, status);
3554 // ********** stc_lo: stc $rn,\$lo
3557 mepcore1_sem_stc_lo (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3559 #define FLD(f) abuf->fields.sfmt_maddr.f
3560 sem_status status = SEM_STATUS_NORMAL;
3561 mepcore1_scache* abuf = sem;
3562 unsigned long long written = 0;
3563 PCADDR pc = abuf->addr;
3564 PCADDR npc = pc + 2;
3567 SI opval = * FLD (i_rn);
3568 if (UNLIKELY(current_cpu->trace_result_p))
3569 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
3570 current_cpu->h_csr_set (((UINT) 8), opval);
3573 current_cpu->done_insn (npc, status);
3578 // ********** stc: stc $rn,$csrn
3581 mepcore1_sem_stc (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3583 #define FLD(f) abuf->fields.sfmt_stc.f
3584 sem_status status = SEM_STATUS_NORMAL;
3585 mepcore1_scache* abuf = sem;
3586 unsigned long long written = 0;
3587 PCADDR pc = abuf->addr;
3588 PCADDR npc = pc + 2;
3591 SI opval = * FLD (i_rn);
3592 if (UNLIKELY(current_cpu->trace_result_p))
3593 current_cpu->trace_stream << "csr" << '[' << FLD (f_csrn) << ']' << ":=0x" << hex << opval << dec << " ";
3594 current_cpu->h_csr_set (FLD (f_csrn), opval);
3597 current_cpu->done_insn (npc, status);
3602 // ********** ldc_lp: ldc $rn,\$lp
3605 mepcore1_sem_ldc_lp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3607 #define FLD(f) abuf->fields.sfmt_ldc_lp.f
3608 sem_status status = SEM_STATUS_NORMAL;
3609 mepcore1_scache* abuf = sem;
3610 unsigned long long written = 0;
3611 PCADDR pc = abuf->addr;
3612 PCADDR npc = pc + 2;
3615 SI opval = current_cpu->h_csr_get (((UINT) 1));
3616 if (UNLIKELY(current_cpu->trace_result_p))
3617 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3618 * FLD (i_rn) = opval;
3621 current_cpu->done_insn (npc, status);
3626 // ********** ldc_hi: ldc $rn,\$hi
3629 mepcore1_sem_ldc_hi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3631 #define FLD(f) abuf->fields.sfmt_maddr.f
3632 sem_status status = SEM_STATUS_NORMAL;
3633 mepcore1_scache* abuf = sem;
3634 unsigned long long written = 0;
3635 PCADDR pc = abuf->addr;
3636 PCADDR npc = pc + 2;
3639 SI opval = current_cpu->h_csr_get (((UINT) 7));
3640 if (UNLIKELY(current_cpu->trace_result_p))
3641 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3642 * FLD (i_rn) = opval;
3645 current_cpu->done_insn (npc, status);
3650 // ********** ldc_lo: ldc $rn,\$lo
3653 mepcore1_sem_ldc_lo (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3655 #define FLD(f) abuf->fields.sfmt_maddr.f
3656 sem_status status = SEM_STATUS_NORMAL;
3657 mepcore1_scache* abuf = sem;
3658 unsigned long long written = 0;
3659 PCADDR pc = abuf->addr;
3660 PCADDR npc = pc + 2;
3663 SI opval = current_cpu->h_csr_get (((UINT) 8));
3664 if (UNLIKELY(current_cpu->trace_result_p))
3665 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3666 * FLD (i_rn) = opval;
3669 current_cpu->done_insn (npc, status);
3674 // ********** ldc: ldc $rn,$csrn
3677 mepcore1_sem_ldc (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3679 #define FLD(f) abuf->fields.sfmt_ldc.f
3680 sem_status status = SEM_STATUS_NORMAL;
3681 mepcore1_scache* abuf = sem;
3682 unsigned long long written = 0;
3683 PCADDR pc = abuf->addr;
3684 PCADDR npc = pc + 2;
3686 if (EQSI (FLD (f_csrn), 0)) {
3687 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
3689 SI opval = ADDSI (pc, 8);
3690 written |= (1ULL << 5);
3691 if (UNLIKELY(current_cpu->trace_result_p))
3692 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3693 * FLD (i_rn) = opval;
3696 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
3698 SI opval = ADDSI (pc, 4);
3699 written |= (1ULL << 5);
3700 if (UNLIKELY(current_cpu->trace_result_p))
3701 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3702 * FLD (i_rn) = opval;
3707 SI opval = ADDSI (pc, 2);
3708 written |= (1ULL << 5);
3709 if (UNLIKELY(current_cpu->trace_result_p))
3710 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3711 * FLD (i_rn) = opval;
3716 SI opval = current_cpu->h_csr_get (FLD (f_csrn));
3717 written |= (1ULL << 5);
3718 if (UNLIKELY(current_cpu->trace_result_p))
3719 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
3720 * FLD (i_rn) = opval;
3724 abuf->written = written;
3725 current_cpu->done_insn (npc, status);
3730 // ********** di: di
3733 mepcore1_sem_di (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3735 #define FLD(f) abuf->fields.sfmt_di.f
3736 sem_status status = SEM_STATUS_NORMAL;
3737 mepcore1_scache* abuf = sem;
3738 unsigned long long written = 0;
3739 PCADDR pc = abuf->addr;
3740 PCADDR npc = pc + 2;
3743 SI opval = SLLSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 1), 1);
3744 if (UNLIKELY(current_cpu->trace_result_p))
3745 current_cpu->trace_stream << "csr" << '[' << ((UINT) 16) << ']' << ":=0x" << hex << opval << dec << " ";
3746 current_cpu->h_csr_set (((UINT) 16), opval);
3749 current_cpu->done_insn (npc, status);
3754 // ********** ei: ei
3757 mepcore1_sem_ei (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3759 #define FLD(f) abuf->fields.sfmt_di.f
3760 sem_status status = SEM_STATUS_NORMAL;
3761 mepcore1_scache* abuf = sem;
3762 unsigned long long written = 0;
3763 PCADDR pc = abuf->addr;
3764 PCADDR npc = pc + 2;
3767 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 16)), 1);
3768 if (UNLIKELY(current_cpu->trace_result_p))
3769 current_cpu->trace_stream << "csr" << '[' << ((UINT) 16) << ']' << ":=0x" << hex << opval << dec << " ";
3770 current_cpu->h_csr_set (((UINT) 16), opval);
3773 current_cpu->done_insn (npc, status);
3778 // ********** reti: reti
3781 mepcore1_sem_reti (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3783 #define FLD(f) abuf->fields.sfmt_reti.f
3784 sem_status status = SEM_STATUS_NORMAL;
3785 mepcore1_scache* abuf = sem;
3786 unsigned long long written = 0;
3787 PCADDR pc = abuf->addr;
3788 PCADDR npc = pc + 2;
3790 if (EQSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), 0)) {
3791 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 9), 1)) {
3792 if (ANDSI (current_cpu->h_csr_get (((UINT) 23)), 1)) {
3794 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
3795 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3797 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 23)), INVSI (3));
3798 written |= (1ULL << 4);
3799 if (UNLIKELY(current_cpu->trace_result_p))
3800 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3801 current_cpu->branch (opval, npc, status);
3805 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 23)), INVSI (7));
3806 written |= (1ULL << 4);
3807 if (UNLIKELY(current_cpu->trace_result_p))
3808 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3809 current_cpu->branch (opval, npc, status);
3812 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 9))), ANDSI (SLLSI (1, 9), SLLSI (0, 9)));
3817 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 23)), INVSI (1));
3818 written |= (1ULL << 4);
3819 if (UNLIKELY(current_cpu->trace_result_p))
3820 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3821 current_cpu->branch (opval, npc, status);
3823 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 9))), ANDSI (SLLSI (1, 9), SLLSI (0, 9)));
3827 if (ANDSI (current_cpu->h_csr_get (((UINT) 19)), 1)) {
3829 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
3830 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
3832 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 19)), INVSI (3));
3833 written |= (1ULL << 4);
3834 if (UNLIKELY(current_cpu->trace_result_p))
3835 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3836 current_cpu->branch (opval, npc, status);
3840 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 19)), INVSI (7));
3841 written |= (1ULL << 4);
3842 if (UNLIKELY(current_cpu->trace_result_p))
3843 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3844 current_cpu->branch (opval, npc, status);
3847 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 2))), ANDSI (SLLSI (1, 2), SLLSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 3), 1), 2)));
3848 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 0))), ANDSI (SLLSI (1, 0), SLLSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 1), 1), 0)));
3853 USI opval = ANDSI (current_cpu->h_csr_get (((UINT) 19)), INVSI (1));
3854 written |= (1ULL << 4);
3855 if (UNLIKELY(current_cpu->trace_result_p))
3856 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3857 current_cpu->branch (opval, npc, status);
3859 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 2))), ANDSI (SLLSI (1, 2), SLLSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 3), 1), 2)));
3860 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 0))), ANDSI (SLLSI (1, 0), SLLSI (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 1), 1), 0)));
3868 abuf->written = written;
3869 current_cpu->done_cti_insn (npc, status);
3874 // ********** halt: halt
3877 mepcore1_sem_halt (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3879 #define FLD(f) abuf->fields.sfmt_di.f
3880 sem_status status = SEM_STATUS_NORMAL;
3881 mepcore1_scache* abuf = sem;
3882 unsigned long long written = 0;
3883 PCADDR pc = abuf->addr;
3884 PCADDR npc = pc + 2;
3886 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (current_cpu->h_csr_get (((UINT) 16)), SLLSI (1, 11));
3888 current_cpu->done_insn (npc, status);
3893 // ********** sleep: sleep
3896 mepcore1_sem_sleep (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3898 #define FLD(f) abuf->fields.fmt_empty.f
3899 sem_status status = SEM_STATUS_NORMAL;
3900 mepcore1_scache* abuf = sem;
3901 unsigned long long written = 0;
3902 PCADDR pc = abuf->addr;
3903 PCADDR npc = pc + 2;
3905 current_cpu->do_sleep ();
3907 current_cpu->done_insn (npc, status);
3912 // ********** swi: swi $uimm2
3915 mepcore1_sem_swi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3917 #define FLD(f) abuf->fields.sfmt_swi.f
3918 sem_status status = SEM_STATUS_NORMAL;
3919 mepcore1_scache* abuf = sem;
3920 unsigned long long written = 0;
3921 PCADDR pc = abuf->addr;
3922 PCADDR npc = pc + 2;
3924 if (EQSI (FLD (f_2u10), 0)) {
3926 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 20)), SLLSI (1, 4));
3927 written |= (1ULL << 2);
3928 if (UNLIKELY(current_cpu->trace_result_p))
3929 current_cpu->trace_stream << "csr" << '[' << ((UINT) 20) << ']' << ":=0x" << hex << opval << dec << " ";
3930 current_cpu->h_csr_set (((UINT) 20), opval);
3933 else if (EQSI (FLD (f_2u10), 1)) {
3935 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 20)), SLLSI (1, 5));
3936 written |= (1ULL << 2);
3937 if (UNLIKELY(current_cpu->trace_result_p))
3938 current_cpu->trace_stream << "csr" << '[' << ((UINT) 20) << ']' << ":=0x" << hex << opval << dec << " ";
3939 current_cpu->h_csr_set (((UINT) 20), opval);
3942 else if (EQSI (FLD (f_2u10), 2)) {
3944 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 20)), SLLSI (1, 6));
3945 written |= (1ULL << 2);
3946 if (UNLIKELY(current_cpu->trace_result_p))
3947 current_cpu->trace_stream << "csr" << '[' << ((UINT) 20) << ']' << ":=0x" << hex << opval << dec << " ";
3948 current_cpu->h_csr_set (((UINT) 20), opval);
3951 else if (EQSI (FLD (f_2u10), 3)) {
3953 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 20)), SLLSI (1, 7));
3954 written |= (1ULL << 2);
3955 if (UNLIKELY(current_cpu->trace_result_p))
3956 current_cpu->trace_stream << "csr" << '[' << ((UINT) 20) << ']' << ":=0x" << hex << opval << dec << " ";
3957 current_cpu->h_csr_set (((UINT) 20), opval);
3961 abuf->written = written;
3962 current_cpu->done_insn (npc, status);
3967 // ********** break: break
3970 mepcore1_sem_break (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3972 #define FLD(f) abuf->fields.fmt_empty.f
3973 sem_status status = SEM_STATUS_NORMAL;
3974 mepcore1_scache* abuf = sem;
3975 unsigned long long written = 0;
3976 PCADDR pc = abuf->addr;
3977 PCADDR npc = pc + 2;
3980 USI opval = current_cpu->break_exception (pc);
3981 if (UNLIKELY(current_cpu->trace_result_p))
3982 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
3983 current_cpu->branch (opval, npc, status);
3986 current_cpu->done_cti_insn (npc, status);
3991 // ********** syncm: syncm
3994 mepcore1_sem_syncm (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
3996 #define FLD(f) abuf->fields.fmt_empty.f
3997 sem_status status = SEM_STATUS_NORMAL;
3998 mepcore1_scache* abuf = sem;
3999 unsigned long long written = 0;
4000 PCADDR pc = abuf->addr;
4001 PCADDR npc = pc + 2;
4005 current_cpu->done_insn (npc, status);
4010 // ********** stcb: stcb $rn,$uimm16
4013 mepcore1_sem_stcb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4015 #define FLD(f) abuf->fields.sfmt_uci.f
4016 sem_status status = SEM_STATUS_NORMAL;
4017 mepcore1_scache* abuf = sem;
4018 unsigned long long written = 0;
4019 PCADDR pc = abuf->addr;
4020 PCADDR npc = pc + 4;
4022 current_cpu->do_stcb (* FLD (i_rn), FLD (f_16u16));
4024 current_cpu->done_insn (npc, status);
4029 // ********** ldcb: ldcb $rn,$uimm16
4032 mepcore1_sem_ldcb (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4034 #define FLD(f) abuf->fields.sfmt_uci.f
4035 sem_status status = SEM_STATUS_NORMAL;
4036 mepcore1_scache* abuf = sem;
4037 unsigned long long written = 0;
4038 PCADDR pc = abuf->addr;
4039 PCADDR npc = pc + 4;
4042 SI opval = current_cpu->do_ldcb (FLD (f_16u16));
4043 if (UNLIKELY(current_cpu->trace_result_p))
4044 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4045 * FLD (i_rn) = opval;
4048 current_cpu->done_insn (npc, status);
4053 // ********** bsetm: bsetm ($rma),$uimm3
4056 mepcore1_sem_bsetm (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4058 #define FLD(f) abuf->fields.sfmt_btstm.f
4059 sem_status status = SEM_STATUS_NORMAL;
4060 mepcore1_scache* abuf = sem;
4061 unsigned long long written = 0;
4062 PCADDR pc = abuf->addr;
4063 PCADDR npc = pc + 2;
4066 current_cpu->check_option_bit (pc);
4068 UQI opval = ORQI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)), SLLSI (1, FLD (f_3u5)));
4069 if (UNLIKELY(current_cpu->trace_result_p))
4070 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (USI) opval << dec << " ";
4071 current_cpu->SETMEMUQI (pc, * FLD (i_rma), opval);
4075 current_cpu->done_insn (npc, status);
4080 // ********** bclrm: bclrm ($rma),$uimm3
4083 mepcore1_sem_bclrm (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4085 #define FLD(f) abuf->fields.sfmt_btstm.f
4086 sem_status status = SEM_STATUS_NORMAL;
4087 mepcore1_scache* abuf = sem;
4088 unsigned long long written = 0;
4089 PCADDR pc = abuf->addr;
4090 PCADDR npc = pc + 2;
4093 current_cpu->check_option_bit (pc);
4095 UQI opval = ANDQI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)), INVSI (SLLSI (1, FLD (f_3u5))));
4096 if (UNLIKELY(current_cpu->trace_result_p))
4097 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (USI) opval << dec << " ";
4098 current_cpu->SETMEMUQI (pc, * FLD (i_rma), opval);
4102 current_cpu->done_insn (npc, status);
4107 // ********** bnotm: bnotm ($rma),$uimm3
4110 mepcore1_sem_bnotm (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4112 #define FLD(f) abuf->fields.sfmt_btstm.f
4113 sem_status status = SEM_STATUS_NORMAL;
4114 mepcore1_scache* abuf = sem;
4115 unsigned long long written = 0;
4116 PCADDR pc = abuf->addr;
4117 PCADDR npc = pc + 2;
4120 current_cpu->check_option_bit (pc);
4122 UQI opval = XORQI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)), SLLSI (1, FLD (f_3u5)));
4123 if (UNLIKELY(current_cpu->trace_result_p))
4124 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (USI) opval << dec << " ";
4125 current_cpu->SETMEMUQI (pc, * FLD (i_rma), opval);
4129 current_cpu->done_insn (npc, status);
4134 // ********** btstm: btstm \$0,($rma),$uimm3
4137 mepcore1_sem_btstm (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4139 #define FLD(f) abuf->fields.sfmt_btstm.f
4140 sem_status status = SEM_STATUS_NORMAL;
4141 mepcore1_scache* abuf = sem;
4142 unsigned long long written = 0;
4143 PCADDR pc = abuf->addr;
4144 PCADDR npc = pc + 2;
4147 current_cpu->check_option_bit (pc);
4149 SI opval = ZEXTQISI (ANDQI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)), SLLSI (1, FLD (f_3u5))));
4150 if (UNLIKELY(current_cpu->trace_result_p))
4151 current_cpu->trace_stream << "gpr" << '[' << ((UINT) 0) << ']' << ":=0x" << hex << opval << dec << " ";
4152 current_cpu->hardware.h_gpr[((UINT) 0)] = opval;
4156 current_cpu->done_insn (npc, status);
4161 // ********** tas: tas $rn,($rma)
4164 mepcore1_sem_tas (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4166 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
4167 sem_status status = SEM_STATUS_NORMAL;
4168 mepcore1_scache* abuf = sem;
4169 unsigned long long written = 0;
4170 PCADDR pc = abuf->addr;
4171 PCADDR npc = pc + 2;
4175 current_cpu->check_option_bit (pc);
4176 tmp_result = ZEXTQISI (current_cpu->GETMEMUQI (pc, * FLD (i_rma)));
4179 if (UNLIKELY(current_cpu->trace_result_p))
4180 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (USI) opval << dec << " ";
4181 current_cpu->SETMEMUQI (pc, * FLD (i_rma), opval);
4184 SI opval = tmp_result;
4185 if (UNLIKELY(current_cpu->trace_result_p))
4186 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4187 * FLD (i_rn) = opval;
4191 current_cpu->done_insn (npc, status);
4196 // ********** cache: cache $cimm4,($rma)
4199 mepcore1_sem_cache (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4201 #define FLD(f) abuf->fields.sfmt_ldcb_r.f
4202 sem_status status = SEM_STATUS_NORMAL;
4203 mepcore1_scache* abuf = sem;
4204 unsigned long long written = 0;
4205 PCADDR pc = abuf->addr;
4206 PCADDR npc = pc + 2;
4208 current_cpu->do_cache (FLD (f_rn), * FLD (i_rma), pc);
4210 current_cpu->done_insn (npc, status);
4215 // ********** mul: mul $rn,$rm
4218 mepcore1_sem_mul (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4220 #define FLD(f) abuf->fields.sfmt_maddr.f
4221 sem_status status = SEM_STATUS_NORMAL;
4222 mepcore1_scache* abuf = sem;
4223 unsigned long long written = 0;
4224 PCADDR pc = abuf->addr;
4225 PCADDR npc = pc + 2;
4229 current_cpu->check_option_mul (pc);
4230 tmp_result = MULDI (EXTSIDI (* FLD (i_rn)), EXTSIDI (* FLD (i_rm)));
4232 SI opval = SUBWORDDISI (tmp_result, 0);
4233 if (UNLIKELY(current_cpu->trace_result_p))
4234 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4235 current_cpu->h_csr_set (((UINT) 7), opval);
4238 SI opval = SUBWORDDISI (tmp_result, 1);
4239 if (UNLIKELY(current_cpu->trace_result_p))
4240 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4241 current_cpu->h_csr_set (((UINT) 8), opval);
4245 current_cpu->done_insn (npc, status);
4250 // ********** mulu: mulu $rn,$rm
4253 mepcore1_sem_mulu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4255 #define FLD(f) abuf->fields.sfmt_maddr.f
4256 sem_status status = SEM_STATUS_NORMAL;
4257 mepcore1_scache* abuf = sem;
4258 unsigned long long written = 0;
4259 PCADDR pc = abuf->addr;
4260 PCADDR npc = pc + 2;
4264 current_cpu->check_option_mul (pc);
4265 tmp_result = MULDI (ZEXTSIDI (* FLD (i_rn)), ZEXTSIDI (* FLD (i_rm)));
4267 SI opval = SUBWORDDISI (tmp_result, 0);
4268 if (UNLIKELY(current_cpu->trace_result_p))
4269 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4270 current_cpu->h_csr_set (((UINT) 7), opval);
4273 SI opval = SUBWORDDISI (tmp_result, 1);
4274 if (UNLIKELY(current_cpu->trace_result_p))
4275 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4276 current_cpu->h_csr_set (((UINT) 8), opval);
4280 current_cpu->done_insn (npc, status);
4285 // ********** mulr: mulr $rn,$rm
4288 mepcore1_sem_mulr (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4290 #define FLD(f) abuf->fields.sfmt_maddr.f
4291 sem_status status = SEM_STATUS_NORMAL;
4292 mepcore1_scache* abuf = sem;
4293 unsigned long long written = 0;
4294 PCADDR pc = abuf->addr;
4295 PCADDR npc = pc + 2;
4299 current_cpu->check_option_mul (pc);
4300 tmp_result = MULDI (EXTSIDI (* FLD (i_rn)), EXTSIDI (* FLD (i_rm)));
4302 SI opval = SUBWORDDISI (tmp_result, 0);
4303 if (UNLIKELY(current_cpu->trace_result_p))
4304 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4305 current_cpu->h_csr_set (((UINT) 7), opval);
4308 SI opval = SUBWORDDISI (tmp_result, 1);
4309 if (UNLIKELY(current_cpu->trace_result_p))
4310 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4311 current_cpu->h_csr_set (((UINT) 8), opval);
4314 SI opval = SUBWORDDISI (tmp_result, 1);
4315 if (UNLIKELY(current_cpu->trace_result_p))
4316 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4317 * FLD (i_rn) = opval;
4321 current_cpu->done_insn (npc, status);
4326 // ********** mulru: mulru $rn,$rm
4329 mepcore1_sem_mulru (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4331 #define FLD(f) abuf->fields.sfmt_maddr.f
4332 sem_status status = SEM_STATUS_NORMAL;
4333 mepcore1_scache* abuf = sem;
4334 unsigned long long written = 0;
4335 PCADDR pc = abuf->addr;
4336 PCADDR npc = pc + 2;
4340 current_cpu->check_option_mul (pc);
4341 tmp_result = MULDI (ZEXTSIDI (* FLD (i_rn)), ZEXTSIDI (* FLD (i_rm)));
4343 SI opval = SUBWORDDISI (tmp_result, 0);
4344 if (UNLIKELY(current_cpu->trace_result_p))
4345 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4346 current_cpu->h_csr_set (((UINT) 7), opval);
4349 SI opval = SUBWORDDISI (tmp_result, 1);
4350 if (UNLIKELY(current_cpu->trace_result_p))
4351 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4352 current_cpu->h_csr_set (((UINT) 8), opval);
4355 SI opval = SUBWORDDISI (tmp_result, 1);
4356 if (UNLIKELY(current_cpu->trace_result_p))
4357 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4358 * FLD (i_rn) = opval;
4362 current_cpu->done_insn (npc, status);
4367 // ********** madd: madd $rn,$rm
4370 mepcore1_sem_madd (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4372 #define FLD(f) abuf->fields.sfmt_maddr.f
4373 sem_status status = SEM_STATUS_NORMAL;
4374 mepcore1_scache* abuf = sem;
4375 unsigned long long written = 0;
4376 PCADDR pc = abuf->addr;
4377 PCADDR npc = pc + 4;
4381 current_cpu->check_option_mul (pc);
4382 tmp_result = ORDI (SLLDI (ZEXTSIDI (current_cpu->h_csr_get (((UINT) 7))), 32), ZEXTSIDI (current_cpu->h_csr_get (((UINT) 8))));
4383 tmp_result = ADDDI (tmp_result, MULDI (EXTSIDI (* FLD (i_rn)), EXTSIDI (* FLD (i_rm))));
4385 SI opval = SUBWORDDISI (tmp_result, 0);
4386 if (UNLIKELY(current_cpu->trace_result_p))
4387 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4388 current_cpu->h_csr_set (((UINT) 7), opval);
4391 SI opval = SUBWORDDISI (tmp_result, 1);
4392 if (UNLIKELY(current_cpu->trace_result_p))
4393 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4394 current_cpu->h_csr_set (((UINT) 8), opval);
4398 current_cpu->done_insn (npc, status);
4403 // ********** maddu: maddu $rn,$rm
4406 mepcore1_sem_maddu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4408 #define FLD(f) abuf->fields.sfmt_maddr.f
4409 sem_status status = SEM_STATUS_NORMAL;
4410 mepcore1_scache* abuf = sem;
4411 unsigned long long written = 0;
4412 PCADDR pc = abuf->addr;
4413 PCADDR npc = pc + 4;
4417 current_cpu->check_option_mul (pc);
4418 tmp_result = ORDI (SLLDI (ZEXTSIDI (current_cpu->h_csr_get (((UINT) 7))), 32), ZEXTSIDI (current_cpu->h_csr_get (((UINT) 8))));
4419 tmp_result = ADDDI (tmp_result, MULDI (ZEXTSIDI (* FLD (i_rn)), ZEXTSIDI (* FLD (i_rm))));
4421 SI opval = SUBWORDDISI (tmp_result, 0);
4422 if (UNLIKELY(current_cpu->trace_result_p))
4423 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4424 current_cpu->h_csr_set (((UINT) 7), opval);
4427 SI opval = SUBWORDDISI (tmp_result, 1);
4428 if (UNLIKELY(current_cpu->trace_result_p))
4429 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4430 current_cpu->h_csr_set (((UINT) 8), opval);
4434 current_cpu->done_insn (npc, status);
4439 // ********** maddr: maddr $rn,$rm
4442 mepcore1_sem_maddr (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4444 #define FLD(f) abuf->fields.sfmt_maddr.f
4445 sem_status status = SEM_STATUS_NORMAL;
4446 mepcore1_scache* abuf = sem;
4447 unsigned long long written = 0;
4448 PCADDR pc = abuf->addr;
4449 PCADDR npc = pc + 4;
4453 current_cpu->check_option_mul (pc);
4454 tmp_result = ORDI (SLLDI (ZEXTSIDI (current_cpu->h_csr_get (((UINT) 7))), 32), ZEXTSIDI (current_cpu->h_csr_get (((UINT) 8))));
4455 tmp_result = ADDDI (tmp_result, MULDI (EXTSIDI (* FLD (i_rn)), EXTSIDI (* FLD (i_rm))));
4457 SI opval = SUBWORDDISI (tmp_result, 0);
4458 if (UNLIKELY(current_cpu->trace_result_p))
4459 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4460 current_cpu->h_csr_set (((UINT) 7), opval);
4463 SI opval = SUBWORDDISI (tmp_result, 1);
4464 if (UNLIKELY(current_cpu->trace_result_p))
4465 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4466 current_cpu->h_csr_set (((UINT) 8), opval);
4469 SI opval = SUBWORDDISI (tmp_result, 1);
4470 if (UNLIKELY(current_cpu->trace_result_p))
4471 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4472 * FLD (i_rn) = opval;
4476 current_cpu->done_insn (npc, status);
4481 // ********** maddru: maddru $rn,$rm
4484 mepcore1_sem_maddru (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4486 #define FLD(f) abuf->fields.sfmt_maddr.f
4487 sem_status status = SEM_STATUS_NORMAL;
4488 mepcore1_scache* abuf = sem;
4489 unsigned long long written = 0;
4490 PCADDR pc = abuf->addr;
4491 PCADDR npc = pc + 4;
4495 current_cpu->check_option_mul (pc);
4496 tmp_result = ORDI (SLLDI (ZEXTSIDI (current_cpu->h_csr_get (((UINT) 7))), 32), ZEXTSIDI (current_cpu->h_csr_get (((UINT) 8))));
4497 tmp_result = ADDDI (tmp_result, MULDI (ZEXTSIDI (* FLD (i_rn)), ZEXTSIDI (* FLD (i_rm))));
4499 SI opval = SUBWORDDISI (tmp_result, 0);
4500 if (UNLIKELY(current_cpu->trace_result_p))
4501 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4502 current_cpu->h_csr_set (((UINT) 7), opval);
4505 SI opval = SUBWORDDISI (tmp_result, 1);
4506 if (UNLIKELY(current_cpu->trace_result_p))
4507 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4508 current_cpu->h_csr_set (((UINT) 8), opval);
4511 SI opval = SUBWORDDISI (tmp_result, 1);
4512 if (UNLIKELY(current_cpu->trace_result_p))
4513 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4514 * FLD (i_rn) = opval;
4518 current_cpu->done_insn (npc, status);
4523 // ********** div: div $rn,$rm
4526 mepcore1_sem_div (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4528 #define FLD(f) abuf->fields.sfmt_maddr.f
4529 sem_status status = SEM_STATUS_NORMAL;
4530 mepcore1_scache* abuf = sem;
4531 unsigned long long written = 0;
4532 PCADDR pc = abuf->addr;
4533 PCADDR npc = pc + 2;
4536 current_cpu->check_option_div (pc);
4537 if (EQSI (* FLD (i_rm), 0)) {
4539 USI opval = current_cpu->zdiv_exception (pc);
4540 written |= (1ULL << 5);
4541 if (UNLIKELY(current_cpu->trace_result_p))
4542 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4543 current_cpu->branch (opval, npc, status);
4546 if (ANDBI (EQSI (* FLD (i_rn), 0x80000000), EQSI (* FLD (i_rm), 0xffffffff))) {
4549 SI opval = 0x80000000;
4550 written |= (1ULL << 4);
4551 if (UNLIKELY(current_cpu->trace_result_p))
4552 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4553 current_cpu->h_csr_set (((UINT) 8), opval);
4557 written |= (1ULL << 3);
4558 if (UNLIKELY(current_cpu->trace_result_p))
4559 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4560 current_cpu->h_csr_set (((UINT) 7), opval);
4566 SI opval = DIVSI (* FLD (i_rn), * FLD (i_rm));
4567 written |= (1ULL << 4);
4568 if (UNLIKELY(current_cpu->trace_result_p))
4569 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4570 current_cpu->h_csr_set (((UINT) 8), opval);
4573 SI opval = MODSI (* FLD (i_rn), * FLD (i_rm));
4574 written |= (1ULL << 3);
4575 if (UNLIKELY(current_cpu->trace_result_p))
4576 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4577 current_cpu->h_csr_set (((UINT) 7), opval);
4584 abuf->written = written;
4585 current_cpu->done_cti_insn (npc, status);
4590 // ********** divu: divu $rn,$rm
4593 mepcore1_sem_divu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4595 #define FLD(f) abuf->fields.sfmt_maddr.f
4596 sem_status status = SEM_STATUS_NORMAL;
4597 mepcore1_scache* abuf = sem;
4598 unsigned long long written = 0;
4599 PCADDR pc = abuf->addr;
4600 PCADDR npc = pc + 2;
4603 current_cpu->check_option_div (pc);
4604 if (EQSI (* FLD (i_rm), 0)) {
4606 USI opval = current_cpu->zdiv_exception (pc);
4607 written |= (1ULL << 5);
4608 if (UNLIKELY(current_cpu->trace_result_p))
4609 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4610 current_cpu->branch (opval, npc, status);
4615 SI opval = UDIVSI (* FLD (i_rn), * FLD (i_rm));
4616 written |= (1ULL << 4);
4617 if (UNLIKELY(current_cpu->trace_result_p))
4618 current_cpu->trace_stream << "csr" << '[' << ((UINT) 8) << ']' << ":=0x" << hex << opval << dec << " ";
4619 current_cpu->h_csr_set (((UINT) 8), opval);
4622 SI opval = UMODSI (* FLD (i_rn), * FLD (i_rm));
4623 written |= (1ULL << 3);
4624 if (UNLIKELY(current_cpu->trace_result_p))
4625 current_cpu->trace_stream << "csr" << '[' << ((UINT) 7) << ']' << ":=0x" << hex << opval << dec << " ";
4626 current_cpu->h_csr_set (((UINT) 7), opval);
4632 abuf->written = written;
4633 current_cpu->done_cti_insn (npc, status);
4638 // ********** dret: dret
4641 mepcore1_sem_dret (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4643 #define FLD(f) abuf->fields.sfmt_dret.f
4644 sem_status status = SEM_STATUS_NORMAL;
4645 mepcore1_scache* abuf = sem;
4646 unsigned long long written = 0;
4647 PCADDR pc = abuf->addr;
4648 PCADDR npc = pc + 2;
4651 current_cpu->check_option_debug (pc);
4653 SI opval = ANDSI (current_cpu->h_csr_get (((UINT) 24)), INVSI (SLLSI (1, 15)));
4654 if (UNLIKELY(current_cpu->trace_result_p))
4655 current_cpu->trace_stream << "csr" << '[' << ((UINT) 24) << ']' << ":=0x" << hex << opval << dec << " ";
4656 current_cpu->h_csr_set (((UINT) 24), opval);
4659 USI opval = current_cpu->h_csr_get (((UINT) 25));
4660 if (UNLIKELY(current_cpu->trace_result_p))
4661 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
4662 current_cpu->branch (opval, npc, status);
4666 current_cpu->done_cti_insn (npc, status);
4671 // ********** dbreak: dbreak
4674 mepcore1_sem_dbreak (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4676 #define FLD(f) abuf->fields.sfmt_dret.f
4677 sem_status status = SEM_STATUS_NORMAL;
4678 mepcore1_scache* abuf = sem;
4679 unsigned long long written = 0;
4680 PCADDR pc = abuf->addr;
4681 PCADDR npc = pc + 2;
4684 current_cpu->check_option_debug (pc);
4686 SI opval = ORSI (current_cpu->h_csr_get (((UINT) 24)), 1);
4687 if (UNLIKELY(current_cpu->trace_result_p))
4688 current_cpu->trace_stream << "csr" << '[' << ((UINT) 24) << ']' << ":=0x" << hex << opval << dec << " ";
4689 current_cpu->h_csr_set (((UINT) 24), opval);
4693 current_cpu->done_insn (npc, status);
4698 // ********** ldz: ldz $rn,$rm
4701 mepcore1_sem_ldz (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4703 #define FLD(f) abuf->fields.sfmt_add3x.f
4704 sem_status status = SEM_STATUS_NORMAL;
4705 mepcore1_scache* abuf = sem;
4706 unsigned long long written = 0;
4707 PCADDR pc = abuf->addr;
4708 PCADDR npc = pc + 4;
4711 current_cpu->check_option_ldz (pc);
4713 SI opval = current_cpu->do_ldz (* FLD (i_rm));
4714 if (UNLIKELY(current_cpu->trace_result_p))
4715 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4716 * FLD (i_rn) = opval;
4720 current_cpu->done_insn (npc, status);
4725 // ********** abs: abs $rn,$rm
4728 mepcore1_sem_abs (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4730 #define FLD(f) abuf->fields.sfmt_fsft.f
4731 sem_status status = SEM_STATUS_NORMAL;
4732 mepcore1_scache* abuf = sem;
4733 unsigned long long written = 0;
4734 PCADDR pc = abuf->addr;
4735 PCADDR npc = pc + 4;
4738 current_cpu->check_option_abs (pc);
4740 SI opval = ABSSI (SUBSI (* FLD (i_rn), * FLD (i_rm)));
4741 if (UNLIKELY(current_cpu->trace_result_p))
4742 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4743 * FLD (i_rn) = opval;
4747 current_cpu->done_insn (npc, status);
4752 // ********** ave: ave $rn,$rm
4755 mepcore1_sem_ave (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4757 #define FLD(f) abuf->fields.sfmt_fsft.f
4758 sem_status status = SEM_STATUS_NORMAL;
4759 mepcore1_scache* abuf = sem;
4760 unsigned long long written = 0;
4761 PCADDR pc = abuf->addr;
4762 PCADDR npc = pc + 4;
4765 current_cpu->check_option_ave (pc);
4767 SI opval = SRASI (ADDSI (ADDSI (* FLD (i_rn), * FLD (i_rm)), 1), 1);
4768 if (UNLIKELY(current_cpu->trace_result_p))
4769 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4770 * FLD (i_rn) = opval;
4774 current_cpu->done_insn (npc, status);
4779 // ********** min: min $rn,$rm
4782 mepcore1_sem_min (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4784 #define FLD(f) abuf->fields.sfmt_fsft.f
4785 sem_status status = SEM_STATUS_NORMAL;
4786 mepcore1_scache* abuf = sem;
4787 unsigned long long written = 0;
4788 PCADDR pc = abuf->addr;
4789 PCADDR npc = pc + 4;
4792 current_cpu->check_option_minmax (pc);
4793 if (GTSI (* FLD (i_rn), * FLD (i_rm))) {
4795 SI opval = * FLD (i_rm);
4796 written |= (1ULL << 3);
4797 if (UNLIKELY(current_cpu->trace_result_p))
4798 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4799 * FLD (i_rn) = opval;
4804 abuf->written = written;
4805 current_cpu->done_insn (npc, status);
4810 // ********** max: max $rn,$rm
4813 mepcore1_sem_max (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4815 #define FLD(f) abuf->fields.sfmt_fsft.f
4816 sem_status status = SEM_STATUS_NORMAL;
4817 mepcore1_scache* abuf = sem;
4818 unsigned long long written = 0;
4819 PCADDR pc = abuf->addr;
4820 PCADDR npc = pc + 4;
4823 current_cpu->check_option_minmax (pc);
4824 if (LTSI (* FLD (i_rn), * FLD (i_rm))) {
4826 SI opval = * FLD (i_rm);
4827 written |= (1ULL << 3);
4828 if (UNLIKELY(current_cpu->trace_result_p))
4829 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4830 * FLD (i_rn) = opval;
4835 abuf->written = written;
4836 current_cpu->done_insn (npc, status);
4841 // ********** minu: minu $rn,$rm
4844 mepcore1_sem_minu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4846 #define FLD(f) abuf->fields.sfmt_fsft.f
4847 sem_status status = SEM_STATUS_NORMAL;
4848 mepcore1_scache* abuf = sem;
4849 unsigned long long written = 0;
4850 PCADDR pc = abuf->addr;
4851 PCADDR npc = pc + 4;
4854 current_cpu->check_option_minmax (pc);
4855 if (GTUSI (* FLD (i_rn), * FLD (i_rm))) {
4857 SI opval = * FLD (i_rm);
4858 written |= (1ULL << 3);
4859 if (UNLIKELY(current_cpu->trace_result_p))
4860 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4861 * FLD (i_rn) = opval;
4866 abuf->written = written;
4867 current_cpu->done_insn (npc, status);
4872 // ********** maxu: maxu $rn,$rm
4875 mepcore1_sem_maxu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4877 #define FLD(f) abuf->fields.sfmt_fsft.f
4878 sem_status status = SEM_STATUS_NORMAL;
4879 mepcore1_scache* abuf = sem;
4880 unsigned long long written = 0;
4881 PCADDR pc = abuf->addr;
4882 PCADDR npc = pc + 4;
4885 current_cpu->check_option_minmax (pc);
4886 if (LTUSI (* FLD (i_rn), * FLD (i_rm))) {
4888 SI opval = * FLD (i_rm);
4889 written |= (1ULL << 3);
4890 if (UNLIKELY(current_cpu->trace_result_p))
4891 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4892 * FLD (i_rn) = opval;
4897 abuf->written = written;
4898 current_cpu->done_insn (npc, status);
4903 // ********** clip: clip $rn,$cimm5
4906 mepcore1_sem_clip (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4908 #define FLD(f) abuf->fields.sfmt_clip.f
4909 sem_status status = SEM_STATUS_NORMAL;
4910 mepcore1_scache* abuf = sem;
4911 unsigned long long written = 0;
4912 PCADDR pc = abuf->addr;
4913 PCADDR npc = pc + 4;
4918 current_cpu->check_option_clip (pc);
4919 tmp_max = SUBSI (SLLSI (1, SUBSI (FLD (f_5u24), 1)), 1);
4920 tmp_min = NEGSI (SLLSI (1, SUBSI (FLD (f_5u24), 1)));
4921 if (EQSI (FLD (f_5u24), 0)) {
4924 written |= (1ULL << 3);
4925 if (UNLIKELY(current_cpu->trace_result_p))
4926 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4927 * FLD (i_rn) = opval;
4930 else if (GTSI (* FLD (i_rn), tmp_max)) {
4933 written |= (1ULL << 3);
4934 if (UNLIKELY(current_cpu->trace_result_p))
4935 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4936 * FLD (i_rn) = opval;
4939 else if (LTSI (* FLD (i_rn), tmp_min)) {
4942 written |= (1ULL << 3);
4943 if (UNLIKELY(current_cpu->trace_result_p))
4944 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4945 * FLD (i_rn) = opval;
4950 abuf->written = written;
4951 current_cpu->done_insn (npc, status);
4956 // ********** clipu: clipu $rn,$cimm5
4959 mepcore1_sem_clipu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
4961 #define FLD(f) abuf->fields.sfmt_clip.f
4962 sem_status status = SEM_STATUS_NORMAL;
4963 mepcore1_scache* abuf = sem;
4964 unsigned long long written = 0;
4965 PCADDR pc = abuf->addr;
4966 PCADDR npc = pc + 4;
4970 current_cpu->check_option_clip (pc);
4971 tmp_max = SUBSI (SLLSI (1, FLD (f_5u24)), 1);
4972 if (EQSI (FLD (f_5u24), 0)) {
4975 written |= (1ULL << 3);
4976 if (UNLIKELY(current_cpu->trace_result_p))
4977 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4978 * FLD (i_rn) = opval;
4981 else if (GTSI (* FLD (i_rn), tmp_max)) {
4984 written |= (1ULL << 3);
4985 if (UNLIKELY(current_cpu->trace_result_p))
4986 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4987 * FLD (i_rn) = opval;
4990 else if (LTSI (* FLD (i_rn), 0)) {
4993 written |= (1ULL << 3);
4994 if (UNLIKELY(current_cpu->trace_result_p))
4995 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
4996 * FLD (i_rn) = opval;
5001 abuf->written = written;
5002 current_cpu->done_insn (npc, status);
5007 // ********** sadd: sadd $rn,$rm
5010 mepcore1_sem_sadd (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5012 #define FLD(f) abuf->fields.sfmt_fsft.f
5013 sem_status status = SEM_STATUS_NORMAL;
5014 mepcore1_scache* abuf = sem;
5015 unsigned long long written = 0;
5016 PCADDR pc = abuf->addr;
5017 PCADDR npc = pc + 4;
5020 current_cpu->check_option_sat (pc);
5021 if (ADDOFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
5022 if (LTSI (* FLD (i_rn), 0)) {
5024 SI opval = NEGSI (SLLSI (1, 31));
5025 written |= (1ULL << 3);
5026 if (UNLIKELY(current_cpu->trace_result_p))
5027 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5028 * FLD (i_rn) = opval;
5032 SI opval = SUBSI (SLLSI (1, 31), 1);
5033 written |= (1ULL << 3);
5034 if (UNLIKELY(current_cpu->trace_result_p))
5035 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5036 * FLD (i_rn) = opval;
5041 SI opval = ADDSI (* FLD (i_rn), * FLD (i_rm));
5042 written |= (1ULL << 3);
5043 if (UNLIKELY(current_cpu->trace_result_p))
5044 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5045 * FLD (i_rn) = opval;
5050 abuf->written = written;
5051 current_cpu->done_insn (npc, status);
5056 // ********** ssub: ssub $rn,$rm
5059 mepcore1_sem_ssub (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5061 #define FLD(f) abuf->fields.sfmt_fsft.f
5062 sem_status status = SEM_STATUS_NORMAL;
5063 mepcore1_scache* abuf = sem;
5064 unsigned long long written = 0;
5065 PCADDR pc = abuf->addr;
5066 PCADDR npc = pc + 4;
5069 current_cpu->check_option_sat (pc);
5070 if (SUBOFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
5071 if (LTSI (* FLD (i_rn), 0)) {
5073 SI opval = NEGSI (SLLSI (1, 31));
5074 written |= (1ULL << 3);
5075 if (UNLIKELY(current_cpu->trace_result_p))
5076 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5077 * FLD (i_rn) = opval;
5081 SI opval = SUBSI (SLLSI (1, 31), 1);
5082 written |= (1ULL << 3);
5083 if (UNLIKELY(current_cpu->trace_result_p))
5084 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5085 * FLD (i_rn) = opval;
5090 SI opval = SUBSI (* FLD (i_rn), * FLD (i_rm));
5091 written |= (1ULL << 3);
5092 if (UNLIKELY(current_cpu->trace_result_p))
5093 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5094 * FLD (i_rn) = opval;
5099 abuf->written = written;
5100 current_cpu->done_insn (npc, status);
5105 // ********** saddu: saddu $rn,$rm
5108 mepcore1_sem_saddu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5110 #define FLD(f) abuf->fields.sfmt_fsft.f
5111 sem_status status = SEM_STATUS_NORMAL;
5112 mepcore1_scache* abuf = sem;
5113 unsigned long long written = 0;
5114 PCADDR pc = abuf->addr;
5115 PCADDR npc = pc + 4;
5118 current_cpu->check_option_sat (pc);
5119 if (ADDCFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
5121 SI opval = INVSI (0);
5122 written |= (1ULL << 3);
5123 if (UNLIKELY(current_cpu->trace_result_p))
5124 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5125 * FLD (i_rn) = opval;
5129 SI opval = ADDSI (* FLD (i_rn), * FLD (i_rm));
5130 written |= (1ULL << 3);
5131 if (UNLIKELY(current_cpu->trace_result_p))
5132 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5133 * FLD (i_rn) = opval;
5138 abuf->written = written;
5139 current_cpu->done_insn (npc, status);
5144 // ********** ssubu: ssubu $rn,$rm
5147 mepcore1_sem_ssubu (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5149 #define FLD(f) abuf->fields.sfmt_fsft.f
5150 sem_status status = SEM_STATUS_NORMAL;
5151 mepcore1_scache* abuf = sem;
5152 unsigned long long written = 0;
5153 PCADDR pc = abuf->addr;
5154 PCADDR npc = pc + 4;
5157 current_cpu->check_option_sat (pc);
5158 if (SUBCFSI (* FLD (i_rn), * FLD (i_rm), 0)) {
5161 written |= (1ULL << 3);
5162 if (UNLIKELY(current_cpu->trace_result_p))
5163 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5164 * FLD (i_rn) = opval;
5168 SI opval = SUBSI (* FLD (i_rn), * FLD (i_rm));
5169 written |= (1ULL << 3);
5170 if (UNLIKELY(current_cpu->trace_result_p))
5171 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rn) << ']' << ":=0x" << hex << opval << dec << " ";
5172 * FLD (i_rn) = opval;
5177 abuf->written = written;
5178 current_cpu->done_insn (npc, status);
5183 // ********** swcp: swcp $crn,($rma)
5186 mepcore1_sem_swcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5188 #define FLD(f) abuf->fields.sfmt_swcp16.f
5189 sem_status status = SEM_STATUS_NORMAL;
5190 mepcore1_scache* abuf = sem;
5191 unsigned long long written = 0;
5192 PCADDR pc = abuf->addr;
5193 PCADDR npc = pc + 2;
5196 current_cpu->check_option_cp (pc);
5197 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
5199 SI opval = current_cpu->h_cr_get (FLD (f_crn));
5200 if (UNLIKELY(current_cpu->trace_result_p))
5201 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5202 current_cpu->SETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
5206 current_cpu->done_insn (npc, status);
5211 // ********** lwcp: lwcp $crn,($rma)
5214 mepcore1_sem_lwcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5216 #define FLD(f) abuf->fields.sfmt_swcp16.f
5217 sem_status status = SEM_STATUS_NORMAL;
5218 mepcore1_scache* abuf = sem;
5219 unsigned long long written = 0;
5220 PCADDR pc = abuf->addr;
5221 PCADDR npc = pc + 2;
5224 current_cpu->check_option_cp (pc);
5226 SI opval = current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)));
5227 if (UNLIKELY(current_cpu->trace_result_p))
5228 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5229 current_cpu->h_cr_set (FLD (f_crn), opval);
5233 current_cpu->done_insn (npc, status);
5238 // ********** smcp: smcp $crn64,($rma)
5241 mepcore1_sem_smcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5243 #define FLD(f) abuf->fields.sfmt_swcp16.f
5244 sem_status status = SEM_STATUS_NORMAL;
5245 mepcore1_scache* abuf = sem;
5246 unsigned long long written = 0;
5247 PCADDR pc = abuf->addr;
5248 PCADDR npc = pc + 2;
5251 current_cpu->check_option_cp (pc);
5252 current_cpu->check_option_cp64 (pc);
5253 current_cpu->check_write_to_text (* FLD (i_rma));
5254 current_cpu->do_smcp (* FLD (i_rma), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
5257 current_cpu->done_insn (npc, status);
5262 // ********** lmcp: lmcp $crn64,($rma)
5265 mepcore1_sem_lmcp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5267 #define FLD(f) abuf->fields.sfmt_swcp16.f
5268 sem_status status = SEM_STATUS_NORMAL;
5269 mepcore1_scache* abuf = sem;
5270 unsigned long long written = 0;
5271 PCADDR pc = abuf->addr;
5272 PCADDR npc = pc + 2;
5275 current_cpu->check_option_cp (pc);
5276 current_cpu->check_option_cp64 (pc);
5278 DI opval = current_cpu->do_lmcp (* FLD (i_rma), pc);
5279 if (UNLIKELY(current_cpu->trace_result_p))
5280 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5281 current_cpu->h_cr64_set (FLD (f_crn), opval);
5285 current_cpu->done_insn (npc, status);
5290 // ********** swcpi: swcpi $crn,($rma+)
5293 mepcore1_sem_swcpi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5295 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5296 sem_status status = SEM_STATUS_NORMAL;
5297 mepcore1_scache* abuf = sem;
5298 unsigned long long written = 0;
5299 PCADDR pc = abuf->addr;
5300 PCADDR npc = pc + 2;
5303 current_cpu->check_option_cp (pc);
5304 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
5306 SI opval = current_cpu->h_cr_get (FLD (f_crn));
5307 if (UNLIKELY(current_cpu->trace_result_p))
5308 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5309 current_cpu->SETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
5312 SI opval = ADDSI (* FLD (i_rma), 4);
5313 if (UNLIKELY(current_cpu->trace_result_p))
5314 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5315 * FLD (i_rma) = opval;
5319 current_cpu->done_insn (npc, status);
5324 // ********** lwcpi: lwcpi $crn,($rma+)
5327 mepcore1_sem_lwcpi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5329 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5330 sem_status status = SEM_STATUS_NORMAL;
5331 mepcore1_scache* abuf = sem;
5332 unsigned long long written = 0;
5333 PCADDR pc = abuf->addr;
5334 PCADDR npc = pc + 2;
5337 current_cpu->check_option_cp (pc);
5339 SI opval = current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)));
5340 if (UNLIKELY(current_cpu->trace_result_p))
5341 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5342 current_cpu->h_cr_set (FLD (f_crn), opval);
5345 SI opval = ADDSI (* FLD (i_rma), 4);
5346 if (UNLIKELY(current_cpu->trace_result_p))
5347 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5348 * FLD (i_rma) = opval;
5352 current_cpu->done_insn (npc, status);
5357 // ********** smcpi: smcpi $crn64,($rma+)
5360 mepcore1_sem_smcpi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5362 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5363 sem_status status = SEM_STATUS_NORMAL;
5364 mepcore1_scache* abuf = sem;
5365 unsigned long long written = 0;
5366 PCADDR pc = abuf->addr;
5367 PCADDR npc = pc + 2;
5370 current_cpu->check_option_cp (pc);
5371 current_cpu->check_option_cp64 (pc);
5372 current_cpu->check_write_to_text (* FLD (i_rma));
5373 current_cpu->do_smcpi (FLD (f_rm), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
5375 SI opval = * FLD (i_rma);
5376 if (UNLIKELY(current_cpu->trace_result_p))
5377 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5378 * FLD (i_rma) = opval;
5382 current_cpu->done_insn (npc, status);
5387 // ********** lmcpi: lmcpi $crn64,($rma+)
5390 mepcore1_sem_lmcpi (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5392 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5393 sem_status status = SEM_STATUS_NORMAL;
5394 mepcore1_scache* abuf = sem;
5395 unsigned long long written = 0;
5396 PCADDR pc = abuf->addr;
5397 PCADDR npc = pc + 2;
5400 current_cpu->check_option_cp (pc);
5401 current_cpu->check_option_cp64 (pc);
5403 DI opval = current_cpu->do_lmcpi (FLD (f_rm), pc);
5404 if (UNLIKELY(current_cpu->trace_result_p))
5405 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5406 current_cpu->h_cr64_set (FLD (f_crn), opval);
5409 SI opval = * FLD (i_rma);
5410 if (UNLIKELY(current_cpu->trace_result_p))
5411 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5412 * FLD (i_rma) = opval;
5416 current_cpu->done_insn (npc, status);
5421 // ********** swcp16: swcp $crn,$sdisp16($rma)
5424 mepcore1_sem_swcp16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5426 #define FLD(f) abuf->fields.sfmt_swcp16.f
5427 sem_status status = SEM_STATUS_NORMAL;
5428 mepcore1_scache* abuf = sem;
5429 unsigned long long written = 0;
5430 PCADDR pc = abuf->addr;
5431 PCADDR npc = pc + 4;
5434 current_cpu->check_option_cp (pc);
5436 SI opval = current_cpu->h_cr_get (FLD (f_crn));
5437 if (UNLIKELY(current_cpu->trace_result_p))
5438 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (ADDSI (* FLD (i_rma), FLD (f_16s16)), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5439 current_cpu->SETMEMSI (pc, ANDSI (ADDSI (* FLD (i_rma), FLD (f_16s16)), INVSI (3)), opval);
5443 current_cpu->done_insn (npc, status);
5448 // ********** lwcp16: lwcp $crn,$sdisp16($rma)
5451 mepcore1_sem_lwcp16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5453 #define FLD(f) abuf->fields.sfmt_swcp16.f
5454 sem_status status = SEM_STATUS_NORMAL;
5455 mepcore1_scache* abuf = sem;
5456 unsigned long long written = 0;
5457 PCADDR pc = abuf->addr;
5458 PCADDR npc = pc + 4;
5461 current_cpu->check_option_cp (pc);
5463 SI opval = current_cpu->GETMEMSI (pc, ANDSI (ADDSI (* FLD (i_rma), FLD (f_16s16)), INVSI (3)));
5464 if (UNLIKELY(current_cpu->trace_result_p))
5465 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5466 current_cpu->h_cr_set (FLD (f_crn), opval);
5470 current_cpu->done_insn (npc, status);
5475 // ********** smcp16: smcp $crn64,$sdisp16($rma)
5478 mepcore1_sem_smcp16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5480 #define FLD(f) abuf->fields.sfmt_swcp16.f
5481 sem_status status = SEM_STATUS_NORMAL;
5482 mepcore1_scache* abuf = sem;
5483 unsigned long long written = 0;
5484 PCADDR pc = abuf->addr;
5485 PCADDR npc = pc + 4;
5488 current_cpu->check_option_cp (pc);
5489 current_cpu->check_option_cp64 (pc);
5490 current_cpu->do_smcp16 (* FLD (i_rma), FLD (f_16s16), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
5493 current_cpu->done_insn (npc, status);
5498 // ********** lmcp16: lmcp $crn64,$sdisp16($rma)
5501 mepcore1_sem_lmcp16 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5503 #define FLD(f) abuf->fields.sfmt_swcp16.f
5504 sem_status status = SEM_STATUS_NORMAL;
5505 mepcore1_scache* abuf = sem;
5506 unsigned long long written = 0;
5507 PCADDR pc = abuf->addr;
5508 PCADDR npc = pc + 4;
5511 current_cpu->check_option_cp (pc);
5512 current_cpu->check_option_cp64 (pc);
5514 DI opval = current_cpu->do_lmcp16 (* FLD (i_rma), FLD (f_16s16), pc);
5515 if (UNLIKELY(current_cpu->trace_result_p))
5516 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5517 current_cpu->h_cr64_set (FLD (f_crn), opval);
5521 current_cpu->done_insn (npc, status);
5526 // ********** sbcpa: sbcpa $crn,($rma+),$cdisp10
5529 mepcore1_sem_sbcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5531 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5532 sem_status status = SEM_STATUS_NORMAL;
5533 mepcore1_scache* abuf = sem;
5534 unsigned long long written = 0;
5535 PCADDR pc = abuf->addr;
5536 PCADDR npc = pc + 4;
5539 current_cpu->check_option_cp (pc);
5540 current_cpu->check_write_to_text (* FLD (i_rma));
5542 QI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 255);
5543 if (UNLIKELY(current_cpu->trace_result_p))
5544 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
5545 current_cpu->SETMEMQI (pc, * FLD (i_rma), opval);
5548 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5549 if (UNLIKELY(current_cpu->trace_result_p))
5550 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5551 * FLD (i_rma) = opval;
5555 current_cpu->done_insn (npc, status);
5560 // ********** lbcpa: lbcpa $crn,($rma+),$cdisp10
5563 mepcore1_sem_lbcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5565 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5566 sem_status status = SEM_STATUS_NORMAL;
5567 mepcore1_scache* abuf = sem;
5568 unsigned long long written = 0;
5569 PCADDR pc = abuf->addr;
5570 PCADDR npc = pc + 4;
5573 current_cpu->check_option_cp (pc);
5575 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
5576 if (UNLIKELY(current_cpu->trace_result_p))
5577 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5578 current_cpu->h_cr_set (FLD (f_crn), opval);
5581 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5582 if (UNLIKELY(current_cpu->trace_result_p))
5583 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5584 * FLD (i_rma) = opval;
5588 current_cpu->done_insn (npc, status);
5593 // ********** shcpa: shcpa $crn,($rma+),$cdisp10a2
5596 mepcore1_sem_shcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5598 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5599 sem_status status = SEM_STATUS_NORMAL;
5600 mepcore1_scache* abuf = sem;
5601 unsigned long long written = 0;
5602 PCADDR pc = abuf->addr;
5603 PCADDR npc = pc + 4;
5606 current_cpu->check_option_cp (pc);
5607 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (1)));
5609 HI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 65535);
5610 if (UNLIKELY(current_cpu->trace_result_p))
5611 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5612 current_cpu->SETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1)), opval);
5615 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5616 if (UNLIKELY(current_cpu->trace_result_p))
5617 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5618 * FLD (i_rma) = opval;
5622 current_cpu->done_insn (npc, status);
5627 // ********** lhcpa: lhcpa $crn,($rma+),$cdisp10a2
5630 mepcore1_sem_lhcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5632 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5633 sem_status status = SEM_STATUS_NORMAL;
5634 mepcore1_scache* abuf = sem;
5635 unsigned long long written = 0;
5636 PCADDR pc = abuf->addr;
5637 PCADDR npc = pc + 4;
5640 current_cpu->check_option_cp (pc);
5642 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
5643 if (UNLIKELY(current_cpu->trace_result_p))
5644 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5645 current_cpu->h_cr_set (FLD (f_crn), opval);
5648 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5649 if (UNLIKELY(current_cpu->trace_result_p))
5650 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5651 * FLD (i_rma) = opval;
5655 current_cpu->done_insn (npc, status);
5660 // ********** swcpa: swcpa $crn,($rma+),$cdisp10a4
5663 mepcore1_sem_swcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5665 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5666 sem_status status = SEM_STATUS_NORMAL;
5667 mepcore1_scache* abuf = sem;
5668 unsigned long long written = 0;
5669 PCADDR pc = abuf->addr;
5670 PCADDR npc = pc + 4;
5673 current_cpu->check_option_cp (pc);
5674 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
5676 SI opval = current_cpu->h_cr_get (FLD (f_crn));
5677 if (UNLIKELY(current_cpu->trace_result_p))
5678 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5679 current_cpu->SETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
5682 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5683 if (UNLIKELY(current_cpu->trace_result_p))
5684 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5685 * FLD (i_rma) = opval;
5689 current_cpu->done_insn (npc, status);
5694 // ********** lwcpa: lwcpa $crn,($rma+),$cdisp10a4
5697 mepcore1_sem_lwcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5699 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5700 sem_status status = SEM_STATUS_NORMAL;
5701 mepcore1_scache* abuf = sem;
5702 unsigned long long written = 0;
5703 PCADDR pc = abuf->addr;
5704 PCADDR npc = pc + 4;
5707 current_cpu->check_option_cp (pc);
5709 SI opval = current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)));
5710 if (UNLIKELY(current_cpu->trace_result_p))
5711 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5712 current_cpu->h_cr_set (FLD (f_crn), opval);
5715 SI opval = ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10)));
5716 if (UNLIKELY(current_cpu->trace_result_p))
5717 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5718 * FLD (i_rma) = opval;
5722 current_cpu->done_insn (npc, status);
5727 // ********** smcpa: smcpa $crn64,($rma+),$cdisp10a8
5730 mepcore1_sem_smcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5732 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5733 sem_status status = SEM_STATUS_NORMAL;
5734 mepcore1_scache* abuf = sem;
5735 unsigned long long written = 0;
5736 PCADDR pc = abuf->addr;
5737 PCADDR npc = pc + 4;
5740 current_cpu->check_option_cp (pc);
5741 current_cpu->check_option_cp64 (pc);
5742 current_cpu->check_write_to_text (* FLD (i_rma));
5743 current_cpu->do_smcpa (FLD (f_rm), FLD (f_cdisp10), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
5745 SI opval = * FLD (i_rma);
5746 if (UNLIKELY(current_cpu->trace_result_p))
5747 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5748 * FLD (i_rma) = opval;
5752 current_cpu->done_insn (npc, status);
5757 // ********** lmcpa: lmcpa $crn64,($rma+),$cdisp10a8
5760 mepcore1_sem_lmcpa (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5762 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
5763 sem_status status = SEM_STATUS_NORMAL;
5764 mepcore1_scache* abuf = sem;
5765 unsigned long long written = 0;
5766 PCADDR pc = abuf->addr;
5767 PCADDR npc = pc + 4;
5770 current_cpu->check_option_cp (pc);
5771 current_cpu->check_option_cp64 (pc);
5773 DI opval = current_cpu->do_lmcpa (FLD (f_rm), FLD (f_cdisp10), pc);
5774 if (UNLIKELY(current_cpu->trace_result_p))
5775 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5776 current_cpu->h_cr64_set (FLD (f_crn), opval);
5779 SI opval = * FLD (i_rma);
5780 if (UNLIKELY(current_cpu->trace_result_p))
5781 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5782 * FLD (i_rma) = opval;
5786 current_cpu->done_insn (npc, status);
5791 // ********** sbcpm0: sbcpm0 $crn,($rma+),$cdisp10
5794 mepcore1_sem_sbcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5796 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5797 sem_status status = SEM_STATUS_NORMAL;
5798 mepcore1_scache* abuf = sem;
5799 unsigned long long written = 0;
5800 PCADDR pc = abuf->addr;
5801 PCADDR npc = pc + 4;
5804 current_cpu->check_option_cp (pc);
5805 current_cpu->check_write_to_text (* FLD (i_rma));
5807 QI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 255);
5808 if (UNLIKELY(current_cpu->trace_result_p))
5809 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
5810 current_cpu->SETMEMQI (pc, * FLD (i_rma), opval);
5813 SI opval = ({ SI tmp_modulo_mask;
5814 tmp_modulo_mask = ({ SI tmp_temp;
5815 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
5816 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
5817 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
5818 if (UNLIKELY(current_cpu->trace_result_p))
5819 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5820 * FLD (i_rma) = opval;
5824 current_cpu->done_insn (npc, status);
5829 // ********** lbcpm0: lbcpm0 $crn,($rma+),$cdisp10
5832 mepcore1_sem_lbcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5834 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5835 sem_status status = SEM_STATUS_NORMAL;
5836 mepcore1_scache* abuf = sem;
5837 unsigned long long written = 0;
5838 PCADDR pc = abuf->addr;
5839 PCADDR npc = pc + 4;
5842 current_cpu->check_option_cp (pc);
5844 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
5845 if (UNLIKELY(current_cpu->trace_result_p))
5846 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5847 current_cpu->h_cr_set (FLD (f_crn), opval);
5850 SI opval = ({ SI tmp_modulo_mask;
5851 tmp_modulo_mask = ({ SI tmp_temp;
5852 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
5853 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
5854 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
5855 if (UNLIKELY(current_cpu->trace_result_p))
5856 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5857 * FLD (i_rma) = opval;
5861 current_cpu->done_insn (npc, status);
5866 // ********** shcpm0: shcpm0 $crn,($rma+),$cdisp10a2
5869 mepcore1_sem_shcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5871 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5872 sem_status status = SEM_STATUS_NORMAL;
5873 mepcore1_scache* abuf = sem;
5874 unsigned long long written = 0;
5875 PCADDR pc = abuf->addr;
5876 PCADDR npc = pc + 4;
5879 current_cpu->check_option_cp (pc);
5880 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (1)));
5882 HI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 65535);
5883 if (UNLIKELY(current_cpu->trace_result_p))
5884 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5885 current_cpu->SETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1)), opval);
5888 SI opval = ({ SI tmp_modulo_mask;
5889 tmp_modulo_mask = ({ SI tmp_temp;
5890 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
5891 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
5892 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
5893 if (UNLIKELY(current_cpu->trace_result_p))
5894 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5895 * FLD (i_rma) = opval;
5899 current_cpu->done_insn (npc, status);
5904 // ********** lhcpm0: lhcpm0 $crn,($rma+),$cdisp10a2
5907 mepcore1_sem_lhcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5909 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5910 sem_status status = SEM_STATUS_NORMAL;
5911 mepcore1_scache* abuf = sem;
5912 unsigned long long written = 0;
5913 PCADDR pc = abuf->addr;
5914 PCADDR npc = pc + 4;
5917 current_cpu->check_option_cp (pc);
5919 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
5920 if (UNLIKELY(current_cpu->trace_result_p))
5921 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5922 current_cpu->h_cr_set (FLD (f_crn), opval);
5925 SI opval = ({ SI tmp_modulo_mask;
5926 tmp_modulo_mask = ({ SI tmp_temp;
5927 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
5928 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
5929 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
5930 if (UNLIKELY(current_cpu->trace_result_p))
5931 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5932 * FLD (i_rma) = opval;
5936 current_cpu->done_insn (npc, status);
5941 // ********** swcpm0: swcpm0 $crn,($rma+),$cdisp10a4
5944 mepcore1_sem_swcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5946 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5947 sem_status status = SEM_STATUS_NORMAL;
5948 mepcore1_scache* abuf = sem;
5949 unsigned long long written = 0;
5950 PCADDR pc = abuf->addr;
5951 PCADDR npc = pc + 4;
5954 current_cpu->check_option_cp (pc);
5955 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
5957 SI opval = current_cpu->h_cr_get (FLD (f_crn));
5958 if (UNLIKELY(current_cpu->trace_result_p))
5959 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
5960 current_cpu->SETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
5963 SI opval = ({ SI tmp_modulo_mask;
5964 tmp_modulo_mask = ({ SI tmp_temp;
5965 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
5966 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
5967 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
5968 if (UNLIKELY(current_cpu->trace_result_p))
5969 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
5970 * FLD (i_rma) = opval;
5974 current_cpu->done_insn (npc, status);
5979 // ********** lwcpm0: lwcpm0 $crn,($rma+),$cdisp10a4
5982 mepcore1_sem_lwcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
5984 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
5985 sem_status status = SEM_STATUS_NORMAL;
5986 mepcore1_scache* abuf = sem;
5987 unsigned long long written = 0;
5988 PCADDR pc = abuf->addr;
5989 PCADDR npc = pc + 4;
5992 current_cpu->check_option_cp (pc);
5994 SI opval = current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)));
5995 if (UNLIKELY(current_cpu->trace_result_p))
5996 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
5997 current_cpu->h_cr_set (FLD (f_crn), opval);
6000 SI opval = ({ SI tmp_modulo_mask;
6001 tmp_modulo_mask = ({ SI tmp_temp;
6002 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
6003 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6004 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6005 if (UNLIKELY(current_cpu->trace_result_p))
6006 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6007 * FLD (i_rma) = opval;
6011 current_cpu->done_insn (npc, status);
6016 // ********** smcpm0: smcpm0 $crn64,($rma+),$cdisp10a8
6019 mepcore1_sem_smcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6021 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
6022 sem_status status = SEM_STATUS_NORMAL;
6023 mepcore1_scache* abuf = sem;
6024 unsigned long long written = 0;
6025 PCADDR pc = abuf->addr;
6026 PCADDR npc = pc + 4;
6029 current_cpu->check_option_cp (pc);
6030 current_cpu->check_option_cp64 (pc);
6031 current_cpu->check_write_to_text (* FLD (i_rma));
6032 current_cpu->do_smcp (* FLD (i_rma), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
6034 SI opval = ({ SI tmp_modulo_mask;
6035 tmp_modulo_mask = ({ SI tmp_temp;
6036 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
6037 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6038 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6039 if (UNLIKELY(current_cpu->trace_result_p))
6040 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6041 * FLD (i_rma) = opval;
6045 current_cpu->done_insn (npc, status);
6050 // ********** lmcpm0: lmcpm0 $crn64,($rma+),$cdisp10a8
6053 mepcore1_sem_lmcpm0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6055 #define FLD(f) abuf->fields.sfmt_lbucpm0.f
6056 sem_status status = SEM_STATUS_NORMAL;
6057 mepcore1_scache* abuf = sem;
6058 unsigned long long written = 0;
6059 PCADDR pc = abuf->addr;
6060 PCADDR npc = pc + 4;
6063 current_cpu->check_option_cp (pc);
6064 current_cpu->check_option_cp64 (pc);
6066 DI opval = current_cpu->do_lmcp (* FLD (i_rma), pc);
6067 if (UNLIKELY(current_cpu->trace_result_p))
6068 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
6069 current_cpu->h_cr64_set (FLD (f_crn), opval);
6072 SI opval = ({ SI tmp_modulo_mask;
6073 tmp_modulo_mask = ({ SI tmp_temp;
6074 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 12)), current_cpu->h_csr_get (((UINT) 13)));
6075 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6076 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 13)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 12)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6077 if (UNLIKELY(current_cpu->trace_result_p))
6078 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6079 * FLD (i_rma) = opval;
6083 current_cpu->done_insn (npc, status);
6088 // ********** sbcpm1: sbcpm1 $crn,($rma+),$cdisp10
6091 mepcore1_sem_sbcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6093 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6094 sem_status status = SEM_STATUS_NORMAL;
6095 mepcore1_scache* abuf = sem;
6096 unsigned long long written = 0;
6097 PCADDR pc = abuf->addr;
6098 PCADDR npc = pc + 4;
6101 current_cpu->check_option_cp (pc);
6102 current_cpu->check_write_to_text (* FLD (i_rma));
6104 QI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 255);
6105 if (UNLIKELY(current_cpu->trace_result_p))
6106 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) * FLD (i_rma) << dec << ']' << ":=0x" << hex << (SI) opval << dec << " ";
6107 current_cpu->SETMEMQI (pc, * FLD (i_rma), opval);
6110 SI opval = ({ SI tmp_modulo_mask;
6111 tmp_modulo_mask = ({ SI tmp_temp;
6112 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6113 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6114 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6115 if (UNLIKELY(current_cpu->trace_result_p))
6116 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6117 * FLD (i_rma) = opval;
6121 current_cpu->done_insn (npc, status);
6126 // ********** lbcpm1: lbcpm1 $crn,($rma+),$cdisp10
6129 mepcore1_sem_lbcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6131 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6132 sem_status status = SEM_STATUS_NORMAL;
6133 mepcore1_scache* abuf = sem;
6134 unsigned long long written = 0;
6135 PCADDR pc = abuf->addr;
6136 PCADDR npc = pc + 4;
6139 current_cpu->check_option_cp (pc);
6141 SI opval = EXTQISI (current_cpu->GETMEMQI (pc, * FLD (i_rma)));
6142 if (UNLIKELY(current_cpu->trace_result_p))
6143 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
6144 current_cpu->h_cr_set (FLD (f_crn), opval);
6147 SI opval = ({ SI tmp_modulo_mask;
6148 tmp_modulo_mask = ({ SI tmp_temp;
6149 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6150 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6151 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6152 if (UNLIKELY(current_cpu->trace_result_p))
6153 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6154 * FLD (i_rma) = opval;
6158 current_cpu->done_insn (npc, status);
6163 // ********** shcpm1: shcpm1 $crn,($rma+),$cdisp10a2
6166 mepcore1_sem_shcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6168 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6169 sem_status status = SEM_STATUS_NORMAL;
6170 mepcore1_scache* abuf = sem;
6171 unsigned long long written = 0;
6172 PCADDR pc = abuf->addr;
6173 PCADDR npc = pc + 4;
6176 current_cpu->check_option_cp (pc);
6177 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (1)));
6179 HI opval = ANDSI (current_cpu->h_cr_get (FLD (f_crn)), 65535);
6180 if (UNLIKELY(current_cpu->trace_result_p))
6181 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (1)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
6182 current_cpu->SETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1)), opval);
6185 SI opval = ({ SI tmp_modulo_mask;
6186 tmp_modulo_mask = ({ SI tmp_temp;
6187 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6188 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6189 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6190 if (UNLIKELY(current_cpu->trace_result_p))
6191 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6192 * FLD (i_rma) = opval;
6196 current_cpu->done_insn (npc, status);
6201 // ********** lhcpm1: lhcpm1 $crn,($rma+),$cdisp10a2
6204 mepcore1_sem_lhcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6206 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6207 sem_status status = SEM_STATUS_NORMAL;
6208 mepcore1_scache* abuf = sem;
6209 unsigned long long written = 0;
6210 PCADDR pc = abuf->addr;
6211 PCADDR npc = pc + 4;
6214 current_cpu->check_option_cp (pc);
6216 SI opval = EXTHISI (current_cpu->GETMEMHI (pc, ANDSI (* FLD (i_rma), INVSI (1))));
6217 if (UNLIKELY(current_cpu->trace_result_p))
6218 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
6219 current_cpu->h_cr_set (FLD (f_crn), opval);
6222 SI opval = ({ SI tmp_modulo_mask;
6223 tmp_modulo_mask = ({ SI tmp_temp;
6224 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6225 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6226 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6227 if (UNLIKELY(current_cpu->trace_result_p))
6228 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6229 * FLD (i_rma) = opval;
6233 current_cpu->done_insn (npc, status);
6238 // ********** swcpm1: swcpm1 $crn,($rma+),$cdisp10a4
6241 mepcore1_sem_swcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6243 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6244 sem_status status = SEM_STATUS_NORMAL;
6245 mepcore1_scache* abuf = sem;
6246 unsigned long long written = 0;
6247 PCADDR pc = abuf->addr;
6248 PCADDR npc = pc + 4;
6251 current_cpu->check_option_cp (pc);
6252 current_cpu->check_write_to_text (ANDSI (* FLD (i_rma), INVSI (3)));
6254 SI opval = current_cpu->h_cr_get (FLD (f_crn));
6255 if (UNLIKELY(current_cpu->trace_result_p))
6256 current_cpu->trace_stream << "memory" << '[' << "0x" << hex << (UDI) ANDSI (* FLD (i_rma), INVSI (3)) << dec << ']' << ":=0x" << hex << opval << dec << " ";
6257 current_cpu->SETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3)), opval);
6260 SI opval = ({ SI tmp_modulo_mask;
6261 tmp_modulo_mask = ({ SI tmp_temp;
6262 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6263 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6264 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6265 if (UNLIKELY(current_cpu->trace_result_p))
6266 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6267 * FLD (i_rma) = opval;
6271 current_cpu->done_insn (npc, status);
6276 // ********** lwcpm1: lwcpm1 $crn,($rma+),$cdisp10a4
6279 mepcore1_sem_lwcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6281 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6282 sem_status status = SEM_STATUS_NORMAL;
6283 mepcore1_scache* abuf = sem;
6284 unsigned long long written = 0;
6285 PCADDR pc = abuf->addr;
6286 PCADDR npc = pc + 4;
6289 current_cpu->check_option_cp (pc);
6291 SI opval = EXTSISI (current_cpu->GETMEMSI (pc, ANDSI (* FLD (i_rma), INVSI (3))));
6292 if (UNLIKELY(current_cpu->trace_result_p))
6293 current_cpu->trace_stream << "cr" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
6294 current_cpu->h_cr_set (FLD (f_crn), opval);
6297 SI opval = ({ SI tmp_modulo_mask;
6298 tmp_modulo_mask = ({ SI tmp_temp;
6299 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6300 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6301 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6302 if (UNLIKELY(current_cpu->trace_result_p))
6303 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6304 * FLD (i_rma) = opval;
6308 current_cpu->done_insn (npc, status);
6313 // ********** smcpm1: smcpm1 $crn64,($rma+),$cdisp10a8
6316 mepcore1_sem_smcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6318 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6319 sem_status status = SEM_STATUS_NORMAL;
6320 mepcore1_scache* abuf = sem;
6321 unsigned long long written = 0;
6322 PCADDR pc = abuf->addr;
6323 PCADDR npc = pc + 4;
6326 current_cpu->check_option_cp (pc);
6327 current_cpu->check_option_cp64 (pc);
6328 current_cpu->do_smcp (* FLD (i_rma), current_cpu->hardware.h_cr64[FLD (f_crn)], pc);
6329 current_cpu->check_write_to_text (* FLD (i_rma));
6331 SI opval = ({ SI tmp_modulo_mask;
6332 tmp_modulo_mask = ({ SI tmp_temp;
6333 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6334 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6335 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6336 if (UNLIKELY(current_cpu->trace_result_p))
6337 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6338 * FLD (i_rma) = opval;
6342 current_cpu->done_insn (npc, status);
6347 // ********** lmcpm1: lmcpm1 $crn64,($rma+),$cdisp10a8
6350 mepcore1_sem_lmcpm1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6352 #define FLD(f) abuf->fields.sfmt_lbucpm1.f
6353 sem_status status = SEM_STATUS_NORMAL;
6354 mepcore1_scache* abuf = sem;
6355 unsigned long long written = 0;
6356 PCADDR pc = abuf->addr;
6357 PCADDR npc = pc + 4;
6360 current_cpu->check_option_cp (pc);
6361 current_cpu->check_option_cp64 (pc);
6363 DI opval = current_cpu->do_lmcp (* FLD (i_rma), pc);
6364 if (UNLIKELY(current_cpu->trace_result_p))
6365 current_cpu->trace_stream << "cr64" << '[' << FLD (f_crn) << ']' << ":=0x" << hex << opval << dec << " ";
6366 current_cpu->h_cr64_set (FLD (f_crn), opval);
6369 SI opval = ({ SI tmp_modulo_mask;
6370 tmp_modulo_mask = ({ SI tmp_temp;
6371 tmp_temp = ORSI (current_cpu->h_csr_get (((UINT) 14)), current_cpu->h_csr_get (((UINT) 15)));
6372 ; SRLSI (-1, current_cpu->do_ldz (tmp_temp)); });
6373 ; ((EQSI (ANDSI (* FLD (i_rma), tmp_modulo_mask), current_cpu->h_csr_get (((UINT) 15)))) ? (ORSI (ANDSI (* FLD (i_rma), INVSI (tmp_modulo_mask)), current_cpu->h_csr_get (((UINT) 14)))) : (ADDSI (* FLD (i_rma), EXTSISI (FLD (f_cdisp10))))); });
6374 if (UNLIKELY(current_cpu->trace_result_p))
6375 current_cpu->trace_stream << "gpr" << '[' << FLD (f_rm) << ']' << ":=0x" << hex << opval << dec << " ";
6376 * FLD (i_rma) = opval;
6380 current_cpu->done_insn (npc, status);
6385 // ********** bcpeq: bcpeq $cccc,$pcrel17a2
6388 mepcore1_sem_bcpeq (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6390 #define FLD(f) abuf->fields.sfmt_beq.f
6391 sem_status status = SEM_STATUS_NORMAL;
6392 mepcore1_scache* abuf = sem;
6393 unsigned long long written = 0;
6394 PCADDR pc = abuf->addr;
6395 PCADDR npc = pc + 4;
6398 current_cpu->check_option_cp (pc);
6399 if (EQSI (XORSI (FLD (f_rm), current_cpu->hardware.h_ccr[((UINT) 1)]), 0)) {
6400 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6402 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
6403 written |= (1ULL << 6);
6404 if (UNLIKELY(current_cpu->trace_result_p))
6405 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6406 current_cpu->branch (opval, npc, status);
6409 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6411 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
6412 written |= (1ULL << 6);
6413 if (UNLIKELY(current_cpu->trace_result_p))
6414 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6415 current_cpu->branch (opval, npc, status);
6420 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
6421 written |= (1ULL << 6);
6422 if (UNLIKELY(current_cpu->trace_result_p))
6423 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6424 current_cpu->branch (opval, npc, status);
6430 abuf->written = written;
6431 current_cpu->done_cti_insn (npc, status);
6436 // ********** bcpne: bcpne $cccc,$pcrel17a2
6439 mepcore1_sem_bcpne (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6441 #define FLD(f) abuf->fields.sfmt_beq.f
6442 sem_status status = SEM_STATUS_NORMAL;
6443 mepcore1_scache* abuf = sem;
6444 unsigned long long written = 0;
6445 PCADDR pc = abuf->addr;
6446 PCADDR npc = pc + 4;
6449 current_cpu->check_option_cp (pc);
6450 if (NESI (XORSI (FLD (f_rm), current_cpu->hardware.h_ccr[((UINT) 1)]), 0)) {
6451 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6453 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
6454 written |= (1ULL << 6);
6455 if (UNLIKELY(current_cpu->trace_result_p))
6456 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6457 current_cpu->branch (opval, npc, status);
6460 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6462 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
6463 written |= (1ULL << 6);
6464 if (UNLIKELY(current_cpu->trace_result_p))
6465 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6466 current_cpu->branch (opval, npc, status);
6471 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
6472 written |= (1ULL << 6);
6473 if (UNLIKELY(current_cpu->trace_result_p))
6474 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6475 current_cpu->branch (opval, npc, status);
6481 abuf->written = written;
6482 current_cpu->done_cti_insn (npc, status);
6487 // ********** bcpat: bcpat $cccc,$pcrel17a2
6490 mepcore1_sem_bcpat (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6492 #define FLD(f) abuf->fields.sfmt_beq.f
6493 sem_status status = SEM_STATUS_NORMAL;
6494 mepcore1_scache* abuf = sem;
6495 unsigned long long written = 0;
6496 PCADDR pc = abuf->addr;
6497 PCADDR npc = pc + 4;
6500 current_cpu->check_option_cp (pc);
6501 if (NESI (ANDSI (FLD (f_rm), current_cpu->hardware.h_ccr[((UINT) 1)]), 0)) {
6502 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6504 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
6505 written |= (1ULL << 6);
6506 if (UNLIKELY(current_cpu->trace_result_p))
6507 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6508 current_cpu->branch (opval, npc, status);
6511 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6513 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
6514 written |= (1ULL << 6);
6515 if (UNLIKELY(current_cpu->trace_result_p))
6516 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6517 current_cpu->branch (opval, npc, status);
6522 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
6523 written |= (1ULL << 6);
6524 if (UNLIKELY(current_cpu->trace_result_p))
6525 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6526 current_cpu->branch (opval, npc, status);
6532 abuf->written = written;
6533 current_cpu->done_cti_insn (npc, status);
6538 // ********** bcpaf: bcpaf $cccc,$pcrel17a2
6541 mepcore1_sem_bcpaf (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6543 #define FLD(f) abuf->fields.sfmt_beq.f
6544 sem_status status = SEM_STATUS_NORMAL;
6545 mepcore1_scache* abuf = sem;
6546 unsigned long long written = 0;
6547 PCADDR pc = abuf->addr;
6548 PCADDR npc = pc + 4;
6551 current_cpu->check_option_cp (pc);
6552 if (EQSI (ANDSI (FLD (f_rm), current_cpu->hardware.h_ccr[((UINT) 1)]), 0)) {
6553 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6555 USI opval = ANDSI (FLD (f_17s16a2), INVSI (7));
6556 written |= (1ULL << 6);
6557 if (UNLIKELY(current_cpu->trace_result_p))
6558 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6559 current_cpu->branch (opval, npc, status);
6562 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6564 USI opval = ANDSI (FLD (f_17s16a2), INVSI (3));
6565 written |= (1ULL << 6);
6566 if (UNLIKELY(current_cpu->trace_result_p))
6567 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6568 current_cpu->branch (opval, npc, status);
6573 USI opval = ANDSI (FLD (f_17s16a2), INVSI (1));
6574 written |= (1ULL << 6);
6575 if (UNLIKELY(current_cpu->trace_result_p))
6576 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6577 current_cpu->branch (opval, npc, status);
6583 abuf->written = written;
6584 current_cpu->done_cti_insn (npc, status);
6589 // ********** synccp: synccp
6592 mepcore1_sem_synccp (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6594 #define FLD(f) abuf->fields.fmt_empty.f
6595 sem_status status = SEM_STATUS_NORMAL;
6596 mepcore1_scache* abuf = sem;
6597 unsigned long long written = 0;
6598 PCADDR pc = abuf->addr;
6599 PCADDR npc = pc + 2;
6602 current_cpu->check_option_cp (pc);
6606 current_cpu->done_insn (npc, status);
6611 // ********** jsrv: jsrv $rm
6614 mepcore1_sem_jsrv (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6616 #define FLD(f) abuf->fields.sfmt_jsr.f
6617 sem_status status = SEM_STATUS_NORMAL;
6618 mepcore1_scache* abuf = sem;
6619 unsigned long long written = 0;
6620 PCADDR pc = abuf->addr;
6621 PCADDR npc = pc + 2;
6624 current_cpu->cg_profile (pc, * FLD (i_rm));
6625 current_cpu->check_option_cp (pc);
6626 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6629 SI opval = ORSI (ADDSI (pc, 8), 1);
6630 written |= (1ULL << 4);
6631 if (UNLIKELY(current_cpu->trace_result_p))
6632 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6633 current_cpu->h_csr_set (((UINT) 1), opval);
6636 USI opval = ANDSI (* FLD (i_rm), INVSI (1));
6637 written |= (1ULL << 5);
6638 if (UNLIKELY(current_cpu->trace_result_p))
6639 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6640 current_cpu->branch (opval, npc, status);
6642 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
6645 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6648 SI opval = ORSI (ADDSI (pc, 4), 1);
6649 written |= (1ULL << 4);
6650 if (UNLIKELY(current_cpu->trace_result_p))
6651 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6652 current_cpu->h_csr_set (((UINT) 1), opval);
6655 USI opval = ANDSI (* FLD (i_rm), INVSI (1));
6656 written |= (1ULL << 5);
6657 if (UNLIKELY(current_cpu->trace_result_p))
6658 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6659 current_cpu->branch (opval, npc, status);
6661 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
6667 SI opval = ORSI (ADDSI (pc, 2), 1);
6668 written |= (1ULL << 4);
6669 if (UNLIKELY(current_cpu->trace_result_p))
6670 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6671 current_cpu->h_csr_set (((UINT) 1), opval);
6673 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
6675 USI opval = ANDSI (* FLD (i_rm), INVSI (3));
6676 written |= (1ULL << 5);
6677 if (UNLIKELY(current_cpu->trace_result_p))
6678 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6679 current_cpu->branch (opval, npc, status);
6683 USI opval = ANDSI (* FLD (i_rm), INVSI (7));
6684 written |= (1ULL << 5);
6685 if (UNLIKELY(current_cpu->trace_result_p))
6686 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6687 current_cpu->branch (opval, npc, status);
6690 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
6695 abuf->written = written;
6696 current_cpu->done_cti_insn (npc, status);
6701 // ********** bsrv: bsrv $pcrel24a2
6704 mepcore1_sem_bsrv (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6706 #define FLD(f) abuf->fields.sfmt_bsr24.f
6707 sem_status status = SEM_STATUS_NORMAL;
6708 mepcore1_scache* abuf = sem;
6709 unsigned long long written = 0;
6710 PCADDR pc = abuf->addr;
6711 PCADDR npc = pc + 4;
6714 current_cpu->cg_profile (pc, FLD (f_24s5a2n));
6715 current_cpu->check_option_cp (pc);
6716 if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 6), 1))) {
6719 SI opval = ORSI (ADDSI (pc, 8), 1);
6720 written |= (1ULL << 4);
6721 if (UNLIKELY(current_cpu->trace_result_p))
6722 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6723 current_cpu->h_csr_set (((UINT) 1), opval);
6726 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (1));
6727 written |= (1ULL << 5);
6728 if (UNLIKELY(current_cpu->trace_result_p))
6729 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6730 current_cpu->branch (opval, npc, status);
6732 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
6735 else if (ANDIF (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 16)), 12), 1), ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1))) {
6738 SI opval = ORSI (ADDSI (pc, 4), 1);
6739 written |= (1ULL << 4);
6740 if (UNLIKELY(current_cpu->trace_result_p))
6741 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6742 current_cpu->h_csr_set (((UINT) 1), opval);
6745 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (1));
6746 written |= (1ULL << 5);
6747 if (UNLIKELY(current_cpu->trace_result_p))
6748 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6749 current_cpu->branch (opval, npc, status);
6751 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (0, 12)));
6757 SI opval = ORSI (ADDSI (pc, 4), 1);
6758 written |= (1ULL << 4);
6759 if (UNLIKELY(current_cpu->trace_result_p))
6760 current_cpu->trace_stream << "csr" << '[' << ((UINT) 1) << ']' << ":=0x" << hex << opval << dec << " ";
6761 current_cpu->h_csr_set (((UINT) 1), opval);
6763 if (ANDSI (SRLSI (current_cpu->h_csr_get (((UINT) 26)), 5), 1)) {
6765 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (3));
6766 written |= (1ULL << 5);
6767 if (UNLIKELY(current_cpu->trace_result_p))
6768 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6769 current_cpu->branch (opval, npc, status);
6773 USI opval = ANDSI (FLD (f_24s5a2n), INVSI (7));
6774 written |= (1ULL << 5);
6775 if (UNLIKELY(current_cpu->trace_result_p))
6776 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6777 current_cpu->branch (opval, npc, status);
6780 current_cpu->hardware.h_csr[((UINT) 16)] = ORSI (ANDSI (current_cpu->hardware.h_csr[((UINT) 16)], INVSI (SLLSI (1, 12))), ANDSI (SLLSI (1, 12), SLLSI (1, 12)));
6785 abuf->written = written;
6786 current_cpu->done_cti_insn (npc, status);
6791 // ********** sim-syscall: --syscall--
6794 mepcore1_sem_sim_syscall (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6796 #define FLD(f) abuf->fields.sfmt_sim_syscall.f
6797 sem_status status = SEM_STATUS_NORMAL;
6798 mepcore1_scache* abuf = sem;
6799 unsigned long long written = 0;
6800 PCADDR pc = abuf->addr;
6801 PCADDR npc = pc + 2;
6803 current_cpu->do_syscall (pc, FLD (f_callnum));
6805 current_cpu->done_insn (npc, status);
6810 // ********** ri-0: --reserved--
6813 mepcore1_sem_ri_0 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6815 #define FLD(f) abuf->fields.fmt_empty.f
6816 sem_status status = SEM_STATUS_NORMAL;
6817 mepcore1_scache* abuf = sem;
6818 unsigned long long written = 0;
6819 PCADDR pc = abuf->addr;
6820 PCADDR npc = pc + 2;
6823 USI opval = current_cpu->ri_exception (pc);
6824 if (UNLIKELY(current_cpu->trace_result_p))
6825 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6826 current_cpu->branch (opval, npc, status);
6829 current_cpu->done_cti_insn (npc, status);
6834 // ********** ri-1: --reserved--
6837 mepcore1_sem_ri_1 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6839 #define FLD(f) abuf->fields.fmt_empty.f
6840 sem_status status = SEM_STATUS_NORMAL;
6841 mepcore1_scache* abuf = sem;
6842 unsigned long long written = 0;
6843 PCADDR pc = abuf->addr;
6844 PCADDR npc = pc + 2;
6847 USI opval = current_cpu->ri_exception (pc);
6848 if (UNLIKELY(current_cpu->trace_result_p))
6849 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6850 current_cpu->branch (opval, npc, status);
6853 current_cpu->done_cti_insn (npc, status);
6858 // ********** ri-2: --reserved--
6861 mepcore1_sem_ri_2 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6863 #define FLD(f) abuf->fields.fmt_empty.f
6864 sem_status status = SEM_STATUS_NORMAL;
6865 mepcore1_scache* abuf = sem;
6866 unsigned long long written = 0;
6867 PCADDR pc = abuf->addr;
6868 PCADDR npc = pc + 2;
6871 USI opval = current_cpu->ri_exception (pc);
6872 if (UNLIKELY(current_cpu->trace_result_p))
6873 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6874 current_cpu->branch (opval, npc, status);
6877 current_cpu->done_cti_insn (npc, status);
6882 // ********** ri-3: --reserved--
6885 mepcore1_sem_ri_3 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6887 #define FLD(f) abuf->fields.fmt_empty.f
6888 sem_status status = SEM_STATUS_NORMAL;
6889 mepcore1_scache* abuf = sem;
6890 unsigned long long written = 0;
6891 PCADDR pc = abuf->addr;
6892 PCADDR npc = pc + 2;
6895 USI opval = current_cpu->ri_exception (pc);
6896 if (UNLIKELY(current_cpu->trace_result_p))
6897 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6898 current_cpu->branch (opval, npc, status);
6901 current_cpu->done_cti_insn (npc, status);
6906 // ********** ri-4: --reserved--
6909 mepcore1_sem_ri_4 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6911 #define FLD(f) abuf->fields.fmt_empty.f
6912 sem_status status = SEM_STATUS_NORMAL;
6913 mepcore1_scache* abuf = sem;
6914 unsigned long long written = 0;
6915 PCADDR pc = abuf->addr;
6916 PCADDR npc = pc + 2;
6919 USI opval = current_cpu->ri_exception (pc);
6920 if (UNLIKELY(current_cpu->trace_result_p))
6921 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6922 current_cpu->branch (opval, npc, status);
6925 current_cpu->done_cti_insn (npc, status);
6930 // ********** ri-5: --reserved--
6933 mepcore1_sem_ri_5 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6935 #define FLD(f) abuf->fields.fmt_empty.f
6936 sem_status status = SEM_STATUS_NORMAL;
6937 mepcore1_scache* abuf = sem;
6938 unsigned long long written = 0;
6939 PCADDR pc = abuf->addr;
6940 PCADDR npc = pc + 2;
6943 USI opval = current_cpu->ri_exception (pc);
6944 if (UNLIKELY(current_cpu->trace_result_p))
6945 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6946 current_cpu->branch (opval, npc, status);
6949 current_cpu->done_cti_insn (npc, status);
6954 // ********** ri-6: --reserved--
6957 mepcore1_sem_ri_6 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6959 #define FLD(f) abuf->fields.fmt_empty.f
6960 sem_status status = SEM_STATUS_NORMAL;
6961 mepcore1_scache* abuf = sem;
6962 unsigned long long written = 0;
6963 PCADDR pc = abuf->addr;
6964 PCADDR npc = pc + 2;
6967 USI opval = current_cpu->ri_exception (pc);
6968 if (UNLIKELY(current_cpu->trace_result_p))
6969 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6970 current_cpu->branch (opval, npc, status);
6973 current_cpu->done_cti_insn (npc, status);
6978 // ********** ri-7: --reserved--
6981 mepcore1_sem_ri_7 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
6983 #define FLD(f) abuf->fields.fmt_empty.f
6984 sem_status status = SEM_STATUS_NORMAL;
6985 mepcore1_scache* abuf = sem;
6986 unsigned long long written = 0;
6987 PCADDR pc = abuf->addr;
6988 PCADDR npc = pc + 2;
6991 USI opval = current_cpu->ri_exception (pc);
6992 if (UNLIKELY(current_cpu->trace_result_p))
6993 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
6994 current_cpu->branch (opval, npc, status);
6997 current_cpu->done_cti_insn (npc, status);
7002 // ********** ri-8: --reserved--
7005 mepcore1_sem_ri_8 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7007 #define FLD(f) abuf->fields.fmt_empty.f
7008 sem_status status = SEM_STATUS_NORMAL;
7009 mepcore1_scache* abuf = sem;
7010 unsigned long long written = 0;
7011 PCADDR pc = abuf->addr;
7012 PCADDR npc = pc + 2;
7015 USI opval = current_cpu->ri_exception (pc);
7016 if (UNLIKELY(current_cpu->trace_result_p))
7017 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7018 current_cpu->branch (opval, npc, status);
7021 current_cpu->done_cti_insn (npc, status);
7026 // ********** ri-9: --reserved--
7029 mepcore1_sem_ri_9 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7031 #define FLD(f) abuf->fields.fmt_empty.f
7032 sem_status status = SEM_STATUS_NORMAL;
7033 mepcore1_scache* abuf = sem;
7034 unsigned long long written = 0;
7035 PCADDR pc = abuf->addr;
7036 PCADDR npc = pc + 2;
7039 USI opval = current_cpu->ri_exception (pc);
7040 if (UNLIKELY(current_cpu->trace_result_p))
7041 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7042 current_cpu->branch (opval, npc, status);
7045 current_cpu->done_cti_insn (npc, status);
7050 // ********** ri-10: --reserved--
7053 mepcore1_sem_ri_10 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7055 #define FLD(f) abuf->fields.fmt_empty.f
7056 sem_status status = SEM_STATUS_NORMAL;
7057 mepcore1_scache* abuf = sem;
7058 unsigned long long written = 0;
7059 PCADDR pc = abuf->addr;
7060 PCADDR npc = pc + 2;
7063 USI opval = current_cpu->ri_exception (pc);
7064 if (UNLIKELY(current_cpu->trace_result_p))
7065 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7066 current_cpu->branch (opval, npc, status);
7069 current_cpu->done_cti_insn (npc, status);
7074 // ********** ri-11: --reserved--
7077 mepcore1_sem_ri_11 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7079 #define FLD(f) abuf->fields.fmt_empty.f
7080 sem_status status = SEM_STATUS_NORMAL;
7081 mepcore1_scache* abuf = sem;
7082 unsigned long long written = 0;
7083 PCADDR pc = abuf->addr;
7084 PCADDR npc = pc + 2;
7087 USI opval = current_cpu->ri_exception (pc);
7088 if (UNLIKELY(current_cpu->trace_result_p))
7089 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7090 current_cpu->branch (opval, npc, status);
7093 current_cpu->done_cti_insn (npc, status);
7098 // ********** ri-12: --reserved--
7101 mepcore1_sem_ri_12 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7103 #define FLD(f) abuf->fields.fmt_empty.f
7104 sem_status status = SEM_STATUS_NORMAL;
7105 mepcore1_scache* abuf = sem;
7106 unsigned long long written = 0;
7107 PCADDR pc = abuf->addr;
7108 PCADDR npc = pc + 2;
7111 USI opval = current_cpu->ri_exception (pc);
7112 if (UNLIKELY(current_cpu->trace_result_p))
7113 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7114 current_cpu->branch (opval, npc, status);
7117 current_cpu->done_cti_insn (npc, status);
7122 // ********** ri-13: --reserved--
7125 mepcore1_sem_ri_13 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7127 #define FLD(f) abuf->fields.fmt_empty.f
7128 sem_status status = SEM_STATUS_NORMAL;
7129 mepcore1_scache* abuf = sem;
7130 unsigned long long written = 0;
7131 PCADDR pc = abuf->addr;
7132 PCADDR npc = pc + 2;
7135 USI opval = current_cpu->ri_exception (pc);
7136 if (UNLIKELY(current_cpu->trace_result_p))
7137 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7138 current_cpu->branch (opval, npc, status);
7141 current_cpu->done_cti_insn (npc, status);
7146 // ********** ri-14: --reserved--
7149 mepcore1_sem_ri_14 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7151 #define FLD(f) abuf->fields.fmt_empty.f
7152 sem_status status = SEM_STATUS_NORMAL;
7153 mepcore1_scache* abuf = sem;
7154 unsigned long long written = 0;
7155 PCADDR pc = abuf->addr;
7156 PCADDR npc = pc + 2;
7159 USI opval = current_cpu->ri_exception (pc);
7160 if (UNLIKELY(current_cpu->trace_result_p))
7161 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7162 current_cpu->branch (opval, npc, status);
7165 current_cpu->done_cti_insn (npc, status);
7170 // ********** ri-15: --reserved--
7173 mepcore1_sem_ri_15 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7175 #define FLD(f) abuf->fields.fmt_empty.f
7176 sem_status status = SEM_STATUS_NORMAL;
7177 mepcore1_scache* abuf = sem;
7178 unsigned long long written = 0;
7179 PCADDR pc = abuf->addr;
7180 PCADDR npc = pc + 2;
7183 USI opval = current_cpu->ri_exception (pc);
7184 if (UNLIKELY(current_cpu->trace_result_p))
7185 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7186 current_cpu->branch (opval, npc, status);
7189 current_cpu->done_cti_insn (npc, status);
7194 // ********** ri-17: --reserved--
7197 mepcore1_sem_ri_17 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7199 #define FLD(f) abuf->fields.fmt_empty.f
7200 sem_status status = SEM_STATUS_NORMAL;
7201 mepcore1_scache* abuf = sem;
7202 unsigned long long written = 0;
7203 PCADDR pc = abuf->addr;
7204 PCADDR npc = pc + 2;
7207 USI opval = current_cpu->ri_exception (pc);
7208 if (UNLIKELY(current_cpu->trace_result_p))
7209 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7210 current_cpu->branch (opval, npc, status);
7213 current_cpu->done_cti_insn (npc, status);
7218 // ********** ri-20: --reserved--
7221 mepcore1_sem_ri_20 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7223 #define FLD(f) abuf->fields.fmt_empty.f
7224 sem_status status = SEM_STATUS_NORMAL;
7225 mepcore1_scache* abuf = sem;
7226 unsigned long long written = 0;
7227 PCADDR pc = abuf->addr;
7228 PCADDR npc = pc + 2;
7231 USI opval = current_cpu->ri_exception (pc);
7232 if (UNLIKELY(current_cpu->trace_result_p))
7233 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7234 current_cpu->branch (opval, npc, status);
7237 current_cpu->done_cti_insn (npc, status);
7242 // ********** ri-21: --reserved--
7245 mepcore1_sem_ri_21 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7247 #define FLD(f) abuf->fields.fmt_empty.f
7248 sem_status status = SEM_STATUS_NORMAL;
7249 mepcore1_scache* abuf = sem;
7250 unsigned long long written = 0;
7251 PCADDR pc = abuf->addr;
7252 PCADDR npc = pc + 2;
7255 USI opval = current_cpu->ri_exception (pc);
7256 if (UNLIKELY(current_cpu->trace_result_p))
7257 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7258 current_cpu->branch (opval, npc, status);
7261 current_cpu->done_cti_insn (npc, status);
7266 // ********** ri-22: --reserved--
7269 mepcore1_sem_ri_22 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7271 #define FLD(f) abuf->fields.fmt_empty.f
7272 sem_status status = SEM_STATUS_NORMAL;
7273 mepcore1_scache* abuf = sem;
7274 unsigned long long written = 0;
7275 PCADDR pc = abuf->addr;
7276 PCADDR npc = pc + 2;
7279 USI opval = current_cpu->ri_exception (pc);
7280 if (UNLIKELY(current_cpu->trace_result_p))
7281 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7282 current_cpu->branch (opval, npc, status);
7285 current_cpu->done_cti_insn (npc, status);
7290 // ********** ri-23: --reserved--
7293 mepcore1_sem_ri_23 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7295 #define FLD(f) abuf->fields.fmt_empty.f
7296 sem_status status = SEM_STATUS_NORMAL;
7297 mepcore1_scache* abuf = sem;
7298 unsigned long long written = 0;
7299 PCADDR pc = abuf->addr;
7300 PCADDR npc = pc + 2;
7303 USI opval = current_cpu->ri_exception (pc);
7304 if (UNLIKELY(current_cpu->trace_result_p))
7305 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7306 current_cpu->branch (opval, npc, status);
7309 current_cpu->done_cti_insn (npc, status);
7314 // ********** ri-26: --reserved--
7317 mepcore1_sem_ri_26 (mep_ext1_cpu* current_cpu, mepcore1_scache* sem)
7319 #define FLD(f) abuf->fields.fmt_empty.f
7320 sem_status status = SEM_STATUS_NORMAL;
7321 mepcore1_scache* abuf = sem;
7322 unsigned long long written = 0;
7323 PCADDR pc = abuf->addr;
7324 PCADDR npc = pc + 2;
7327 USI opval = current_cpu->ri_exception (pc);
7328 if (UNLIKELY(current_cpu->trace_result_p))
7329 current_cpu->trace_stream << "pc" << ":=0x" << hex << opval << dec << " ";
7330 current_cpu->branch (opval, npc, status);
7333 current_cpu->done_cti_insn (npc, status);