31rd += R_rd_0.
read(ba) << 0;
34rs1 += R_rs1_0.
read(ba) << 0;
37imm += R_imm_0.
read(ba) << 0;
44 cp.
code() = std::string(
"//FLW\n");
47cp.
code() +=
"etiss_coverage_count(1, 88);\n";
49cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
50cp.
code() +=
"{ // block\n";
52cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
53cp.
code() +=
"} // block\n";
56cp.
code() +=
"etiss_coverage_count(1, 3450);\n";
57cp.
code() +=
"{ // block\n";
58cp.
code() +=
"etiss_uint32 offs = *((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL] + " + std::to_string(((
etiss_int16)(((
etiss_int16)imm) << (4)) >> (4))) +
"LL;\n";
59cp.
code() +=
"etiss_coverage_count(7, 3417, 3416, 3412, 3411, 3409, 3415, 3413);\n";
60cp.
code() +=
"etiss_uint32 mem_val_0;\n";
61cp.
code() +=
"cpu->exception |= (*(system->dread))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";
62cp.
code() +=
"if (cpu->exception) { // conditional\n";
64cp.
code() +=
"{ // procedure\n";
65cp.
code() +=
"RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";
67cp.
code() +=
"} // procedure\n";
69cp.
code() +=
"} // conditional\n";
70cp.
code() +=
"etiss_uint32 res = (etiss_uint32)(mem_val_0);\n";
71cp.
code() +=
"etiss_coverage_count(4, 3424, 3423, 3421, 3420);\n";
73cp.
code() +=
"etiss_coverage_count(1, 3449);\n";
74cp.
code() +=
"{ // block\n";
75cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
76cp.
code() +=
"etiss_coverage_count(6, 3448, 3436, 3435, 3447, 3446, 3444);\n";
77cp.
code() +=
"} // block\n";
79cp.
code() +=
"} // block\n";
82cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
89 cp.
code() = std::string(
"//FLW\n");
92cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
104rd += R_rd_0.read(ba) << 0;
107rs1 += R_rs1_0.read(ba) << 0;
110imm += R_imm_0.read(ba) << 0;
114 std::stringstream ss;
116ss <<
"flw" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | imm=" + std::to_string(imm) +
"]");
138imm += R_imm_0.
read(ba) << 0;
141rs1 += R_rs1_0.
read(ba) << 0;
144rs2 += R_rs2_0.
read(ba) << 0;
146imm += R_imm_5.
read(ba) << 5;
153 cp.
code() = std::string(
"//FSW\n");
156cp.
code() +=
"etiss_coverage_count(1, 89);\n";
158cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
159cp.
code() +=
"{ // block\n";
161cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
162cp.
code() +=
"} // block\n";
165cp.
code() +=
"etiss_coverage_count(1, 3471);\n";
166cp.
code() +=
"{ // block\n";
167cp.
code() +=
"etiss_uint32 offs = *((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL] + " + std::to_string(((
etiss_int16)(((
etiss_int16)imm) << (4)) >> (4))) +
"LL;\n";
168cp.
code() +=
"etiss_coverage_count(7, 3461, 3460, 3456, 3455, 3453, 3459, 3457);\n";
169cp.
code() +=
"etiss_uint32 mem_val_0;\n";
170cp.
code() +=
"mem_val_0 = (etiss_uint32)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
171cp.
code() +=
"etiss_coverage_count(6, 3470, 3464, 3463, 3469, 3467, 3466);\n";
172cp.
code() +=
"cpu->exception |= (*(system->dwrite))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";
173cp.
code() +=
"if (cpu->exception) { // conditional\n";
175cp.
code() +=
"{ // procedure\n";
176cp.
code() +=
"RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";
178cp.
code() +=
"} // procedure\n";
180cp.
code() +=
"} // conditional\n";
181cp.
code() +=
"} // block\n";
184cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
191 cp.
code() = std::string(
"//FSW\n");
194cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
206imm += R_imm_0.read(ba) << 0;
209rs1 += R_rs1_0.read(ba) << 0;
212rs2 += R_rs2_0.read(ba) << 0;
214imm += R_imm_5.read(ba) << 5;
218 std::stringstream ss;
220ss <<
"fsw" <<
" # " << ba << (
" [imm=" + std::to_string(imm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
231 (uint32_t) 0x600007f,
242rd += R_rd_0.
read(ba) << 0;
245rm += R_rm_0.
read(ba) << 0;
248rs1 += R_rs1_0.
read(ba) << 0;
251rs2 += R_rs2_0.
read(ba) << 0;
254rs3 += R_rs3_0.
read(ba) << 0;
261 cp.
code() = std::string(
"//FMADD_S\n");
264cp.
code() +=
"etiss_coverage_count(1, 90);\n";
266cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
267cp.
code() +=
"{ // block\n";
269cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
270cp.
code() +=
"} // block\n";
273cp.
code() +=
"etiss_coverage_count(1, 3542);\n";
274cp.
code() +=
"{ // block\n";
276cp.
code() +=
"etiss_coverage_count(1, 3526);\n";
277cp.
code() +=
"{ // block\n";
278cp.
code() +=
"etiss_uint32 res = fmadd_s(unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 0LL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
279cp.
code() +=
"etiss_coverage_count(14, 3510, 3509, 3497, 3496, 3495, 3501, 3500, 3499, 3505, 3504, 3503, 3506, 3508, 3507);\n";
280cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
281cp.
code() +=
"etiss_coverage_count(6, 3525, 3513, 3512, 3524, 3523, 3521);\n";
282cp.
code() +=
"} // block\n";
284cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
285cp.
code() +=
"etiss_coverage_count(2, 3529, 3528);\n";
286cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
287cp.
code() +=
"etiss_coverage_count(9, 3541, 3530, 3540, 3534, 3531, 3535, 3538, 3536, 3539);\n";
288cp.
code() +=
"} // block\n";
291cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
304rd += R_rd_0.read(ba) << 0;
307rm += R_rm_0.read(ba) << 0;
310rs1 += R_rs1_0.read(ba) << 0;
313rs2 += R_rs2_0.read(ba) << 0;
316rs3 += R_rs3_0.read(ba) << 0;
320 std::stringstream ss;
322ss <<
"fmadd_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
" | rs3=" + std::to_string(rs3) +
"]");
333 (uint32_t) 0x600007f,
344rd += R_rd_0.
read(ba) << 0;
347rm += R_rm_0.
read(ba) << 0;
350rs1 += R_rs1_0.
read(ba) << 0;
353rs2 += R_rs2_0.
read(ba) << 0;
356rs3 += R_rs3_0.
read(ba) << 0;
363 cp.
code() = std::string(
"//FMSUB_S\n");
366cp.
code() +=
"etiss_coverage_count(1, 91);\n";
368cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
369cp.
code() +=
"{ // block\n";
371cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
372cp.
code() +=
"} // block\n";
375cp.
code() +=
"etiss_coverage_count(1, 3613);\n";
376cp.
code() +=
"{ // block\n";
378cp.
code() +=
"etiss_coverage_count(1, 3597);\n";
379cp.
code() +=
"{ // block\n";
380cp.
code() +=
"etiss_uint32 res = fmadd_s(unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 1ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
381cp.
code() +=
"etiss_coverage_count(14, 3581, 3580, 3568, 3567, 3566, 3572, 3571, 3570, 3576, 3575, 3574, 3577, 3579, 3578);\n";
382cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
383cp.
code() +=
"etiss_coverage_count(6, 3596, 3584, 3583, 3595, 3594, 3592);\n";
384cp.
code() +=
"} // block\n";
386cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
387cp.
code() +=
"etiss_coverage_count(2, 3600, 3599);\n";
388cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
389cp.
code() +=
"etiss_coverage_count(9, 3612, 3601, 3611, 3605, 3602, 3606, 3609, 3607, 3610);\n";
390cp.
code() +=
"} // block\n";
393cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
406rd += R_rd_0.read(ba) << 0;
409rm += R_rm_0.read(ba) << 0;
412rs1 += R_rs1_0.read(ba) << 0;
415rs2 += R_rs2_0.read(ba) << 0;
418rs3 += R_rs3_0.read(ba) << 0;
422 std::stringstream ss;
424ss <<
"fmsub_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
" | rs3=" + std::to_string(rs3) +
"]");
435 (uint32_t) 0x600007f,
446rd += R_rd_0.
read(ba) << 0;
449rm += R_rm_0.
read(ba) << 0;
452rs1 += R_rs1_0.
read(ba) << 0;
455rs2 += R_rs2_0.
read(ba) << 0;
458rs3 += R_rs3_0.
read(ba) << 0;
465 cp.
code() = std::string(
"//FNMADD_S\n");
468cp.
code() +=
"etiss_coverage_count(1, 92);\n";
470cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
471cp.
code() +=
"{ // block\n";
473cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
474cp.
code() +=
"} // block\n";
477cp.
code() +=
"etiss_coverage_count(1, 3693);\n";
478cp.
code() +=
"{ // block\n";
480cp.
code() +=
"etiss_coverage_count(1, 3677);\n";
481cp.
code() +=
"{ // block\n";
482cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
483cp.
code() +=
"etiss_coverage_count(4, 3640, 3639, 3638, 3637);\n";
484cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
485cp.
code() +=
"etiss_coverage_count(4, 3646, 3645, 3644, 3643);\n";
486cp.
code() +=
"etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]);\n";
487cp.
code() +=
"etiss_coverage_count(4, 3652, 3651, 3650, 3649);\n";
488cp.
code() +=
"etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 2ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
489cp.
code() +=
"etiss_coverage_count(8, 3661, 3660, 3654, 3655, 3656, 3657, 3659, 3658);\n";
490cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
491cp.
code() +=
"etiss_coverage_count(6, 3676, 3664, 3663, 3675, 3674, 3672);\n";
492cp.
code() +=
"} // block\n";
494cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
495cp.
code() +=
"etiss_coverage_count(2, 3680, 3679);\n";
496cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
497cp.
code() +=
"etiss_coverage_count(9, 3692, 3681, 3691, 3685, 3682, 3686, 3689, 3687, 3690);\n";
498cp.
code() +=
"} // block\n";
501cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
514rd += R_rd_0.read(ba) << 0;
517rm += R_rm_0.read(ba) << 0;
520rs1 += R_rs1_0.read(ba) << 0;
523rs2 += R_rs2_0.read(ba) << 0;
526rs3 += R_rs3_0.read(ba) << 0;
530 std::stringstream ss;
532ss <<
"fnmadd_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
" | rs3=" + std::to_string(rs3) +
"]");
543 (uint32_t) 0x600007f,
554rd += R_rd_0.
read(ba) << 0;
557rm += R_rm_0.
read(ba) << 0;
560rs1 += R_rs1_0.
read(ba) << 0;
563rs2 += R_rs2_0.
read(ba) << 0;
566rs3 += R_rs3_0.
read(ba) << 0;
573 cp.
code() = std::string(
"//FNMSUB_S\n");
576cp.
code() +=
"etiss_coverage_count(1, 93);\n";
578cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
579cp.
code() +=
"{ // block\n";
581cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
582cp.
code() +=
"} // block\n";
585cp.
code() +=
"etiss_coverage_count(1, 3773);\n";
586cp.
code() +=
"{ // block\n";
588cp.
code() +=
"etiss_coverage_count(1, 3757);\n";
589cp.
code() +=
"{ // block\n";
590cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
591cp.
code() +=
"etiss_coverage_count(4, 3720, 3719, 3718, 3717);\n";
592cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
593cp.
code() +=
"etiss_coverage_count(4, 3726, 3725, 3724, 3723);\n";
594cp.
code() +=
"etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]);\n";
595cp.
code() +=
"etiss_coverage_count(4, 3732, 3731, 3730, 3729);\n";
596cp.
code() +=
"etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 3ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
597cp.
code() +=
"etiss_coverage_count(8, 3741, 3740, 3734, 3735, 3736, 3737, 3739, 3738);\n";
598cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
599cp.
code() +=
"etiss_coverage_count(6, 3756, 3744, 3743, 3755, 3754, 3752);\n";
600cp.
code() +=
"} // block\n";
602cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
603cp.
code() +=
"etiss_coverage_count(2, 3760, 3759);\n";
604cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
605cp.
code() +=
"etiss_coverage_count(9, 3772, 3761, 3771, 3765, 3762, 3766, 3769, 3767, 3770);\n";
606cp.
code() +=
"} // block\n";
609cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
622rd += R_rd_0.read(ba) << 0;
625rm += R_rm_0.read(ba) << 0;
628rs1 += R_rs1_0.read(ba) << 0;
631rs2 += R_rs2_0.read(ba) << 0;
634rs3 += R_rs3_0.read(ba) << 0;
638 std::stringstream ss;
640ss <<
"fnmsub_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
" | rs3=" + std::to_string(rs3) +
"]");
651 (uint32_t) 0xfe00007f,
662rd += R_rd_0.
read(ba) << 0;
665rm += R_rm_0.
read(ba) << 0;
668rs1 += R_rs1_0.
read(ba) << 0;
671rs2 += R_rs2_0.
read(ba) << 0;
678 cp.
code() = std::string(
"//FADD_S\n");
681cp.
code() +=
"etiss_coverage_count(1, 94);\n";
683cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
684cp.
code() +=
"{ // block\n";
686cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
687cp.
code() +=
"} // block\n";
690cp.
code() +=
"etiss_coverage_count(1, 3841);\n";
691cp.
code() +=
"{ // block\n";
693cp.
code() +=
"etiss_coverage_count(1, 3825);\n";
694cp.
code() +=
"{ // block\n";
695cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
696cp.
code() +=
"etiss_coverage_count(4, 3796, 3795, 3794, 3793);\n";
697cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
698cp.
code() +=
"etiss_coverage_count(4, 3802, 3801, 3800, 3799);\n";
699cp.
code() +=
"etiss_uint32 res = fadd_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
700cp.
code() +=
"etiss_coverage_count(6, 3809, 3808, 3804, 3805, 3807, 3806);\n";
701cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
702cp.
code() +=
"etiss_coverage_count(6, 3824, 3812, 3811, 3823, 3822, 3820);\n";
703cp.
code() +=
"} // block\n";
705cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
706cp.
code() +=
"etiss_coverage_count(2, 3828, 3827);\n";
707cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
708cp.
code() +=
"etiss_coverage_count(9, 3840, 3829, 3839, 3833, 3830, 3834, 3837, 3835, 3838);\n";
709cp.
code() +=
"} // block\n";
712cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
725rd += R_rd_0.read(ba) << 0;
728rm += R_rm_0.read(ba) << 0;
731rs1 += R_rs1_0.read(ba) << 0;
734rs2 += R_rs2_0.read(ba) << 0;
738 std::stringstream ss;
740ss <<
"fadd_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
750 (uint32_t) 0x8000053,
751 (uint32_t) 0xfe00007f,
762rd += R_rd_0.
read(ba) << 0;
765rm += R_rm_0.
read(ba) << 0;
768rs1 += R_rs1_0.
read(ba) << 0;
771rs2 += R_rs2_0.
read(ba) << 0;
778 cp.
code() = std::string(
"//FSUB_S\n");
781cp.
code() +=
"etiss_coverage_count(1, 95);\n";
783cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
784cp.
code() +=
"{ // block\n";
786cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
787cp.
code() +=
"} // block\n";
790cp.
code() +=
"etiss_coverage_count(1, 3909);\n";
791cp.
code() +=
"{ // block\n";
793cp.
code() +=
"etiss_coverage_count(1, 3893);\n";
794cp.
code() +=
"{ // block\n";
795cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
796cp.
code() +=
"etiss_coverage_count(4, 3864, 3863, 3862, 3861);\n";
797cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
798cp.
code() +=
"etiss_coverage_count(4, 3870, 3869, 3868, 3867);\n";
799cp.
code() +=
"etiss_uint32 res = fsub_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
800cp.
code() +=
"etiss_coverage_count(6, 3877, 3876, 3872, 3873, 3875, 3874);\n";
801cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
802cp.
code() +=
"etiss_coverage_count(6, 3892, 3880, 3879, 3891, 3890, 3888);\n";
803cp.
code() +=
"} // block\n";
805cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
806cp.
code() +=
"etiss_coverage_count(2, 3896, 3895);\n";
807cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
808cp.
code() +=
"etiss_coverage_count(9, 3908, 3897, 3907, 3901, 3898, 3902, 3905, 3903, 3906);\n";
809cp.
code() +=
"} // block\n";
812cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
825rd += R_rd_0.read(ba) << 0;
828rm += R_rm_0.read(ba) << 0;
831rs1 += R_rs1_0.read(ba) << 0;
834rs2 += R_rs2_0.read(ba) << 0;
838 std::stringstream ss;
840ss <<
"fsub_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
850 (uint32_t) 0x10000053,
851 (uint32_t) 0xfe00007f,
862rd += R_rd_0.
read(ba) << 0;
865rm += R_rm_0.
read(ba) << 0;
868rs1 += R_rs1_0.
read(ba) << 0;
871rs2 += R_rs2_0.
read(ba) << 0;
878 cp.
code() = std::string(
"//FMUL_S\n");
881cp.
code() +=
"etiss_coverage_count(1, 96);\n";
883cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
884cp.
code() +=
"{ // block\n";
886cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
887cp.
code() +=
"} // block\n";
890cp.
code() +=
"etiss_coverage_count(1, 3977);\n";
891cp.
code() +=
"{ // block\n";
893cp.
code() +=
"etiss_coverage_count(1, 3961);\n";
894cp.
code() +=
"{ // block\n";
895cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
896cp.
code() +=
"etiss_coverage_count(4, 3932, 3931, 3930, 3929);\n";
897cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
898cp.
code() +=
"etiss_coverage_count(4, 3938, 3937, 3936, 3935);\n";
899cp.
code() +=
"etiss_uint32 res = fmul_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
900cp.
code() +=
"etiss_coverage_count(6, 3945, 3944, 3940, 3941, 3943, 3942);\n";
901cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
902cp.
code() +=
"etiss_coverage_count(6, 3960, 3948, 3947, 3959, 3958, 3956);\n";
903cp.
code() +=
"} // block\n";
905cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
906cp.
code() +=
"etiss_coverage_count(2, 3964, 3963);\n";
907cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
908cp.
code() +=
"etiss_coverage_count(9, 3976, 3965, 3975, 3969, 3966, 3970, 3973, 3971, 3974);\n";
909cp.
code() +=
"} // block\n";
912cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
925rd += R_rd_0.read(ba) << 0;
928rm += R_rm_0.read(ba) << 0;
931rs1 += R_rs1_0.read(ba) << 0;
934rs2 += R_rs2_0.read(ba) << 0;
938 std::stringstream ss;
940ss <<
"fmul_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
950 (uint32_t) 0x18000053,
951 (uint32_t) 0xfe00007f,
962rd += R_rd_0.
read(ba) << 0;
965rm += R_rm_0.
read(ba) << 0;
968rs1 += R_rs1_0.
read(ba) << 0;
971rs2 += R_rs2_0.
read(ba) << 0;
978 cp.
code() = std::string(
"//FDIV_S\n");
981cp.
code() +=
"etiss_coverage_count(1, 97);\n";
983cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
984cp.
code() +=
"{ // block\n";
986cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
987cp.
code() +=
"} // block\n";
990cp.
code() +=
"etiss_coverage_count(1, 4045);\n";
991cp.
code() +=
"{ // block\n";
993cp.
code() +=
"etiss_coverage_count(1, 4029);\n";
994cp.
code() +=
"{ // block\n";
995cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
996cp.
code() +=
"etiss_coverage_count(4, 4000, 3999, 3998, 3997);\n";
997cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
998cp.
code() +=
"etiss_coverage_count(4, 4006, 4005, 4004, 4003);\n";
999cp.
code() +=
"etiss_uint32 res = fdiv_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
1000cp.
code() +=
"etiss_coverage_count(6, 4013, 4012, 4008, 4009, 4011, 4010);\n";
1001cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1002cp.
code() +=
"etiss_coverage_count(6, 4028, 4016, 4015, 4027, 4026, 4024);\n";
1003cp.
code() +=
"} // block\n";
1005cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1006cp.
code() +=
"etiss_coverage_count(2, 4032, 4031);\n";
1007cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1008cp.
code() +=
"etiss_coverage_count(9, 4044, 4033, 4043, 4037, 4034, 4038, 4041, 4039, 4042);\n";
1009cp.
code() +=
"} // block\n";
1012cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1025rd += R_rd_0.read(ba) << 0;
1028rm += R_rm_0.read(ba) << 0;
1031rs1 += R_rs1_0.read(ba) << 0;
1034rs2 += R_rs2_0.read(ba) << 0;
1038 std::stringstream ss;
1040ss <<
"fdiv_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1050 (uint32_t) 0x58000053,
1051 (uint32_t) 0xfff0007f,
1062rd += R_rd_0.
read(ba) << 0;
1065rm += R_rm_0.
read(ba) << 0;
1068rs1 += R_rs1_0.
read(ba) << 0;
1075 cp.
code() = std::string(
"//FSQRT_S\n");
1078cp.
code() +=
"etiss_coverage_count(1, 98);\n";
1080cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1081cp.
code() +=
"{ // block\n";
1083cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1084cp.
code() +=
"} // block\n";
1087cp.
code() +=
"etiss_coverage_count(1, 4103);\n";
1088cp.
code() +=
"{ // block\n";
1090cp.
code() +=
"etiss_coverage_count(1, 4087);\n";
1091cp.
code() +=
"{ // block\n";
1092cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1093cp.
code() +=
"etiss_coverage_count(4, 4065, 4064, 4063, 4062);\n";
1094cp.
code() +=
"etiss_uint32 res = fsqrt_s(frs1, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
1095cp.
code() +=
"etiss_coverage_count(5, 4071, 4070, 4067, 4069, 4068);\n";
1096cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1097cp.
code() +=
"etiss_coverage_count(6, 4086, 4074, 4073, 4085, 4084, 4082);\n";
1098cp.
code() +=
"} // block\n";
1100cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1101cp.
code() +=
"etiss_coverage_count(2, 4090, 4089);\n";
1102cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1103cp.
code() +=
"etiss_coverage_count(9, 4102, 4091, 4101, 4095, 4092, 4096, 4099, 4097, 4100);\n";
1104cp.
code() +=
"} // block\n";
1107cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1120rd += R_rd_0.read(ba) << 0;
1123rm += R_rm_0.read(ba) << 0;
1126rs1 += R_rs1_0.read(ba) << 0;
1130 std::stringstream ss;
1132ss <<
"fsqrt_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1142 (uint32_t) 0x20000053,
1143 (uint32_t) 0xfe00707f,
1154rd += R_rd_0.
read(ba) << 0;
1157rs1 += R_rs1_0.
read(ba) << 0;
1160rs2 += R_rs2_0.
read(ba) << 0;
1167 cp.
code() = std::string(
"//FSGNJ_S\n");
1170cp.
code() +=
"etiss_coverage_count(1, 99);\n";
1172cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1173cp.
code() +=
"{ // block\n";
1175cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1176cp.
code() +=
"} // block\n";
1179cp.
code() +=
"etiss_coverage_count(1, 4162);\n";
1180cp.
code() +=
"{ // block\n";
1182cp.
code() +=
"etiss_coverage_count(1, 4161);\n";
1183cp.
code() +=
"{ // block\n";
1184cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1185cp.
code() +=
"etiss_coverage_count(4, 4130, 4129, 4128, 4127);\n";
1186cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1187cp.
code() +=
"etiss_coverage_count(4, 4136, 4135, 4134, 4133);\n";
1188cp.
code() +=
"etiss_uint32 res = ((((((frs2) >> (31ULL)) & 1ULL)) << 31) | ((((frs1) >> (0LL)) & 2147483647ULL)));\n";
1189cp.
code() +=
"etiss_coverage_count(10, 4147, 4146, 4141, 4138, 4139, 4140, 4145, 4142, 4143, 4144);\n";
1190cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1191cp.
code() +=
"etiss_coverage_count(6, 4160, 4150, 4149, 4159, 4158, 4156);\n";
1192cp.
code() +=
"} // block\n";
1194cp.
code() +=
"} // block\n";
1197cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1210rd += R_rd_0.read(ba) << 0;
1213rs1 += R_rs1_0.read(ba) << 0;
1216rs2 += R_rs2_0.read(ba) << 0;
1220 std::stringstream ss;
1222ss <<
"fsgnj_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1232 (uint32_t) 0x20001053,
1233 (uint32_t) 0xfe00707f,
1244rd += R_rd_0.
read(ba) << 0;
1247rs1 += R_rs1_0.
read(ba) << 0;
1250rs2 += R_rs2_0.
read(ba) << 0;
1257 cp.
code() = std::string(
"//FSGNJN_S\n");
1260cp.
code() +=
"etiss_coverage_count(1, 100);\n";
1262cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1263cp.
code() +=
"{ // block\n";
1265cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1266cp.
code() +=
"} // block\n";
1269cp.
code() +=
"etiss_coverage_count(1, 4223);\n";
1270cp.
code() +=
"{ // block\n";
1272cp.
code() +=
"etiss_coverage_count(1, 4222);\n";
1273cp.
code() +=
"{ // block\n";
1274cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1275cp.
code() +=
"etiss_coverage_count(4, 4190, 4189, 4188, 4187);\n";
1276cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1277cp.
code() +=
"etiss_coverage_count(4, 4196, 4195, 4194, 4193);\n";
1278cp.
code() +=
"etiss_uint32 res = (((~((((frs2) >> (31ULL)) & 1ULL))) << 31) | ((((frs1) >> (0LL)) & 2147483647ULL)));\n";
1279cp.
code() +=
"etiss_coverage_count(11, 4208, 4207, 4202, 4201, 4198, 4199, 4200, 4206, 4203, 4204, 4205);\n";
1280cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1281cp.
code() +=
"etiss_coverage_count(6, 4221, 4211, 4210, 4220, 4219, 4217);\n";
1282cp.
code() +=
"} // block\n";
1284cp.
code() +=
"} // block\n";
1287cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1300rd += R_rd_0.read(ba) << 0;
1303rs1 += R_rs1_0.read(ba) << 0;
1306rs2 += R_rs2_0.read(ba) << 0;
1310 std::stringstream ss;
1312ss <<
"fsgnjn_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1322 (uint32_t) 0x20002053,
1323 (uint32_t) 0xfe00707f,
1334rd += R_rd_0.
read(ba) << 0;
1337rs1 += R_rs1_0.
read(ba) << 0;
1340rs2 += R_rs2_0.
read(ba) << 0;
1347 cp.
code() = std::string(
"//FSGNJX_S\n");
1350cp.
code() +=
"etiss_coverage_count(1, 101);\n";
1352cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1353cp.
code() +=
"{ // block\n";
1355cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1356cp.
code() +=
"} // block\n";
1359cp.
code() +=
"etiss_coverage_count(1, 4278);\n";
1360cp.
code() +=
"{ // block\n";
1362cp.
code() +=
"etiss_coverage_count(1, 4277);\n";
1363cp.
code() +=
"{ // block\n";
1364cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1365cp.
code() +=
"etiss_coverage_count(4, 4247, 4246, 4245, 4244);\n";
1366cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1367cp.
code() +=
"etiss_coverage_count(4, 4253, 4252, 4251, 4250);\n";
1368cp.
code() +=
"etiss_uint32 res = frs1 ^ (frs2 & 2147483648ULL);\n";
1369cp.
code() +=
"etiss_coverage_count(7, 4261, 4260, 4255, 4258, 4256, 4257, 4259);\n";
1370cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1371cp.
code() +=
"etiss_coverage_count(6, 4276, 4264, 4263, 4275, 4274, 4272);\n";
1372cp.
code() +=
"} // block\n";
1374cp.
code() +=
"} // block\n";
1377cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1390rd += R_rd_0.read(ba) << 0;
1393rs1 += R_rs1_0.read(ba) << 0;
1396rs2 += R_rs2_0.read(ba) << 0;
1400 std::stringstream ss;
1402ss <<
"fsgnjx_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1412 (uint32_t) 0x28000053,
1413 (uint32_t) 0xfe00707f,
1424rd += R_rd_0.
read(ba) << 0;
1427rs1 += R_rs1_0.
read(ba) << 0;
1430rs2 += R_rs2_0.
read(ba) << 0;
1437 cp.
code() = std::string(
"//FMIN_S\n");
1440cp.
code() +=
"etiss_coverage_count(1, 102);\n";
1442cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1443cp.
code() +=
"{ // block\n";
1445cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1446cp.
code() +=
"} // block\n";
1449cp.
code() +=
"etiss_coverage_count(1, 4344);\n";
1450cp.
code() +=
"{ // block\n";
1452cp.
code() +=
"etiss_coverage_count(1, 4328);\n";
1453cp.
code() +=
"{ // block\n";
1454cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1455cp.
code() +=
"etiss_coverage_count(4, 4300, 4299, 4298, 4297);\n";
1456cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1457cp.
code() +=
"etiss_coverage_count(4, 4306, 4305, 4304, 4303);\n";
1458cp.
code() +=
"etiss_uint32 res = fsel_s(frs1, frs2, 0LL);\n";
1459cp.
code() +=
"etiss_coverage_count(5, 4312, 4311, 4308, 4309, 4310);\n";
1460cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1461cp.
code() +=
"etiss_coverage_count(6, 4327, 4315, 4314, 4326, 4325, 4323);\n";
1462cp.
code() +=
"} // block\n";
1464cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1465cp.
code() +=
"etiss_coverage_count(2, 4331, 4330);\n";
1466cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1467cp.
code() +=
"etiss_coverage_count(9, 4343, 4332, 4342, 4336, 4333, 4337, 4340, 4338, 4341);\n";
1468cp.
code() +=
"} // block\n";
1471cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1484rd += R_rd_0.read(ba) << 0;
1487rs1 += R_rs1_0.read(ba) << 0;
1490rs2 += R_rs2_0.read(ba) << 0;
1494 std::stringstream ss;
1496ss <<
"fmin_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1506 (uint32_t) 0x28001053,
1507 (uint32_t) 0xfe00707f,
1518rd += R_rd_0.
read(ba) << 0;
1521rs1 += R_rs1_0.
read(ba) << 0;
1524rs2 += R_rs2_0.
read(ba) << 0;
1531 cp.
code() = std::string(
"//FMAX_S\n");
1534cp.
code() +=
"etiss_coverage_count(1, 103);\n";
1536cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1537cp.
code() +=
"{ // block\n";
1539cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1540cp.
code() +=
"} // block\n";
1543cp.
code() +=
"etiss_coverage_count(1, 4410);\n";
1544cp.
code() +=
"{ // block\n";
1546cp.
code() +=
"etiss_coverage_count(1, 4394);\n";
1547cp.
code() +=
"{ // block\n";
1548cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1549cp.
code() +=
"etiss_coverage_count(4, 4366, 4365, 4364, 4363);\n";
1550cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1551cp.
code() +=
"etiss_coverage_count(4, 4372, 4371, 4370, 4369);\n";
1552cp.
code() +=
"etiss_uint32 res = fsel_s(frs1, frs2, 1ULL);\n";
1553cp.
code() +=
"etiss_coverage_count(5, 4378, 4377, 4374, 4375, 4376);\n";
1554cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1555cp.
code() +=
"etiss_coverage_count(6, 4393, 4381, 4380, 4392, 4391, 4389);\n";
1556cp.
code() +=
"} // block\n";
1558cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1559cp.
code() +=
"etiss_coverage_count(2, 4397, 4396);\n";
1560cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1561cp.
code() +=
"etiss_coverage_count(9, 4409, 4398, 4408, 4402, 4399, 4403, 4406, 4404, 4407);\n";
1562cp.
code() +=
"} // block\n";
1565cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1578rd += R_rd_0.read(ba) << 0;
1581rs1 += R_rs1_0.read(ba) << 0;
1584rs2 += R_rs2_0.read(ba) << 0;
1588 std::stringstream ss;
1590ss <<
"fmax_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1600 (uint32_t) 0xc0000053,
1601 (uint32_t) 0xfff0007f,
1612rd += R_rd_0.
read(ba) << 0;
1615rm += R_rm_0.
read(ba) << 0;
1618rs1 += R_rs1_0.
read(ba) << 0;
1625 cp.
code() = std::string(
"//FCVT_W_S\n");
1628cp.
code() +=
"etiss_coverage_count(1, 104);\n";
1630cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1631cp.
code() +=
"{ // block\n";
1633cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1634cp.
code() +=
"} // block\n";
1637cp.
code() +=
"etiss_coverage_count(1, 4468);\n";
1638cp.
code() +=
"{ // block\n";
1639cp.
code() +=
"etiss_int32 res = 0LL;\n";
1640cp.
code() +=
"etiss_coverage_count(2, 4413, 4412);\n";
1642cp.
code() +=
"etiss_coverage_count(1, 4438);\n";
1643cp.
code() +=
"{ // block\n";
1644cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1645cp.
code() +=
"etiss_coverage_count(4, 4431, 4430, 4429, 4428);\n";
1646cp.
code() +=
"res = fcvt_s(frs1, 0LL, " + std::to_string(rm) +
"ULL);\n";
1647cp.
code() +=
"etiss_coverage_count(6, 4437, 4432, 4436, 4433, 4434, 4435);\n";
1648cp.
code() +=
"} // block\n";
1650cp.
code() +=
"etiss_coverage_count(1, 4439);\n";
1651if ((rd % 32ULL) != 0LL) {
1652cp.
code() +=
"etiss_coverage_count(5, 4445, 4442, 4440, 4443, 4444);\n";
1653cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1654cp.
code() +=
"etiss_coverage_count(5, 4452, 4450, 4449, 4447, 4451);\n";
1656cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1657cp.
code() +=
"etiss_coverage_count(2, 4455, 4454);\n";
1658cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1659cp.
code() +=
"etiss_coverage_count(9, 4467, 4456, 4466, 4460, 4457, 4461, 4464, 4462, 4465);\n";
1660cp.
code() +=
"} // block\n";
1663cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1676rd += R_rd_0.read(ba) << 0;
1679rm += R_rm_0.read(ba) << 0;
1682rs1 += R_rs1_0.read(ba) << 0;
1686 std::stringstream ss;
1688ss <<
"fcvt_w_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1698 (uint32_t) 0xc0100053,
1699 (uint32_t) 0xfff0007f,
1710rd += R_rd_0.
read(ba) << 0;
1713rm += R_rm_0.
read(ba) << 0;
1716rs1 += R_rs1_0.
read(ba) << 0;
1723 cp.
code() = std::string(
"//FCVT_WU_S\n");
1726cp.
code() +=
"etiss_coverage_count(1, 105);\n";
1728cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1729cp.
code() +=
"{ // block\n";
1731cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1732cp.
code() +=
"} // block\n";
1735cp.
code() +=
"etiss_coverage_count(1, 4529);\n";
1736cp.
code() +=
"{ // block\n";
1737cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1738cp.
code() +=
"etiss_coverage_count(2, 4471, 4470);\n";
1740cp.
code() +=
"etiss_coverage_count(1, 4496);\n";
1741cp.
code() +=
"{ // block\n";
1742cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1743cp.
code() +=
"etiss_coverage_count(4, 4489, 4488, 4487, 4486);\n";
1744cp.
code() +=
"res = fcvt_s(frs1, 1ULL, " + std::to_string(rm) +
"ULL);\n";
1745cp.
code() +=
"etiss_coverage_count(6, 4495, 4490, 4494, 4491, 4492, 4493);\n";
1746cp.
code() +=
"} // block\n";
1748cp.
code() +=
"etiss_coverage_count(1, 4497);\n";
1749if ((rd % 32ULL) != 0LL) {
1750cp.
code() +=
"etiss_coverage_count(5, 4503, 4500, 4498, 4501, 4502);\n";
1751cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = (etiss_uint32)((etiss_int32)(res));\n";
1752cp.
code() +=
"etiss_coverage_count(7, 4513, 4508, 4507, 4505, 4512, 4510, 4509);\n";
1754cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1755cp.
code() +=
"etiss_coverage_count(2, 4516, 4515);\n";
1756cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1757cp.
code() +=
"etiss_coverage_count(9, 4528, 4517, 4527, 4521, 4518, 4522, 4525, 4523, 4526);\n";
1758cp.
code() +=
"} // block\n";
1761cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1774rd += R_rd_0.read(ba) << 0;
1777rm += R_rm_0.read(ba) << 0;
1780rs1 += R_rs1_0.read(ba) << 0;
1784 std::stringstream ss;
1786ss <<
"fcvt_wu_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1796 (uint32_t) 0xa0002053,
1797 (uint32_t) 0xfe00707f,
1808rd += R_rd_0.
read(ba) << 0;
1811rs1 += R_rs1_0.
read(ba) << 0;
1814rs2 += R_rs2_0.
read(ba) << 0;
1821 cp.
code() = std::string(
"//FEQ_S\n");
1824cp.
code() +=
"etiss_coverage_count(1, 106);\n";
1826cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1827cp.
code() +=
"{ // block\n";
1829cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1830cp.
code() +=
"} // block\n";
1833cp.
code() +=
"etiss_coverage_count(1, 4595);\n";
1834cp.
code() +=
"{ // block\n";
1835cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1836cp.
code() +=
"etiss_coverage_count(2, 4532, 4531);\n";
1838cp.
code() +=
"etiss_coverage_count(1, 4565);\n";
1839cp.
code() +=
"{ // block\n";
1840cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1841cp.
code() +=
"etiss_coverage_count(4, 4552, 4551, 4550, 4549);\n";
1842cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1843cp.
code() +=
"etiss_coverage_count(4, 4558, 4557, 4556, 4555);\n";
1844cp.
code() +=
"res = fcmp_s(frs1, frs2, 0LL);\n";
1845cp.
code() +=
"etiss_coverage_count(6, 4564, 4559, 4563, 4560, 4561, 4562);\n";
1846cp.
code() +=
"} // block\n";
1848cp.
code() +=
"etiss_coverage_count(1, 4566);\n";
1849if ((rd % 32ULL) != 0LL) {
1850cp.
code() +=
"etiss_coverage_count(5, 4572, 4569, 4567, 4570, 4571);\n";
1851cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1852cp.
code() +=
"etiss_coverage_count(5, 4579, 4577, 4576, 4574, 4578);\n";
1854cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1855cp.
code() +=
"etiss_coverage_count(2, 4582, 4581);\n";
1856cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1857cp.
code() +=
"etiss_coverage_count(9, 4594, 4583, 4593, 4587, 4584, 4588, 4591, 4589, 4592);\n";
1858cp.
code() +=
"} // block\n";
1861cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1874rd += R_rd_0.read(ba) << 0;
1877rs1 += R_rs1_0.read(ba) << 0;
1880rs2 += R_rs2_0.read(ba) << 0;
1884 std::stringstream ss;
1886ss <<
"feq_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1896 (uint32_t) 0xa0001053,
1897 (uint32_t) 0xfe00707f,
1908rd += R_rd_0.
read(ba) << 0;
1911rs1 += R_rs1_0.
read(ba) << 0;
1914rs2 += R_rs2_0.
read(ba) << 0;
1921 cp.
code() = std::string(
"//FLT_S\n");
1924cp.
code() +=
"etiss_coverage_count(1, 107);\n";
1926cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1927cp.
code() +=
"{ // block\n";
1929cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1930cp.
code() +=
"} // block\n";
1933cp.
code() +=
"etiss_coverage_count(1, 4661);\n";
1934cp.
code() +=
"{ // block\n";
1935cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1936cp.
code() +=
"etiss_coverage_count(2, 4598, 4597);\n";
1938cp.
code() +=
"etiss_coverage_count(1, 4631);\n";
1939cp.
code() +=
"{ // block\n";
1940cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1941cp.
code() +=
"etiss_coverage_count(4, 4618, 4617, 4616, 4615);\n";
1942cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1943cp.
code() +=
"etiss_coverage_count(4, 4624, 4623, 4622, 4621);\n";
1944cp.
code() +=
"res = fcmp_s(frs1, frs2, 2ULL);\n";
1945cp.
code() +=
"etiss_coverage_count(6, 4630, 4625, 4629, 4626, 4627, 4628);\n";
1946cp.
code() +=
"} // block\n";
1948cp.
code() +=
"etiss_coverage_count(1, 4632);\n";
1949if ((rd % 32ULL) != 0LL) {
1950cp.
code() +=
"etiss_coverage_count(5, 4638, 4635, 4633, 4636, 4637);\n";
1951cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1952cp.
code() +=
"etiss_coverage_count(5, 4645, 4643, 4642, 4640, 4644);\n";
1954cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1955cp.
code() +=
"etiss_coverage_count(2, 4648, 4647);\n";
1956cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1957cp.
code() +=
"etiss_coverage_count(9, 4660, 4649, 4659, 4653, 4650, 4654, 4657, 4655, 4658);\n";
1958cp.
code() +=
"} // block\n";
1961cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1974rd += R_rd_0.read(ba) << 0;
1977rs1 += R_rs1_0.read(ba) << 0;
1980rs2 += R_rs2_0.read(ba) << 0;
1984 std::stringstream ss;
1986ss <<
"flt_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1996 (uint32_t) 0xa0000053,
1997 (uint32_t) 0xfe00707f,
2008rd += R_rd_0.
read(ba) << 0;
2011rs1 += R_rs1_0.
read(ba) << 0;
2014rs2 += R_rs2_0.
read(ba) << 0;
2021 cp.
code() = std::string(
"//FLE_S\n");
2024cp.
code() +=
"etiss_coverage_count(1, 108);\n";
2026cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2027cp.
code() +=
"{ // block\n";
2029cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2030cp.
code() +=
"} // block\n";
2033cp.
code() +=
"etiss_coverage_count(1, 4727);\n";
2034cp.
code() +=
"{ // block\n";
2035cp.
code() +=
"etiss_uint32 res = 0LL;\n";
2036cp.
code() +=
"etiss_coverage_count(2, 4664, 4663);\n";
2038cp.
code() +=
"etiss_coverage_count(1, 4697);\n";
2039cp.
code() +=
"{ // block\n";
2040cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
2041cp.
code() +=
"etiss_coverage_count(4, 4684, 4683, 4682, 4681);\n";
2042cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
2043cp.
code() +=
"etiss_coverage_count(4, 4690, 4689, 4688, 4687);\n";
2044cp.
code() +=
"res = fcmp_s(frs1, frs2, 1ULL);\n";
2045cp.
code() +=
"etiss_coverage_count(6, 4696, 4691, 4695, 4692, 4693, 4694);\n";
2046cp.
code() +=
"} // block\n";
2048cp.
code() +=
"etiss_coverage_count(1, 4698);\n";
2049if ((rd % 32ULL) != 0LL) {
2050cp.
code() +=
"etiss_coverage_count(5, 4704, 4701, 4699, 4702, 4703);\n";
2051cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
2052cp.
code() +=
"etiss_coverage_count(5, 4711, 4709, 4708, 4706, 4710);\n";
2054cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
2055cp.
code() +=
"etiss_coverage_count(2, 4714, 4713);\n";
2056cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
2057cp.
code() +=
"etiss_coverage_count(9, 4726, 4715, 4725, 4719, 4716, 4720, 4723, 4721, 4724);\n";
2058cp.
code() +=
"} // block\n";
2061cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2074rd += R_rd_0.read(ba) << 0;
2077rs1 += R_rs1_0.read(ba) << 0;
2080rs2 += R_rs2_0.read(ba) << 0;
2084 std::stringstream ss;
2086ss <<
"fle_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
2096 (uint32_t) 0xe0001053,
2097 (uint32_t) 0xfff0707f,
2108rd += R_rd_0.
read(ba) << 0;
2111rs1 += R_rs1_0.
read(ba) << 0;
2118 cp.
code() = std::string(
"//FCLASS_S\n");
2121cp.
code() +=
"etiss_coverage_count(1, 109);\n";
2123cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2124cp.
code() +=
"{ // block\n";
2126cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2127cp.
code() +=
"} // block\n";
2130cp.
code() +=
"etiss_coverage_count(1, 4762);\n";
2131cp.
code() +=
"{ // block\n";
2132cp.
code() +=
"etiss_uint32 res = 0LL;\n";
2133cp.
code() +=
"etiss_coverage_count(2, 4730, 4729);\n";
2134cp.
code() +=
"res = fclass_s(unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]));\n";
2135cp.
code() +=
"etiss_coverage_count(6, 4747, 4741, 4746, 4745, 4744, 4743);\n";
2136cp.
code() +=
"etiss_coverage_count(1, 4748);\n";
2137if ((rd % 32ULL) != 0LL) {
2138cp.
code() +=
"etiss_coverage_count(5, 4754, 4751, 4749, 4752, 4753);\n";
2139cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
2140cp.
code() +=
"etiss_coverage_count(5, 4761, 4759, 4758, 4756, 4760);\n";
2142cp.
code() +=
"} // block\n";
2145cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2158rd += R_rd_0.read(ba) << 0;
2161rs1 += R_rs1_0.read(ba) << 0;
2165 std::stringstream ss;
2167ss <<
"fclass_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
2177 (uint32_t) 0xd0000053,
2178 (uint32_t) 0xfff0007f,
2189rd += R_rd_0.
read(ba) << 0;
2192rm += R_rm_0.
read(ba) << 0;
2195rs1 += R_rs1_0.
read(ba) << 0;
2202 cp.
code() = std::string(
"//FCVT_S_W\n");
2205cp.
code() +=
"etiss_coverage_count(1, 110);\n";
2207cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2208cp.
code() +=
"{ // block\n";
2210cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2211cp.
code() +=
"} // block\n";
2214cp.
code() +=
"etiss_coverage_count(1, 4807);\n";
2215cp.
code() +=
"{ // block\n";
2217cp.
code() +=
"etiss_coverage_count(1, 4806);\n";
2218cp.
code() +=
"{ // block\n";
2219cp.
code() +=
"etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 2ULL, " + std::to_string(rm) +
"ULL);\n";
2220cp.
code() +=
"etiss_coverage_count(8, 4790, 4789, 4786, 4785, 4784, 4782, 4787, 4788);\n";
2221cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
2222cp.
code() +=
"etiss_coverage_count(6, 4805, 4793, 4792, 4804, 4803, 4801);\n";
2223cp.
code() +=
"} // block\n";
2225cp.
code() +=
"} // block\n";
2228cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2241rd += R_rd_0.read(ba) << 0;
2244rm += R_rm_0.read(ba) << 0;
2247rs1 += R_rs1_0.read(ba) << 0;
2251 std::stringstream ss;
2253ss <<
"fcvt_s_w" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2263 (uint32_t) 0xd0100053,
2264 (uint32_t) 0xfff0007f,
2275rd += R_rd_0.
read(ba) << 0;
2278rm += R_rm_0.
read(ba) << 0;
2281rs1 += R_rs1_0.
read(ba) << 0;
2288 cp.
code() = std::string(
"//FCVT_S_WU\n");
2291cp.
code() +=
"etiss_coverage_count(1, 111);\n";
2293cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2294cp.
code() +=
"{ // block\n";
2296cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2297cp.
code() +=
"} // block\n";
2300cp.
code() +=
"etiss_coverage_count(1, 4852);\n";
2301cp.
code() +=
"{ // block\n";
2303cp.
code() +=
"etiss_coverage_count(1, 4851);\n";
2304cp.
code() +=
"{ // block\n";
2305cp.
code() +=
"etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 3ULL, " + std::to_string(rm) +
"ULL);\n";
2306cp.
code() +=
"etiss_coverage_count(8, 4835, 4834, 4831, 4830, 4829, 4827, 4832, 4833);\n";
2307cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
2308cp.
code() +=
"etiss_coverage_count(6, 4850, 4838, 4837, 4849, 4848, 4846);\n";
2309cp.
code() +=
"} // block\n";
2311cp.
code() +=
"} // block\n";
2314cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2327rd += R_rd_0.read(ba) << 0;
2330rm += R_rm_0.read(ba) << 0;
2333rs1 += R_rs1_0.read(ba) << 0;
2337 std::stringstream ss;
2339ss <<
"fcvt_s_wu" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2349 (uint32_t) 0xe0000053,
2350 (uint32_t) 0xfff0707f,
2361rd += R_rd_0.
read(ba) << 0;
2364rs1 += R_rs1_0.
read(ba) << 0;
2371 cp.
code() = std::string(
"//FMV_X_W\n");
2374cp.
code() +=
"etiss_coverage_count(1, 112);\n";
2376cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2377cp.
code() +=
"{ // block\n";
2379cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2380cp.
code() +=
"} // block\n";
2383cp.
code() +=
"etiss_coverage_count(1, 4873);\n";
2384cp.
code() +=
"{ // block\n";
2385cp.
code() +=
"etiss_coverage_count(1, 4853);\n";
2386if ((rd % 32ULL) != 0LL) {
2387cp.
code() +=
"etiss_coverage_count(5, 4859, 4856, 4854, 4857, 4858);\n";
2388cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = (etiss_uint32)((etiss_int32)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]));\n";
2389cp.
code() +=
"etiss_coverage_count(8, 4872, 4864, 4863, 4861, 4871, 4869, 4867, 4866);\n";
2391cp.
code() +=
"} // block\n";
2394cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2407rd += R_rd_0.read(ba) << 0;
2410rs1 += R_rs1_0.read(ba) << 0;
2414 std::stringstream ss;
2416ss <<
"fmv_x_w" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
2426 (uint32_t) 0xf0000053,
2427 (uint32_t) 0xfff0707f,
2438rd += R_rd_0.
read(ba) << 0;
2441rs1 += R_rs1_0.
read(ba) << 0;
2448 cp.
code() = std::string(
"//FMV_W_X\n");
2451cp.
code() +=
"etiss_coverage_count(1, 113);\n";
2453cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2454cp.
code() +=
"{ // block\n";
2456cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2457cp.
code() +=
"} // block\n";
2460cp.
code() +=
"etiss_coverage_count(1, 4907);\n";
2461cp.
code() +=
"{ // block\n";
2463cp.
code() +=
"etiss_coverage_count(1, 4906);\n";
2464cp.
code() +=
"{ // block\n";
2465cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]);\n";
2466cp.
code() +=
"etiss_coverage_count(8, 4905, 4889, 4888, 4904, 4903, 4901, 4900, 4898);\n";
2467cp.
code() +=
"} // block\n";
2469cp.
code() +=
"} // block\n";
2472cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2485rd += R_rd_0.read(ba) << 0;
2488rs1 += R_rs1_0.read(ba) << 0;
2492 std::stringstream ss;
2494ss <<
"fmv_w_x" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
etiss::instr::InstructionGroup ISA32_RV32IMACFD("ISA32_RV32IMACFD", 32)
static InstructionDefinition fsub_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fsub_s",(uint32_t) 0x8000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSUB_S\n");cp.code()+="etiss_coverage_count(1, 95);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3909);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3893);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3864, 3863, 3862, 3861);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3870, 3869, 3868, 3867);\n";cp.code()+="etiss_uint32 res = fsub_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(6, 3877, 3876, 3872, 3873, 3875, 3874);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3892, 3880, 3879, 3891, 3890, 3888);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3896, 3895);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3908, 3897, 3907, 3901, 3898, 3902, 3905, 3903, 3906);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fsub_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fdiv_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fdiv_s",(uint32_t) 0x18000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FDIV_S\n");cp.code()+="etiss_coverage_count(1, 97);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4045);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4029);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4000, 3999, 3998, 3997);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4006, 4005, 4004, 4003);\n";cp.code()+="etiss_uint32 res = fdiv_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(6, 4013, 4012, 4008, 4009, 4011, 4010);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4028, 4016, 4015, 4027, 4026, 4024);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4032, 4031);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4044, 4033, 4043, 4037, 4034, 4038, 4041, 4039, 4042);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fdiv_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fmadd_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmadd_s",(uint32_t) 0x000043,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMADD_S\n");cp.code()+="etiss_coverage_count(1, 90);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3542);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3526);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = fmadd_s(unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]), 0LL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(14, 3510, 3509, 3497, 3496, 3495, 3501, 3500, 3499, 3505, 3504, 3503, 3506, 3508, 3507);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3525, 3513, 3512, 3524, 3523, 3521);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3529, 3528);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3541, 3530, 3540, 3534, 3531, 3535, 3538, 3536, 3539);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;std::stringstream ss;ss<< "fmadd_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+" | rs3="+std::to_string(rs3)+"]");return ss.str();})
static InstructionDefinition fmv_w_x_rd_rs1(ISA32_RV32IMACFD, "fmv_w_x",(uint32_t) 0xf0000053,(uint32_t) 0xfff0707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMV_W_X\n");cp.code()+="etiss_coverage_count(1, 113);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4907);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4906);\n";cp.code()+="{ // block\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(*((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL]);\n";cp.code()+="etiss_coverage_count(8, 4905, 4889, 4888, 4904, 4903, 4901, 4900, 4898);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fmv_w_x"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fsgnj_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnj_s",(uint32_t) 0x20000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJ_S\n");cp.code()+="etiss_coverage_count(1, 99);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4162);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4161);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4130, 4129, 4128, 4127);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4136, 4135, 4134, 4133);\n";cp.code()+="etiss_uint32 res = ((((((frs2) >> (31ULL)) & 1ULL)) << 31) | ((((frs1) >> (0LL)) & 2147483647ULL)));\n";cp.code()+="etiss_coverage_count(10, 4147, 4146, 4141, 4138, 4139, 4140, 4145, 4142, 4143, 4144);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4160, 4150, 4149, 4159, 4158, 4156);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fsgnj_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fnmadd_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmadd_s",(uint32_t) 0x00004f,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FNMADD_S\n");cp.code()+="etiss_coverage_count(1, 92);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3693);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3677);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3640, 3639, 3638, 3637);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3646, 3645, 3644, 3643);\n";cp.code()+="etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3652, 3651, 3650, 3649);\n";cp.code()+="etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 2ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(8, 3661, 3660, 3654, 3655, 3656, 3657, 3659, 3658);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3676, 3664, 3663, 3675, 3674, 3672);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3680, 3679);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3692, 3681, 3691, 3685, 3682, 3686, 3689, 3687, 3690);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;std::stringstream ss;ss<< "fnmadd_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+" | rs3="+std::to_string(rs3)+"]");return ss.str();})
static InstructionDefinition fmul_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fmul_s",(uint32_t) 0x10000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMUL_S\n");cp.code()+="etiss_coverage_count(1, 96);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3977);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3961);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3932, 3931, 3930, 3929);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3938, 3937, 3936, 3935);\n";cp.code()+="etiss_uint32 res = fmul_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(6, 3945, 3944, 3940, 3941, 3943, 3942);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3960, 3948, 3947, 3959, 3958, 3956);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3964, 3963);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3976, 3965, 3975, 3969, 3966, 3970, 3973, 3971, 3974);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fmul_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fmv_x_w_rd_rs1(ISA32_RV32IMACFD, "fmv_x_w",(uint32_t) 0xe0000053,(uint32_t) 0xfff0707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMV_X_W\n");cp.code()+="etiss_coverage_count(1, 112);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4873);\n";cp.code()+="{ // block\n";cp.code()+="etiss_coverage_count(1, 4853);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4859, 4856, 4854, 4857, 4858);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = (etiss_uint32)((etiss_int32)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]));\n";cp.code()+="etiss_coverage_count(8, 4872, 4864, 4863, 4861, 4871, 4869, 4867, 4866);\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fmv_x_w"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition flw_rd_rs1_imm(ISA32_RV32IMACFD, "flw",(uint32_t) 0x002007,(uint32_t) 0x00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint16 imm=0;static BitArrayRange R_imm_0(31, 20);imm+=R_imm_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLW\n");cp.code()+="etiss_coverage_count(1, 88);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3450);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 offs = *((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL] + "+std::to_string(((etiss_int16)(((etiss_int16) imm)<<(4)) > >(4)))+"LL;\n";cp.code()+="etiss_coverage_count(7, 3417, 3416, 3412, 3411, 3409, 3415, 3413);\n";cp.code()+="etiss_uint32 mem_val_0;\n";cp.code()+="cpu->exception |= (*(system->dread))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";cp.code()+="if (cpu->exception) { // conditional\n";{ cp.code()+="{ // procedure\n";cp.code()+="RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";cp.code()+="goto instr_exit_"+std::to_string(ic.current_address_)+";\n";cp.code()+="} // procedure\n";} cp.code()+="} // conditional\n";cp.code()+="etiss_uint32 res = (etiss_uint32)(mem_val_0);\n";cp.code()+="etiss_coverage_count(4, 3424, 3423, 3421, 3420);\n";{ cp.code()+="etiss_coverage_count(1, 3449);\n";cp.code()+="{ // block\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3448, 3436, 3435, 3447, 3446, 3444);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} { CodePart &cp=cs.append(CodePart::APPENDEDRETURNINGREQUIRED);cp.code()=std::string("//FLW\n");cp.code()+="if (cpu->return_pending || cpu->exception) return cpu->exception;\n";} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint16 imm=0;static BitArrayRange R_imm_0(31, 20);imm+=R_imm_0.read(ba)<< 0;std::stringstream ss;ss<< "flw"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | imm="+std::to_string(imm)+"]");return ss.str();})
static InstructionDefinition fle_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fle_s",(uint32_t) 0xa0000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLE_S\n");cp.code()+="etiss_coverage_count(1, 108);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4727);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4664, 4663);\n";{ cp.code()+="etiss_coverage_count(1, 4697);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4684, 4683, 4682, 4681);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4690, 4689, 4688, 4687);\n";cp.code()+="res = fcmp_s(frs1, frs2, 1ULL);\n";cp.code()+="etiss_coverage_count(6, 4696, 4691, 4695, 4692, 4693, 4694);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4698);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4704, 4701, 4699, 4702, 4703);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4711, 4709, 4708, 4706, 4710);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4714, 4713);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4726, 4715, 4725, 4719, 4716, 4720, 4723, 4721, 4724);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fle_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fmsub_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmsub_s",(uint32_t) 0x000047,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMSUB_S\n");cp.code()+="etiss_coverage_count(1, 91);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3613);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3597);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = fmadd_s(unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]), 1ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(14, 3581, 3580, 3568, 3567, 3566, 3572, 3571, 3570, 3576, 3575, 3574, 3577, 3579, 3578);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3596, 3584, 3583, 3595, 3594, 3592);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3600, 3599);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3612, 3601, 3611, 3605, 3602, 3606, 3609, 3607, 3610);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;std::stringstream ss;ss<< "fmsub_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+" | rs3="+std::to_string(rs3)+"]");return ss.str();})
static InstructionDefinition fadd_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fadd_s",(uint32_t) 0x000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FADD_S\n");cp.code()+="etiss_coverage_count(1, 94);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3841);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3825);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3796, 3795, 3794, 3793);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3802, 3801, 3800, 3799);\n";cp.code()+="etiss_uint32 res = fadd_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(6, 3809, 3808, 3804, 3805, 3807, 3806);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3824, 3812, 3811, 3823, 3822, 3820);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3828, 3827);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3840, 3829, 3839, 3833, 3830, 3834, 3837, 3835, 3838);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fadd_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fnmsub_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmsub_s",(uint32_t) 0x00004b,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FNMSUB_S\n");cp.code()+="etiss_coverage_count(1, 93);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3773);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3757);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3720, 3719, 3718, 3717);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3726, 3725, 3724, 3723);\n";cp.code()+="etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3732, 3731, 3730, 3729);\n";cp.code()+="etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 3ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(8, 3741, 3740, 3734, 3735, 3736, 3737, 3739, 3738);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3756, 3744, 3743, 3755, 3754, 3752);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3760, 3759);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3772, 3761, 3771, 3765, 3762, 3766, 3769, 3767, 3770);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;std::stringstream ss;ss<< "fnmsub_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+" | rs3="+std::to_string(rs3)+"]");return ss.str();})
static InstructionDefinition flt_s_rd_rs1_rs2(ISA32_RV32IMACFD, "flt_s",(uint32_t) 0xa0001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLT_S\n");cp.code()+="etiss_coverage_count(1, 107);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4661);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4598, 4597);\n";{ cp.code()+="etiss_coverage_count(1, 4631);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4618, 4617, 4616, 4615);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4624, 4623, 4622, 4621);\n";cp.code()+="res = fcmp_s(frs1, frs2, 2ULL);\n";cp.code()+="etiss_coverage_count(6, 4630, 4625, 4629, 4626, 4627, 4628);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4632);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4638, 4635, 4633, 4636, 4637);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4645, 4643, 4642, 4640, 4644);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4648, 4647);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4660, 4649, 4659, 4653, 4650, 4654, 4657, 4655, 4658);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "flt_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_w_s_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_w_s",(uint32_t) 0xc0000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_W_S\n");cp.code()+="etiss_coverage_count(1, 104);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4468);\n";cp.code()+="{ // block\n";cp.code()+="etiss_int32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4413, 4412);\n";{ cp.code()+="etiss_coverage_count(1, 4438);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4431, 4430, 4429, 4428);\n";cp.code()+="res = fcvt_s(frs1, 0LL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(6, 4437, 4432, 4436, 4433, 4434, 4435);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4439);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4445, 4442, 4440, 4443, 4444);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4452, 4450, 4449, 4447, 4451);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4455, 4454);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4467, 4456, 4466, 4460, 4457, 4461, 4464, 4462, 4465);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fcvt_w_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fmin_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fmin_s",(uint32_t) 0x28000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMIN_S\n");cp.code()+="etiss_coverage_count(1, 102);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4344);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4328);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4300, 4299, 4298, 4297);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4306, 4305, 4304, 4303);\n";cp.code()+="etiss_uint32 res = fsel_s(frs1, frs2, 0LL);\n";cp.code()+="etiss_coverage_count(5, 4312, 4311, 4308, 4309, 4310);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4327, 4315, 4314, 4326, 4325, 4323);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4331, 4330);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4343, 4332, 4342, 4336, 4333, 4337, 4340, 4338, 4341);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fmin_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_wu_s_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_wu_s",(uint32_t) 0xc0100053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_WU_S\n");cp.code()+="etiss_coverage_count(1, 105);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4529);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4471, 4470);\n";{ cp.code()+="etiss_coverage_count(1, 4496);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4489, 4488, 4487, 4486);\n";cp.code()+="res = fcvt_s(frs1, 1ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(6, 4495, 4490, 4494, 4491, 4492, 4493);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4497);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4503, 4500, 4498, 4501, 4502);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = (etiss_uint32)((etiss_int32)(res));\n";cp.code()+="etiss_coverage_count(7, 4513, 4508, 4507, 4505, 4512, 4510, 4509);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4516, 4515);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4528, 4517, 4527, 4521, 4518, 4522, 4525, 4523, 4526);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fcvt_wu_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fsw_imm_rs1_rs2(ISA32_RV32IMACFD, "fsw",(uint32_t) 0x002027,(uint32_t) 0x00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint16 imm=0;static BitArrayRange R_imm_0(11, 7);imm+=R_imm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;static BitArrayRange R_imm_5(31, 25);imm+=R_imm_5.read(ba)<< 5;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSW\n");cp.code()+="etiss_coverage_count(1, 89);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3471);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 offs = *((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL] + "+std::to_string(((etiss_int16)(((etiss_int16) imm)<<(4)) > >(4)))+"LL;\n";cp.code()+="etiss_coverage_count(7, 3461, 3460, 3456, 3455, 3453, 3459, 3457);\n";cp.code()+="etiss_uint32 mem_val_0;\n";cp.code()+="mem_val_0 = (etiss_uint32)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(6, 3470, 3464, 3463, 3469, 3467, 3466);\n";cp.code()+="cpu->exception |= (*(system->dwrite))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";cp.code()+="if (cpu->exception) { // conditional\n";{ cp.code()+="{ // procedure\n";cp.code()+="RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";cp.code()+="goto instr_exit_"+std::to_string(ic.current_address_)+";\n";cp.code()+="} // procedure\n";} cp.code()+="} // conditional\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} { CodePart &cp=cs.append(CodePart::APPENDEDRETURNINGREQUIRED);cp.code()=std::string("//FSW\n");cp.code()+="if (cpu->return_pending || cpu->exception) return cpu->exception;\n";} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint16 imm=0;static BitArrayRange R_imm_0(11, 7);imm+=R_imm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;static BitArrayRange R_imm_5(31, 25);imm+=R_imm_5.read(ba)<< 5;std::stringstream ss;ss<< "fsw"<< " # "<< ba<<(" [imm="+std::to_string(imm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_s_w_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_s_w",(uint32_t) 0xd0000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_S_W\n");cp.code()+="etiss_coverage_count(1, 110);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4807);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4806);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL]), 2ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(8, 4790, 4789, 4786, 4785, 4784, 4782, 4787, 4788);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4805, 4793, 4792, 4804, 4803, 4801);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fcvt_s_w"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fsgnjn_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjn_s",(uint32_t) 0x20001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJN_S\n");cp.code()+="etiss_coverage_count(1, 100);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4223);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4222);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4190, 4189, 4188, 4187);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4196, 4195, 4194, 4193);\n";cp.code()+="etiss_uint32 res = (((~((((frs2) >> (31ULL)) & 1ULL))) << 31) | ((((frs1) >> (0LL)) & 2147483647ULL)));\n";cp.code()+="etiss_coverage_count(11, 4208, 4207, 4202, 4201, 4198, 4199, 4200, 4206, 4203, 4204, 4205);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4221, 4211, 4210, 4220, 4219, 4217);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fsgnjn_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fclass_s_rd_rs1(ISA32_RV32IMACFD, "fclass_s",(uint32_t) 0xe0001053,(uint32_t) 0xfff0707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCLASS_S\n");cp.code()+="etiss_coverage_count(1, 109);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4762);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4730, 4729);\n";cp.code()+="res = fclass_s(unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]));\n";cp.code()+="etiss_coverage_count(6, 4747, 4741, 4746, 4745, 4744, 4743);\n";cp.code()+="etiss_coverage_count(1, 4748);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4754, 4751, 4749, 4752, 4753);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4761, 4759, 4758, 4756, 4760);\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fclass_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fsgnjx_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjx_s",(uint32_t) 0x20002053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJX_S\n");cp.code()+="etiss_coverage_count(1, 101);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4278);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4277);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4247, 4246, 4245, 4244);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4253, 4252, 4251, 4250);\n";cp.code()+="etiss_uint32 res = frs1 ^ (frs2 & 2147483648ULL);\n";cp.code()+="etiss_coverage_count(7, 4261, 4260, 4255, 4258, 4256, 4257, 4259);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4276, 4264, 4263, 4275, 4274, 4272);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fsgnjx_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fsqrt_s_rd_rm_rs1(ISA32_RV32IMACFD, "fsqrt_s",(uint32_t) 0x58000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSQRT_S\n");cp.code()+="etiss_coverage_count(1, 98);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4103);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4087);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4065, 4064, 4063, 4062);\n";cp.code()+="etiss_uint32 res = fsqrt_s(frs1, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(5, 4071, 4070, 4067, 4069, 4068);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4086, 4074, 4073, 4085, 4084, 4082);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4090, 4089);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4102, 4091, 4101, 4095, 4092, 4096, 4099, 4097, 4100);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fsqrt_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fmax_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fmax_s",(uint32_t) 0x28001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMAX_S\n");cp.code()+="etiss_coverage_count(1, 103);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4410);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4394);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4366, 4365, 4364, 4363);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4372, 4371, 4370, 4369);\n";cp.code()+="etiss_uint32 res = fsel_s(frs1, frs2, 1ULL);\n";cp.code()+="etiss_coverage_count(5, 4378, 4377, 4374, 4375, 4376);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4393, 4381, 4380, 4392, 4391, 4389);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4397, 4396);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4409, 4398, 4408, 4402, 4399, 4403, 4406, 4404, 4407);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "fmax_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition feq_s_rd_rs1_rs2(ISA32_RV32IMACFD, "feq_s",(uint32_t) 0xa0002053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FEQ_S\n");cp.code()+="etiss_coverage_count(1, 106);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4595);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4532, 4531);\n";{ cp.code()+="etiss_coverage_count(1, 4565);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4552, 4551, 4550, 4549);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4558, 4557, 4556, 4555);\n";cp.code()+="res = fcmp_s(frs1, frs2, 0LL);\n";cp.code()+="etiss_coverage_count(6, 4564, 4559, 4563, 4560, 4561, 4562);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4566);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4572, 4569, 4567, 4570, 4571);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4579, 4577, 4576, 4574, 4578);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4582, 4581);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4594, 4583, 4593, 4587, 4584, 4588, 4591, 4589, 4592);\n";cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;std::stringstream ss;ss<< "feq_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_s_wu_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_s_wu",(uint32_t) 0xd0100053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_S_WU\n");cp.code()+="etiss_coverage_count(1, 111);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4852);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4851);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL]), 3ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(8, 4835, 4834, 4831, 4830, 4829, 4827, 4832, 4833);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4850, 4838, 4837, 4849, 4848, 4846);\n";cp.code()+="} // block\n";} cp.code()+="} // block\n";} cp.code()+="instr_exit_"+std::to_string(ic.current_address_)+":\n";cp.code()+="cpu->instructionPointer = cpu->nextPc;\n";cp.getAffectedRegisters().add("instructionPointer", 32);} return true;}, 0, [](BitArray &ba, Instruction &instr) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;std::stringstream ss;ss<< "fcvt_s_wu"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
Contains a small code snipped.
@ APPENDEDRETURNINGREQUIRED
RegisterSet & getAffectedRegisters()
void append(const CodePart &part, CodePart::TYPE type)
void add(const RegisterPart &rp)
add a registerPart to the set or just its relevant bits if a register with the same name is already p...
Reading through it will only return bits within the range.
I read(const BitArray &ba)
reads bits from the range to the return value starting at the lsb.
this class contains parameters that persist in between instruction lookpus/translation within a trans...
uint64_t current_address_
start address of current instruction
holds information and translation callbacks for an instruction.
Page Table Entry (PTE) defines the composition of Page Frame Number (PFN) and relavant flags.