32rd += R_rd_0.
read(ba) << 0;
35rs1 += R_rs1_0.
read(ba) << 0;
38imm += R_imm_0.
read(ba) << 0;
46 cp.
code() = std::string(
"//FLW\n");
49cp.
code() +=
"etiss_coverage_count(1, 88);\n";
51cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
52cp.
code() +=
"{ // block\n";
54cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
55cp.
code() +=
"} // block\n";
58cp.
code() +=
"etiss_coverage_count(1, 3413);\n";
59cp.
code() +=
"{ // block\n";
60cp.
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";
61cp.
code() +=
"etiss_coverage_count(7, 3377, 3376, 3372, 3371, 3369, 3375, 3373);\n";
62cp.
code() +=
"etiss_uint32 mem_val_0;\n";
63cp.
code() +=
"cpu->exception |= (*(system->dread))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";
64cp.
code() +=
"if (cpu->exception) { // conditional\n";
66cp.
code() +=
"{ // procedure\n";
67cp.
code() +=
"RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";
69cp.
code() +=
"} // procedure\n";
71cp.
code() +=
"} // conditional\n";
72cp.
code() +=
"etiss_uint32 res = (etiss_uint32)(mem_val_0);\n";
73cp.
code() +=
"etiss_coverage_count(6, 3387, 3386, 3384, 3382, 3380, 3381);\n";
75cp.
code() +=
"etiss_coverage_count(1, 3412);\n";
76cp.
code() +=
"{ // block\n";
77cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
78cp.
code() +=
"etiss_coverage_count(6, 3411, 3399, 3398, 3410, 3409, 3407);\n";
79cp.
code() +=
"} // block\n";
81cp.
code() +=
"} // block\n";
84cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
91 cp.
code() = std::string(
"//FLW\n");
94cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
106rd += R_rd_0.read(ba) << 0;
109rs1 += R_rs1_0.read(ba) << 0;
112imm += R_imm_0.read(ba) << 0;
116 std::stringstream ss;
118ss <<
"flw" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | imm=" + std::to_string(imm) +
"]");
141imm += R_imm_0.
read(ba) << 0;
144rs1 += R_rs1_0.
read(ba) << 0;
147rs2 += R_rs2_0.
read(ba) << 0;
149imm += R_imm_5.
read(ba) << 5;
157 cp.
code() = std::string(
"//FSW\n");
160cp.
code() +=
"etiss_coverage_count(1, 89);\n";
162cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
163cp.
code() +=
"{ // block\n";
165cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
166cp.
code() +=
"} // block\n";
169cp.
code() +=
"etiss_coverage_count(1, 3437);\n";
170cp.
code() +=
"{ // block\n";
171cp.
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";
172cp.
code() +=
"etiss_coverage_count(7, 3424, 3423, 3419, 3418, 3416, 3422, 3420);\n";
173cp.
code() +=
"etiss_uint32 mem_val_0;\n";
174cp.
code() +=
"mem_val_0 = (etiss_uint32)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
175cp.
code() +=
"etiss_coverage_count(8, 3436, 3430, 3428, 3426, 3427, 3435, 3433, 3432);\n";
176cp.
code() +=
"cpu->exception |= (*(system->dwrite))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 4);\n";
177cp.
code() +=
"if (cpu->exception) { // conditional\n";
179cp.
code() +=
"{ // procedure\n";
180cp.
code() +=
"RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";
182cp.
code() +=
"} // procedure\n";
184cp.
code() +=
"} // conditional\n";
185cp.
code() +=
"} // block\n";
188cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
195 cp.
code() = std::string(
"//FSW\n");
198cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
210imm += R_imm_0.read(ba) << 0;
213rs1 += R_rs1_0.read(ba) << 0;
216rs2 += R_rs2_0.read(ba) << 0;
218imm += R_imm_5.read(ba) << 5;
222 std::stringstream ss;
224ss <<
"fsw" <<
" # " << ba << (
" [imm=" + std::to_string(imm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
235 (uint64_t) 0x600007f,
247rd += R_rd_0.
read(ba) << 0;
250rm += R_rm_0.
read(ba) << 0;
253rs1 += R_rs1_0.
read(ba) << 0;
256rs2 += R_rs2_0.
read(ba) << 0;
259rs3 += R_rs3_0.
read(ba) << 0;
267 cp.
code() = std::string(
"//FMADD_S\n");
270cp.
code() +=
"etiss_coverage_count(1, 90);\n";
272cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
273cp.
code() +=
"{ // block\n";
275cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
276cp.
code() +=
"} // block\n";
279cp.
code() +=
"etiss_coverage_count(1, 3508);\n";
280cp.
code() +=
"{ // block\n";
282cp.
code() +=
"etiss_coverage_count(1, 3492);\n";
283cp.
code() +=
"{ // block\n";
284cp.
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";
285cp.
code() +=
"etiss_coverage_count(14, 3476, 3475, 3463, 3462, 3461, 3467, 3466, 3465, 3471, 3470, 3469, 3472, 3474, 3473);\n";
286cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
287cp.
code() +=
"etiss_coverage_count(6, 3491, 3479, 3478, 3490, 3489, 3487);\n";
288cp.
code() +=
"} // block\n";
290cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
291cp.
code() +=
"etiss_coverage_count(2, 3495, 3494);\n";
292cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
293cp.
code() +=
"etiss_coverage_count(9, 3507, 3496, 3506, 3500, 3497, 3501, 3504, 3502, 3505);\n";
294cp.
code() +=
"} // block\n";
297cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
310rd += R_rd_0.read(ba) << 0;
313rm += R_rm_0.read(ba) << 0;
316rs1 += R_rs1_0.read(ba) << 0;
319rs2 += R_rs2_0.read(ba) << 0;
322rs3 += R_rs3_0.read(ba) << 0;
326 std::stringstream ss;
328ss <<
"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) +
"]");
339 (uint64_t) 0x600007f,
351rd += R_rd_0.
read(ba) << 0;
354rm += R_rm_0.
read(ba) << 0;
357rs1 += R_rs1_0.
read(ba) << 0;
360rs2 += R_rs2_0.
read(ba) << 0;
363rs3 += R_rs3_0.
read(ba) << 0;
371 cp.
code() = std::string(
"//FMSUB_S\n");
374cp.
code() +=
"etiss_coverage_count(1, 91);\n";
376cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
377cp.
code() +=
"{ // block\n";
379cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
380cp.
code() +=
"} // block\n";
383cp.
code() +=
"etiss_coverage_count(1, 3579);\n";
384cp.
code() +=
"{ // block\n";
386cp.
code() +=
"etiss_coverage_count(1, 3563);\n";
387cp.
code() +=
"{ // block\n";
388cp.
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";
389cp.
code() +=
"etiss_coverage_count(14, 3547, 3546, 3534, 3533, 3532, 3538, 3537, 3536, 3542, 3541, 3540, 3543, 3545, 3544);\n";
390cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
391cp.
code() +=
"etiss_coverage_count(6, 3562, 3550, 3549, 3561, 3560, 3558);\n";
392cp.
code() +=
"} // block\n";
394cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
395cp.
code() +=
"etiss_coverage_count(2, 3566, 3565);\n";
396cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
397cp.
code() +=
"etiss_coverage_count(9, 3578, 3567, 3577, 3571, 3568, 3572, 3575, 3573, 3576);\n";
398cp.
code() +=
"} // block\n";
401cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
414rd += R_rd_0.read(ba) << 0;
417rm += R_rm_0.read(ba) << 0;
420rs1 += R_rs1_0.read(ba) << 0;
423rs2 += R_rs2_0.read(ba) << 0;
426rs3 += R_rs3_0.read(ba) << 0;
430 std::stringstream ss;
432ss <<
"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) +
"]");
443 (uint64_t) 0x600007f,
455rd += R_rd_0.
read(ba) << 0;
458rm += R_rm_0.
read(ba) << 0;
461rs1 += R_rs1_0.
read(ba) << 0;
464rs2 += R_rs2_0.
read(ba) << 0;
467rs3 += R_rs3_0.
read(ba) << 0;
475 cp.
code() = std::string(
"//FNMADD_S\n");
478cp.
code() +=
"etiss_coverage_count(1, 92);\n";
480cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
481cp.
code() +=
"{ // block\n";
483cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
484cp.
code() +=
"} // block\n";
487cp.
code() +=
"etiss_coverage_count(1, 3659);\n";
488cp.
code() +=
"{ // block\n";
490cp.
code() +=
"etiss_coverage_count(1, 3643);\n";
491cp.
code() +=
"{ // block\n";
492cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
493cp.
code() +=
"etiss_coverage_count(4, 3606, 3605, 3604, 3603);\n";
494cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
495cp.
code() +=
"etiss_coverage_count(4, 3612, 3611, 3610, 3609);\n";
496cp.
code() +=
"etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]);\n";
497cp.
code() +=
"etiss_coverage_count(4, 3618, 3617, 3616, 3615);\n";
498cp.
code() +=
"etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 2ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
499cp.
code() +=
"etiss_coverage_count(8, 3627, 3626, 3620, 3621, 3622, 3623, 3625, 3624);\n";
500cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
501cp.
code() +=
"etiss_coverage_count(6, 3642, 3630, 3629, 3641, 3640, 3638);\n";
502cp.
code() +=
"} // block\n";
504cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
505cp.
code() +=
"etiss_coverage_count(2, 3646, 3645);\n";
506cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
507cp.
code() +=
"etiss_coverage_count(9, 3658, 3647, 3657, 3651, 3648, 3652, 3655, 3653, 3656);\n";
508cp.
code() +=
"} // block\n";
511cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
524rd += R_rd_0.read(ba) << 0;
527rm += R_rm_0.read(ba) << 0;
530rs1 += R_rs1_0.read(ba) << 0;
533rs2 += R_rs2_0.read(ba) << 0;
536rs3 += R_rs3_0.read(ba) << 0;
540 std::stringstream ss;
542ss <<
"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) +
"]");
553 (uint64_t) 0x600007f,
565rd += R_rd_0.
read(ba) << 0;
568rm += R_rm_0.
read(ba) << 0;
571rs1 += R_rs1_0.
read(ba) << 0;
574rs2 += R_rs2_0.
read(ba) << 0;
577rs3 += R_rs3_0.
read(ba) << 0;
585 cp.
code() = std::string(
"//FNMSUB_S\n");
588cp.
code() +=
"etiss_coverage_count(1, 93);\n";
590cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
591cp.
code() +=
"{ // block\n";
593cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
594cp.
code() +=
"} // block\n";
597cp.
code() +=
"etiss_coverage_count(1, 3739);\n";
598cp.
code() +=
"{ // block\n";
600cp.
code() +=
"etiss_coverage_count(1, 3723);\n";
601cp.
code() +=
"{ // block\n";
602cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
603cp.
code() +=
"etiss_coverage_count(4, 3686, 3685, 3684, 3683);\n";
604cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
605cp.
code() +=
"etiss_coverage_count(4, 3692, 3691, 3690, 3689);\n";
606cp.
code() +=
"etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]);\n";
607cp.
code() +=
"etiss_coverage_count(4, 3698, 3697, 3696, 3695);\n";
608cp.
code() +=
"etiss_uint32 res = fmadd_s(frs1, frs2, frs3, 3ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
609cp.
code() +=
"etiss_coverage_count(8, 3707, 3706, 3700, 3701, 3702, 3703, 3705, 3704);\n";
610cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
611cp.
code() +=
"etiss_coverage_count(6, 3722, 3710, 3709, 3721, 3720, 3718);\n";
612cp.
code() +=
"} // block\n";
614cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
615cp.
code() +=
"etiss_coverage_count(2, 3726, 3725);\n";
616cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
617cp.
code() +=
"etiss_coverage_count(9, 3738, 3727, 3737, 3731, 3728, 3732, 3735, 3733, 3736);\n";
618cp.
code() +=
"} // block\n";
621cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
634rd += R_rd_0.read(ba) << 0;
637rm += R_rm_0.read(ba) << 0;
640rs1 += R_rs1_0.read(ba) << 0;
643rs2 += R_rs2_0.read(ba) << 0;
646rs3 += R_rs3_0.read(ba) << 0;
650 std::stringstream ss;
652ss <<
"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) +
"]");
663 (uint64_t) 0xfe00007f,
675rd += R_rd_0.
read(ba) << 0;
678rm += R_rm_0.
read(ba) << 0;
681rs1 += R_rs1_0.
read(ba) << 0;
684rs2 += R_rs2_0.
read(ba) << 0;
692 cp.
code() = std::string(
"//FADD_S\n");
695cp.
code() +=
"etiss_coverage_count(1, 94);\n";
697cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
698cp.
code() +=
"{ // block\n";
700cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
701cp.
code() +=
"} // block\n";
704cp.
code() +=
"etiss_coverage_count(1, 3807);\n";
705cp.
code() +=
"{ // block\n";
707cp.
code() +=
"etiss_coverage_count(1, 3791);\n";
708cp.
code() +=
"{ // block\n";
709cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
710cp.
code() +=
"etiss_coverage_count(4, 3762, 3761, 3760, 3759);\n";
711cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
712cp.
code() +=
"etiss_coverage_count(4, 3768, 3767, 3766, 3765);\n";
713cp.
code() +=
"etiss_uint32 res = fadd_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
714cp.
code() +=
"etiss_coverage_count(6, 3775, 3774, 3770, 3771, 3773, 3772);\n";
715cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
716cp.
code() +=
"etiss_coverage_count(6, 3790, 3778, 3777, 3789, 3788, 3786);\n";
717cp.
code() +=
"} // block\n";
719cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
720cp.
code() +=
"etiss_coverage_count(2, 3794, 3793);\n";
721cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
722cp.
code() +=
"etiss_coverage_count(9, 3806, 3795, 3805, 3799, 3796, 3800, 3803, 3801, 3804);\n";
723cp.
code() +=
"} // block\n";
726cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
739rd += R_rd_0.read(ba) << 0;
742rm += R_rm_0.read(ba) << 0;
745rs1 += R_rs1_0.read(ba) << 0;
748rs2 += R_rs2_0.read(ba) << 0;
752 std::stringstream ss;
754ss <<
"fadd_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
764 (uint64_t) 0x8000053,
765 (uint64_t) 0xfe00007f,
777rd += R_rd_0.
read(ba) << 0;
780rm += R_rm_0.
read(ba) << 0;
783rs1 += R_rs1_0.
read(ba) << 0;
786rs2 += R_rs2_0.
read(ba) << 0;
794 cp.
code() = std::string(
"//FSUB_S\n");
797cp.
code() +=
"etiss_coverage_count(1, 95);\n";
799cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
800cp.
code() +=
"{ // block\n";
802cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
803cp.
code() +=
"} // block\n";
806cp.
code() +=
"etiss_coverage_count(1, 3875);\n";
807cp.
code() +=
"{ // block\n";
809cp.
code() +=
"etiss_coverage_count(1, 3859);\n";
810cp.
code() +=
"{ // block\n";
811cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
812cp.
code() +=
"etiss_coverage_count(4, 3830, 3829, 3828, 3827);\n";
813cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
814cp.
code() +=
"etiss_coverage_count(4, 3836, 3835, 3834, 3833);\n";
815cp.
code() +=
"etiss_uint32 res = fsub_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
816cp.
code() +=
"etiss_coverage_count(6, 3843, 3842, 3838, 3839, 3841, 3840);\n";
817cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
818cp.
code() +=
"etiss_coverage_count(6, 3858, 3846, 3845, 3857, 3856, 3854);\n";
819cp.
code() +=
"} // block\n";
821cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
822cp.
code() +=
"etiss_coverage_count(2, 3862, 3861);\n";
823cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
824cp.
code() +=
"etiss_coverage_count(9, 3874, 3863, 3873, 3867, 3864, 3868, 3871, 3869, 3872);\n";
825cp.
code() +=
"} // block\n";
828cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
841rd += R_rd_0.read(ba) << 0;
844rm += R_rm_0.read(ba) << 0;
847rs1 += R_rs1_0.read(ba) << 0;
850rs2 += R_rs2_0.read(ba) << 0;
854 std::stringstream ss;
856ss <<
"fsub_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
866 (uint64_t) 0x10000053,
867 (uint64_t) 0xfe00007f,
879rd += R_rd_0.
read(ba) << 0;
882rm += R_rm_0.
read(ba) << 0;
885rs1 += R_rs1_0.
read(ba) << 0;
888rs2 += R_rs2_0.
read(ba) << 0;
896 cp.
code() = std::string(
"//FMUL_S\n");
899cp.
code() +=
"etiss_coverage_count(1, 96);\n";
901cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
902cp.
code() +=
"{ // block\n";
904cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
905cp.
code() +=
"} // block\n";
908cp.
code() +=
"etiss_coverage_count(1, 3943);\n";
909cp.
code() +=
"{ // block\n";
911cp.
code() +=
"etiss_coverage_count(1, 3927);\n";
912cp.
code() +=
"{ // block\n";
913cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
914cp.
code() +=
"etiss_coverage_count(4, 3898, 3897, 3896, 3895);\n";
915cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
916cp.
code() +=
"etiss_coverage_count(4, 3904, 3903, 3902, 3901);\n";
917cp.
code() +=
"etiss_uint32 res = fmul_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
918cp.
code() +=
"etiss_coverage_count(6, 3911, 3910, 3906, 3907, 3909, 3908);\n";
919cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
920cp.
code() +=
"etiss_coverage_count(6, 3926, 3914, 3913, 3925, 3924, 3922);\n";
921cp.
code() +=
"} // block\n";
923cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
924cp.
code() +=
"etiss_coverage_count(2, 3930, 3929);\n";
925cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
926cp.
code() +=
"etiss_coverage_count(9, 3942, 3931, 3941, 3935, 3932, 3936, 3939, 3937, 3940);\n";
927cp.
code() +=
"} // block\n";
930cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
943rd += R_rd_0.read(ba) << 0;
946rm += R_rm_0.read(ba) << 0;
949rs1 += R_rs1_0.read(ba) << 0;
952rs2 += R_rs2_0.read(ba) << 0;
956 std::stringstream ss;
958ss <<
"fmul_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
968 (uint64_t) 0x18000053,
969 (uint64_t) 0xfe00007f,
981rd += R_rd_0.
read(ba) << 0;
984rm += R_rm_0.
read(ba) << 0;
987rs1 += R_rs1_0.
read(ba) << 0;
990rs2 += R_rs2_0.
read(ba) << 0;
998 cp.
code() = std::string(
"//FDIV_S\n");
1001cp.
code() +=
"etiss_coverage_count(1, 97);\n";
1003cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1004cp.
code() +=
"{ // block\n";
1006cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1007cp.
code() +=
"} // block\n";
1010cp.
code() +=
"etiss_coverage_count(1, 4011);\n";
1011cp.
code() +=
"{ // block\n";
1013cp.
code() +=
"etiss_coverage_count(1, 3995);\n";
1014cp.
code() +=
"{ // block\n";
1015cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1016cp.
code() +=
"etiss_coverage_count(4, 3966, 3965, 3964, 3963);\n";
1017cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1018cp.
code() +=
"etiss_coverage_count(4, 3972, 3971, 3970, 3969);\n";
1019cp.
code() +=
"etiss_uint32 res = fdiv_s(frs1, frs2, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
1020cp.
code() +=
"etiss_coverage_count(6, 3979, 3978, 3974, 3975, 3977, 3976);\n";
1021cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1022cp.
code() +=
"etiss_coverage_count(6, 3994, 3982, 3981, 3993, 3992, 3990);\n";
1023cp.
code() +=
"} // block\n";
1025cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1026cp.
code() +=
"etiss_coverage_count(2, 3998, 3997);\n";
1027cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1028cp.
code() +=
"etiss_coverage_count(9, 4010, 3999, 4009, 4003, 4000, 4004, 4007, 4005, 4008);\n";
1029cp.
code() +=
"} // block\n";
1032cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1045rd += R_rd_0.read(ba) << 0;
1048rm += R_rm_0.read(ba) << 0;
1051rs1 += R_rs1_0.read(ba) << 0;
1054rs2 += R_rs2_0.read(ba) << 0;
1058 std::stringstream ss;
1060ss <<
"fdiv_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1070 (uint64_t) 0x58000053,
1071 (uint64_t) 0xfff0007f,
1083rd += R_rd_0.
read(ba) << 0;
1086rm += R_rm_0.
read(ba) << 0;
1089rs1 += R_rs1_0.
read(ba) << 0;
1097 cp.
code() = std::string(
"//FSQRT_S\n");
1100cp.
code() +=
"etiss_coverage_count(1, 98);\n";
1102cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1103cp.
code() +=
"{ // block\n";
1105cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1106cp.
code() +=
"} // block\n";
1109cp.
code() +=
"etiss_coverage_count(1, 4069);\n";
1110cp.
code() +=
"{ // block\n";
1112cp.
code() +=
"etiss_coverage_count(1, 4053);\n";
1113cp.
code() +=
"{ // block\n";
1114cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1115cp.
code() +=
"etiss_coverage_count(4, 4031, 4030, 4029, 4028);\n";
1116cp.
code() +=
"etiss_uint32 res = fsqrt_s(frs1, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
1117cp.
code() +=
"etiss_coverage_count(5, 4037, 4036, 4033, 4035, 4034);\n";
1118cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1119cp.
code() +=
"etiss_coverage_count(6, 4052, 4040, 4039, 4051, 4050, 4048);\n";
1120cp.
code() +=
"} // block\n";
1122cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1123cp.
code() +=
"etiss_coverage_count(2, 4056, 4055);\n";
1124cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1125cp.
code() +=
"etiss_coverage_count(9, 4068, 4057, 4067, 4061, 4058, 4062, 4065, 4063, 4066);\n";
1126cp.
code() +=
"} // block\n";
1129cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1142rd += R_rd_0.read(ba) << 0;
1145rm += R_rm_0.read(ba) << 0;
1148rs1 += R_rs1_0.read(ba) << 0;
1152 std::stringstream ss;
1154ss <<
"fsqrt_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1164 (uint64_t) 0x20000053,
1165 (uint64_t) 0xfe00707f,
1177rd += R_rd_0.
read(ba) << 0;
1180rs1 += R_rs1_0.
read(ba) << 0;
1183rs2 += R_rs2_0.
read(ba) << 0;
1191 cp.
code() = std::string(
"//FSGNJ_S\n");
1194cp.
code() +=
"etiss_coverage_count(1, 99);\n";
1196cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1197cp.
code() +=
"{ // block\n";
1199cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1200cp.
code() +=
"} // block\n";
1203cp.
code() +=
"etiss_coverage_count(1, 4128);\n";
1204cp.
code() +=
"{ // block\n";
1206cp.
code() +=
"etiss_coverage_count(1, 4127);\n";
1207cp.
code() +=
"{ // block\n";
1208cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1209cp.
code() +=
"etiss_coverage_count(4, 4096, 4095, 4094, 4093);\n";
1210cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1211cp.
code() +=
"etiss_coverage_count(4, 4102, 4101, 4100, 4099);\n";
1212cp.
code() +=
"etiss_uint32 res = ((((((frs2) >> (31ULL)) & 0x1ULL)) << 31) | (((frs1) & 0x7fffffffULL)));\n";
1213cp.
code() +=
"etiss_coverage_count(10, 4113, 4112, 4107, 4104, 4105, 4106, 4111, 4108, 4109, 4110);\n";
1214cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1215cp.
code() +=
"etiss_coverage_count(6, 4126, 4116, 4115, 4125, 4124, 4122);\n";
1216cp.
code() +=
"} // block\n";
1218cp.
code() +=
"} // block\n";
1221cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1234rd += R_rd_0.read(ba) << 0;
1237rs1 += R_rs1_0.read(ba) << 0;
1240rs2 += R_rs2_0.read(ba) << 0;
1244 std::stringstream ss;
1246ss <<
"fsgnj_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1256 (uint64_t) 0x20001053,
1257 (uint64_t) 0xfe00707f,
1269rd += R_rd_0.
read(ba) << 0;
1272rs1 += R_rs1_0.
read(ba) << 0;
1275rs2 += R_rs2_0.
read(ba) << 0;
1283 cp.
code() = std::string(
"//FSGNJN_S\n");
1286cp.
code() +=
"etiss_coverage_count(1, 100);\n";
1288cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1289cp.
code() +=
"{ // block\n";
1291cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1292cp.
code() +=
"} // block\n";
1295cp.
code() +=
"etiss_coverage_count(1, 4189);\n";
1296cp.
code() +=
"{ // block\n";
1298cp.
code() +=
"etiss_coverage_count(1, 4188);\n";
1299cp.
code() +=
"{ // block\n";
1300cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1301cp.
code() +=
"etiss_coverage_count(4, 4156, 4155, 4154, 4153);\n";
1302cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1303cp.
code() +=
"etiss_coverage_count(4, 4162, 4161, 4160, 4159);\n";
1304cp.
code() +=
"etiss_uint32 res = (((~((((frs2) >> (31ULL)) & 0x1ULL))) << 31) | (((frs1) & 0x7fffffffULL)));\n";
1305cp.
code() +=
"etiss_coverage_count(11, 4174, 4173, 4168, 4167, 4164, 4165, 4166, 4172, 4169, 4170, 4171);\n";
1306cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1307cp.
code() +=
"etiss_coverage_count(6, 4187, 4177, 4176, 4186, 4185, 4183);\n";
1308cp.
code() +=
"} // block\n";
1310cp.
code() +=
"} // block\n";
1313cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1326rd += R_rd_0.read(ba) << 0;
1329rs1 += R_rs1_0.read(ba) << 0;
1332rs2 += R_rs2_0.read(ba) << 0;
1336 std::stringstream ss;
1338ss <<
"fsgnjn_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1348 (uint64_t) 0x20002053,
1349 (uint64_t) 0xfe00707f,
1361rd += R_rd_0.
read(ba) << 0;
1364rs1 += R_rs1_0.
read(ba) << 0;
1367rs2 += R_rs2_0.
read(ba) << 0;
1375 cp.
code() = std::string(
"//FSGNJX_S\n");
1378cp.
code() +=
"etiss_coverage_count(1, 101);\n";
1380cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1381cp.
code() +=
"{ // block\n";
1383cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1384cp.
code() +=
"} // block\n";
1387cp.
code() +=
"etiss_coverage_count(1, 4244);\n";
1388cp.
code() +=
"{ // block\n";
1390cp.
code() +=
"etiss_coverage_count(1, 4243);\n";
1391cp.
code() +=
"{ // block\n";
1392cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1393cp.
code() +=
"etiss_coverage_count(4, 4213, 4212, 4211, 4210);\n";
1394cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1395cp.
code() +=
"etiss_coverage_count(4, 4219, 4218, 4217, 4216);\n";
1396cp.
code() +=
"etiss_uint32 res = frs1 ^ (frs2 & 2147483648ULL);\n";
1397cp.
code() +=
"etiss_coverage_count(7, 4227, 4226, 4221, 4224, 4222, 4223, 4225);\n";
1398cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1399cp.
code() +=
"etiss_coverage_count(6, 4242, 4230, 4229, 4241, 4240, 4238);\n";
1400cp.
code() +=
"} // block\n";
1402cp.
code() +=
"} // block\n";
1405cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1418rd += R_rd_0.read(ba) << 0;
1421rs1 += R_rs1_0.read(ba) << 0;
1424rs2 += R_rs2_0.read(ba) << 0;
1428 std::stringstream ss;
1430ss <<
"fsgnjx_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1440 (uint64_t) 0x28000053,
1441 (uint64_t) 0xfe00707f,
1453rd += R_rd_0.
read(ba) << 0;
1456rs1 += R_rs1_0.
read(ba) << 0;
1459rs2 += R_rs2_0.
read(ba) << 0;
1467 cp.
code() = std::string(
"//FMIN_S\n");
1470cp.
code() +=
"etiss_coverage_count(1, 102);\n";
1472cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1473cp.
code() +=
"{ // block\n";
1475cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1476cp.
code() +=
"} // block\n";
1479cp.
code() +=
"etiss_coverage_count(1, 4310);\n";
1480cp.
code() +=
"{ // block\n";
1482cp.
code() +=
"etiss_coverage_count(1, 4294);\n";
1483cp.
code() +=
"{ // block\n";
1484cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1485cp.
code() +=
"etiss_coverage_count(4, 4266, 4265, 4264, 4263);\n";
1486cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1487cp.
code() +=
"etiss_coverage_count(4, 4272, 4271, 4270, 4269);\n";
1488cp.
code() +=
"etiss_uint32 res = fsel_s(frs1, frs2, 0LL);\n";
1489cp.
code() +=
"etiss_coverage_count(5, 4278, 4277, 4274, 4275, 4276);\n";
1490cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1491cp.
code() +=
"etiss_coverage_count(6, 4293, 4281, 4280, 4292, 4291, 4289);\n";
1492cp.
code() +=
"} // block\n";
1494cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1495cp.
code() +=
"etiss_coverage_count(2, 4297, 4296);\n";
1496cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1497cp.
code() +=
"etiss_coverage_count(9, 4309, 4298, 4308, 4302, 4299, 4303, 4306, 4304, 4307);\n";
1498cp.
code() +=
"} // block\n";
1501cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1514rd += R_rd_0.read(ba) << 0;
1517rs1 += R_rs1_0.read(ba) << 0;
1520rs2 += R_rs2_0.read(ba) << 0;
1524 std::stringstream ss;
1526ss <<
"fmin_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1536 (uint64_t) 0x28001053,
1537 (uint64_t) 0xfe00707f,
1549rd += R_rd_0.
read(ba) << 0;
1552rs1 += R_rs1_0.
read(ba) << 0;
1555rs2 += R_rs2_0.
read(ba) << 0;
1563 cp.
code() = std::string(
"//FMAX_S\n");
1566cp.
code() +=
"etiss_coverage_count(1, 103);\n";
1568cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1569cp.
code() +=
"{ // block\n";
1571cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1572cp.
code() +=
"} // block\n";
1575cp.
code() +=
"etiss_coverage_count(1, 4376);\n";
1576cp.
code() +=
"{ // block\n";
1578cp.
code() +=
"etiss_coverage_count(1, 4360);\n";
1579cp.
code() +=
"{ // block\n";
1580cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1581cp.
code() +=
"etiss_coverage_count(4, 4332, 4331, 4330, 4329);\n";
1582cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1583cp.
code() +=
"etiss_coverage_count(4, 4338, 4337, 4336, 4335);\n";
1584cp.
code() +=
"etiss_uint32 res = fsel_s(frs1, frs2, 1ULL);\n";
1585cp.
code() +=
"etiss_coverage_count(5, 4344, 4343, 4340, 4341, 4342);\n";
1586cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
1587cp.
code() +=
"etiss_coverage_count(6, 4359, 4347, 4346, 4358, 4357, 4355);\n";
1588cp.
code() +=
"} // block\n";
1590cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1591cp.
code() +=
"etiss_coverage_count(2, 4363, 4362);\n";
1592cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1593cp.
code() +=
"etiss_coverage_count(9, 4375, 4364, 4374, 4368, 4365, 4369, 4372, 4370, 4373);\n";
1594cp.
code() +=
"} // block\n";
1597cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1610rd += R_rd_0.read(ba) << 0;
1613rs1 += R_rs1_0.read(ba) << 0;
1616rs2 += R_rs2_0.read(ba) << 0;
1620 std::stringstream ss;
1622ss <<
"fmax_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1632 (uint64_t) 0xc0000053,
1633 (uint64_t) 0xfff0007f,
1645rd += R_rd_0.
read(ba) << 0;
1648rm += R_rm_0.
read(ba) << 0;
1651rs1 += R_rs1_0.
read(ba) << 0;
1659 cp.
code() = std::string(
"//FCVT_W_S\n");
1662cp.
code() +=
"etiss_coverage_count(1, 104);\n";
1664cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1665cp.
code() +=
"{ // block\n";
1667cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1668cp.
code() +=
"} // block\n";
1671cp.
code() +=
"etiss_coverage_count(1, 4434);\n";
1672cp.
code() +=
"{ // block\n";
1673cp.
code() +=
"etiss_int32 res = 0LL;\n";
1674cp.
code() +=
"etiss_coverage_count(2, 4379, 4378);\n";
1676cp.
code() +=
"etiss_coverage_count(1, 4404);\n";
1677cp.
code() +=
"{ // block\n";
1678cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1679cp.
code() +=
"etiss_coverage_count(4, 4397, 4396, 4395, 4394);\n";
1680cp.
code() +=
"res = fcvt_s(frs1, 0LL, " + std::to_string(rm) +
"ULL);\n";
1681cp.
code() +=
"etiss_coverage_count(6, 4403, 4398, 4402, 4399, 4400, 4401);\n";
1682cp.
code() +=
"} // block\n";
1684cp.
code() +=
"etiss_coverage_count(1, 4405);\n";
1685if ((rd % 32ULL) != 0LL) {
1686cp.
code() +=
"etiss_coverage_count(5, 4411, 4408, 4406, 4409, 4410);\n";
1687cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1688cp.
code() +=
"etiss_coverage_count(5, 4418, 4416, 4415, 4413, 4417);\n";
1690cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1691cp.
code() +=
"etiss_coverage_count(2, 4421, 4420);\n";
1692cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1693cp.
code() +=
"etiss_coverage_count(9, 4433, 4422, 4432, 4426, 4423, 4427, 4430, 4428, 4431);\n";
1694cp.
code() +=
"} // block\n";
1697cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1710rd += R_rd_0.read(ba) << 0;
1713rm += R_rm_0.read(ba) << 0;
1716rs1 += R_rs1_0.read(ba) << 0;
1720 std::stringstream ss;
1722ss <<
"fcvt_w_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1732 (uint64_t) 0xc0100053,
1733 (uint64_t) 0xfff0007f,
1745rd += R_rd_0.
read(ba) << 0;
1748rm += R_rm_0.
read(ba) << 0;
1751rs1 += R_rs1_0.
read(ba) << 0;
1759 cp.
code() = std::string(
"//FCVT_WU_S\n");
1762cp.
code() +=
"etiss_coverage_count(1, 105);\n";
1764cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1765cp.
code() +=
"{ // block\n";
1767cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1768cp.
code() +=
"} // block\n";
1771cp.
code() +=
"etiss_coverage_count(1, 4495);\n";
1772cp.
code() +=
"{ // block\n";
1773cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1774cp.
code() +=
"etiss_coverage_count(2, 4437, 4436);\n";
1776cp.
code() +=
"etiss_coverage_count(1, 4462);\n";
1777cp.
code() +=
"{ // block\n";
1778cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1779cp.
code() +=
"etiss_coverage_count(4, 4455, 4454, 4453, 4452);\n";
1780cp.
code() +=
"res = fcvt_s(frs1, 1ULL, " + std::to_string(rm) +
"ULL);\n";
1781cp.
code() +=
"etiss_coverage_count(6, 4461, 4456, 4460, 4457, 4458, 4459);\n";
1782cp.
code() +=
"} // block\n";
1784cp.
code() +=
"etiss_coverage_count(1, 4463);\n";
1785if ((rd % 32ULL) != 0LL) {
1786cp.
code() +=
"etiss_coverage_count(5, 4469, 4466, 4464, 4467, 4468);\n";
1787cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = (etiss_uint32)((etiss_int32)(res));\n";
1788cp.
code() +=
"etiss_coverage_count(7, 4479, 4474, 4473, 4471, 4478, 4476, 4475);\n";
1790cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1791cp.
code() +=
"etiss_coverage_count(2, 4482, 4481);\n";
1792cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1793cp.
code() +=
"etiss_coverage_count(9, 4494, 4483, 4493, 4487, 4484, 4488, 4491, 4489, 4492);\n";
1794cp.
code() +=
"} // block\n";
1797cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1810rd += R_rd_0.read(ba) << 0;
1813rm += R_rm_0.read(ba) << 0;
1816rs1 += R_rs1_0.read(ba) << 0;
1820 std::stringstream ss;
1822ss <<
"fcvt_wu_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1832 (uint64_t) 0xa0002053,
1833 (uint64_t) 0xfe00707f,
1845rd += R_rd_0.
read(ba) << 0;
1848rs1 += R_rs1_0.
read(ba) << 0;
1851rs2 += R_rs2_0.
read(ba) << 0;
1859 cp.
code() = std::string(
"//FEQ_S\n");
1862cp.
code() +=
"etiss_coverage_count(1, 106);\n";
1864cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1865cp.
code() +=
"{ // block\n";
1867cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1868cp.
code() +=
"} // block\n";
1871cp.
code() +=
"etiss_coverage_count(1, 4561);\n";
1872cp.
code() +=
"{ // block\n";
1873cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1874cp.
code() +=
"etiss_coverage_count(2, 4498, 4497);\n";
1876cp.
code() +=
"etiss_coverage_count(1, 4531);\n";
1877cp.
code() +=
"{ // block\n";
1878cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1879cp.
code() +=
"etiss_coverage_count(4, 4518, 4517, 4516, 4515);\n";
1880cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1881cp.
code() +=
"etiss_coverage_count(4, 4524, 4523, 4522, 4521);\n";
1882cp.
code() +=
"res = fcmp_s(frs1, frs2, 0LL);\n";
1883cp.
code() +=
"etiss_coverage_count(6, 4530, 4525, 4529, 4526, 4527, 4528);\n";
1884cp.
code() +=
"} // block\n";
1886cp.
code() +=
"etiss_coverage_count(1, 4532);\n";
1887if ((rd % 32ULL) != 0LL) {
1888cp.
code() +=
"etiss_coverage_count(5, 4538, 4535, 4533, 4536, 4537);\n";
1889cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1890cp.
code() +=
"etiss_coverage_count(5, 4545, 4543, 4542, 4540, 4544);\n";
1892cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1893cp.
code() +=
"etiss_coverage_count(2, 4548, 4547);\n";
1894cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1895cp.
code() +=
"etiss_coverage_count(9, 4560, 4549, 4559, 4553, 4550, 4554, 4557, 4555, 4558);\n";
1896cp.
code() +=
"} // block\n";
1899cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1912rd += R_rd_0.read(ba) << 0;
1915rs1 += R_rs1_0.read(ba) << 0;
1918rs2 += R_rs2_0.read(ba) << 0;
1922 std::stringstream ss;
1924ss <<
"feq_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1934 (uint64_t) 0xa0001053,
1935 (uint64_t) 0xfe00707f,
1947rd += R_rd_0.
read(ba) << 0;
1950rs1 += R_rs1_0.
read(ba) << 0;
1953rs2 += R_rs2_0.
read(ba) << 0;
1961 cp.
code() = std::string(
"//FLT_S\n");
1964cp.
code() +=
"etiss_coverage_count(1, 107);\n";
1966cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
1967cp.
code() +=
"{ // block\n";
1969cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
1970cp.
code() +=
"} // block\n";
1973cp.
code() +=
"etiss_coverage_count(1, 4627);\n";
1974cp.
code() +=
"{ // block\n";
1975cp.
code() +=
"etiss_uint32 res = 0LL;\n";
1976cp.
code() +=
"etiss_coverage_count(2, 4564, 4563);\n";
1978cp.
code() +=
"etiss_coverage_count(1, 4597);\n";
1979cp.
code() +=
"{ // block\n";
1980cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
1981cp.
code() +=
"etiss_coverage_count(4, 4584, 4583, 4582, 4581);\n";
1982cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
1983cp.
code() +=
"etiss_coverage_count(4, 4590, 4589, 4588, 4587);\n";
1984cp.
code() +=
"res = fcmp_s(frs1, frs2, 2ULL);\n";
1985cp.
code() +=
"etiss_coverage_count(6, 4596, 4591, 4595, 4592, 4593, 4594);\n";
1986cp.
code() +=
"} // block\n";
1988cp.
code() +=
"etiss_coverage_count(1, 4598);\n";
1989if ((rd % 32ULL) != 0LL) {
1990cp.
code() +=
"etiss_coverage_count(5, 4604, 4601, 4599, 4602, 4603);\n";
1991cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1992cp.
code() +=
"etiss_coverage_count(5, 4611, 4609, 4608, 4606, 4610);\n";
1994cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1995cp.
code() +=
"etiss_coverage_count(2, 4614, 4613);\n";
1996cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1997cp.
code() +=
"etiss_coverage_count(9, 4626, 4615, 4625, 4619, 4616, 4620, 4623, 4621, 4624);\n";
1998cp.
code() +=
"} // block\n";
2001cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2014rd += R_rd_0.read(ba) << 0;
2017rs1 += R_rs1_0.read(ba) << 0;
2020rs2 += R_rs2_0.read(ba) << 0;
2024 std::stringstream ss;
2026ss <<
"flt_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
2036 (uint64_t) 0xa0000053,
2037 (uint64_t) 0xfe00707f,
2049rd += R_rd_0.
read(ba) << 0;
2052rs1 += R_rs1_0.
read(ba) << 0;
2055rs2 += R_rs2_0.
read(ba) << 0;
2063 cp.
code() = std::string(
"//FLE_S\n");
2066cp.
code() +=
"etiss_coverage_count(1, 108);\n";
2068cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2069cp.
code() +=
"{ // block\n";
2071cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2072cp.
code() +=
"} // block\n";
2075cp.
code() +=
"etiss_coverage_count(1, 4693);\n";
2076cp.
code() +=
"{ // block\n";
2077cp.
code() +=
"etiss_uint32 res = 0LL;\n";
2078cp.
code() +=
"etiss_coverage_count(2, 4630, 4629);\n";
2080cp.
code() +=
"etiss_coverage_count(1, 4663);\n";
2081cp.
code() +=
"{ // block\n";
2082cp.
code() +=
"etiss_uint32 frs1 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]);\n";
2083cp.
code() +=
"etiss_coverage_count(4, 4650, 4649, 4648, 4647);\n";
2084cp.
code() +=
"etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
2085cp.
code() +=
"etiss_coverage_count(4, 4656, 4655, 4654, 4653);\n";
2086cp.
code() +=
"res = fcmp_s(frs1, frs2, 1ULL);\n";
2087cp.
code() +=
"etiss_coverage_count(6, 4662, 4657, 4661, 4658, 4659, 4660);\n";
2088cp.
code() +=
"} // block\n";
2090cp.
code() +=
"etiss_coverage_count(1, 4664);\n";
2091if ((rd % 32ULL) != 0LL) {
2092cp.
code() +=
"etiss_coverage_count(5, 4670, 4667, 4665, 4668, 4669);\n";
2093cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
2094cp.
code() +=
"etiss_coverage_count(5, 4677, 4675, 4674, 4672, 4676);\n";
2096cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
2097cp.
code() +=
"etiss_coverage_count(2, 4680, 4679);\n";
2098cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
2099cp.
code() +=
"etiss_coverage_count(9, 4692, 4681, 4691, 4685, 4682, 4686, 4689, 4687, 4690);\n";
2100cp.
code() +=
"} // block\n";
2103cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2116rd += R_rd_0.read(ba) << 0;
2119rs1 += R_rs1_0.read(ba) << 0;
2122rs2 += R_rs2_0.read(ba) << 0;
2126 std::stringstream ss;
2128ss <<
"fle_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
2138 (uint64_t) 0xe0001053,
2139 (uint64_t) 0xfff0707f,
2151rd += R_rd_0.
read(ba) << 0;
2154rs1 += R_rs1_0.
read(ba) << 0;
2162 cp.
code() = std::string(
"//FCLASS_S\n");
2165cp.
code() +=
"etiss_coverage_count(1, 109);\n";
2167cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2168cp.
code() +=
"{ // block\n";
2170cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2171cp.
code() +=
"} // block\n";
2174cp.
code() +=
"etiss_coverage_count(1, 4728);\n";
2175cp.
code() +=
"{ // block\n";
2176cp.
code() +=
"etiss_uint32 res = 0LL;\n";
2177cp.
code() +=
"etiss_coverage_count(2, 4696, 4695);\n";
2178cp.
code() +=
"res = fclass_s(unbox_s(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]));\n";
2179cp.
code() +=
"etiss_coverage_count(6, 4713, 4707, 4712, 4711, 4710, 4709);\n";
2180cp.
code() +=
"etiss_coverage_count(1, 4714);\n";
2181if ((rd % 32ULL) != 0LL) {
2182cp.
code() +=
"etiss_coverage_count(5, 4720, 4717, 4715, 4718, 4719);\n";
2183cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
2184cp.
code() +=
"etiss_coverage_count(5, 4727, 4725, 4724, 4722, 4726);\n";
2186cp.
code() +=
"} // block\n";
2189cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2202rd += R_rd_0.read(ba) << 0;
2205rs1 += R_rs1_0.read(ba) << 0;
2209 std::stringstream ss;
2211ss <<
"fclass_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
2221 (uint64_t) 0xd0000053,
2222 (uint64_t) 0xfff0007f,
2234rd += R_rd_0.
read(ba) << 0;
2237rm += R_rm_0.
read(ba) << 0;
2240rs1 += R_rs1_0.
read(ba) << 0;
2248 cp.
code() = std::string(
"//FCVT_S_W\n");
2251cp.
code() +=
"etiss_coverage_count(1, 110);\n";
2253cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2254cp.
code() +=
"{ // block\n";
2256cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2257cp.
code() +=
"} // block\n";
2260cp.
code() +=
"etiss_coverage_count(1, 4773);\n";
2261cp.
code() +=
"{ // block\n";
2263cp.
code() +=
"etiss_coverage_count(1, 4772);\n";
2264cp.
code() +=
"{ // block\n";
2265cp.
code() +=
"etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 2ULL, " + std::to_string(rm) +
"ULL);\n";
2266cp.
code() +=
"etiss_coverage_count(8, 4756, 4755, 4752, 4751, 4750, 4748, 4753, 4754);\n";
2267cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
2268cp.
code() +=
"etiss_coverage_count(6, 4771, 4759, 4758, 4770, 4769, 4767);\n";
2269cp.
code() +=
"} // block\n";
2271cp.
code() +=
"} // block\n";
2274cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2287rd += R_rd_0.read(ba) << 0;
2290rm += R_rm_0.read(ba) << 0;
2293rs1 += R_rs1_0.read(ba) << 0;
2297 std::stringstream ss;
2299ss <<
"fcvt_s_w" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2309 (uint64_t) 0xd0100053,
2310 (uint64_t) 0xfff0007f,
2322rd += R_rd_0.
read(ba) << 0;
2325rm += R_rm_0.
read(ba) << 0;
2328rs1 += R_rs1_0.
read(ba) << 0;
2336 cp.
code() = std::string(
"//FCVT_S_WU\n");
2339cp.
code() +=
"etiss_coverage_count(1, 111);\n";
2341cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2342cp.
code() +=
"{ // block\n";
2344cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2345cp.
code() +=
"} // block\n";
2348cp.
code() +=
"etiss_coverage_count(1, 4818);\n";
2349cp.
code() +=
"{ // block\n";
2351cp.
code() +=
"etiss_coverage_count(1, 4817);\n";
2352cp.
code() +=
"{ // block\n";
2353cp.
code() +=
"etiss_uint32 res = fcvt_s((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 3ULL, " + std::to_string(rm) +
"ULL);\n";
2354cp.
code() +=
"etiss_coverage_count(8, 4801, 4800, 4797, 4796, 4795, 4793, 4798, 4799);\n";
2355cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(res);\n";
2356cp.
code() +=
"etiss_coverage_count(6, 4816, 4804, 4803, 4815, 4814, 4812);\n";
2357cp.
code() +=
"} // block\n";
2359cp.
code() +=
"} // block\n";
2362cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2375rd += R_rd_0.read(ba) << 0;
2378rm += R_rm_0.read(ba) << 0;
2381rs1 += R_rs1_0.read(ba) << 0;
2385 std::stringstream ss;
2387ss <<
"fcvt_s_wu" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2397 (uint64_t) 0xe0000053,
2398 (uint64_t) 0xfff0707f,
2410rd += R_rd_0.
read(ba) << 0;
2413rs1 += R_rs1_0.
read(ba) << 0;
2421 cp.
code() = std::string(
"//FMV_X_W\n");
2424cp.
code() +=
"etiss_coverage_count(1, 112);\n";
2426cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2427cp.
code() +=
"{ // block\n";
2429cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2430cp.
code() +=
"} // block\n";
2433cp.
code() +=
"etiss_coverage_count(1, 4839);\n";
2434cp.
code() +=
"{ // block\n";
2435cp.
code() +=
"etiss_coverage_count(1, 4819);\n";
2436if ((rd % 32ULL) != 0LL) {
2437cp.
code() +=
"etiss_coverage_count(5, 4825, 4822, 4820, 4823, 4824);\n";
2438cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = (etiss_uint32)((etiss_int32)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]));\n";
2439cp.
code() +=
"etiss_coverage_count(8, 4838, 4830, 4829, 4827, 4837, 4835, 4833, 4832);\n";
2441cp.
code() +=
"} // block\n";
2444cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2457rd += R_rd_0.read(ba) << 0;
2460rs1 += R_rs1_0.read(ba) << 0;
2464 std::stringstream ss;
2466ss <<
"fmv_x_w" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
2476 (uint64_t) 0xf0000053,
2477 (uint64_t) 0xfff0707f,
2489rd += R_rd_0.
read(ba) << 0;
2492rs1 += R_rs1_0.
read(ba) << 0;
2500 cp.
code() = std::string(
"//FMV_W_X\n");
2503cp.
code() +=
"etiss_coverage_count(1, 113);\n";
2505cp.
code() +=
"etiss_coverage_count(1, 1189);\n";
2506cp.
code() +=
"{ // block\n";
2508cp.
code() +=
"etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";
2509cp.
code() +=
"} // block\n";
2512cp.
code() +=
"etiss_coverage_count(1, 4873);\n";
2513cp.
code() +=
"{ // block\n";
2515cp.
code() +=
"etiss_coverage_count(1, 4872);\n";
2516cp.
code() +=
"{ // block\n";
2517cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL | (etiss_uint64)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]);\n";
2518cp.
code() +=
"etiss_coverage_count(8, 4871, 4855, 4854, 4870, 4869, 4867, 4866, 4864);\n";
2519cp.
code() +=
"} // block\n";
2521cp.
code() +=
"} // block\n";
2524cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2537rd += R_rd_0.read(ba) << 0;
2540rs1 += R_rs1_0.read(ba) << 0;
2544 std::stringstream ss;
2546ss <<
"fmv_w_x" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
etiss::instr::InstructionGroup ISA32_RV32IMACFD("ISA32_RV32IMACFD", 32)
static InstructionDefinition fle_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fle_s",(uint64_t) 0xa0000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4693);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4630, 4629);\n";{ cp.code()+="etiss_coverage_count(1, 4663);\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, 4650, 4649, 4648, 4647);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4656, 4655, 4654, 4653);\n";cp.code()+="res = fcmp_s(frs1, frs2, 1ULL);\n";cp.code()+="etiss_coverage_count(6, 4662, 4657, 4661, 4658, 4659, 4660);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4664);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4670, 4667, 4665, 4668, 4669);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4677, 4675, 4674, 4672, 4676);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4680, 4679);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4692, 4681, 4691, 4685, 4682, 4686, 4689, 4687, 4690);\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 fdiv_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fdiv_s",(uint64_t) 0x18000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4011);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3995);\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, 3966, 3965, 3964, 3963);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3972, 3971, 3970, 3969);\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, 3979, 3978, 3974, 3975, 3977, 3976);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3994, 3982, 3981, 3993, 3992, 3990);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3998, 3997);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4010, 3999, 4009, 4003, 4000, 4004, 4007, 4005, 4008);\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 fcvt_w_s_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_w_s",(uint64_t) 0xc0000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4434);\n";cp.code()+="{ // block\n";cp.code()+="etiss_int32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4379, 4378);\n";{ cp.code()+="etiss_coverage_count(1, 4404);\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, 4397, 4396, 4395, 4394);\n";cp.code()+="res = fcvt_s(frs1, 0LL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(6, 4403, 4398, 4402, 4399, 4400, 4401);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4405);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4411, 4408, 4406, 4409, 4410);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4418, 4416, 4415, 4413, 4417);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4421, 4420);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4433, 4422, 4432, 4426, 4423, 4427, 4430, 4428, 4431);\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 fmadd_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmadd_s",(uint64_t) 0x000043,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3508);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3492);\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, 3476, 3475, 3463, 3462, 3461, 3467, 3466, 3465, 3471, 3470, 3469, 3472, 3474, 3473);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3491, 3479, 3478, 3490, 3489, 3487);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3495, 3494);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3507, 3496, 3506, 3500, 3497, 3501, 3504, 3502, 3505);\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 fnmsub_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmsub_s",(uint64_t) 0x00004b,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3739);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3723);\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, 3686, 3685, 3684, 3683);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3692, 3691, 3690, 3689);\n";cp.code()+="etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3698, 3697, 3696, 3695);\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, 3707, 3706, 3700, 3701, 3702, 3703, 3705, 3704);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3722, 3710, 3709, 3721, 3720, 3718);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3726, 3725);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3738, 3727, 3737, 3731, 3728, 3732, 3735, 3733, 3736);\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 fmv_x_w_rd_rs1(ISA32_RV32IMACFD, "fmv_x_w",(uint64_t) 0xe0000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4839);\n";cp.code()+="{ // block\n";cp.code()+="etiss_coverage_count(1, 4819);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4825, 4822, 4820, 4823, 4824);\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, 4838, 4830, 4829, 4827, 4837, 4835, 4833, 4832);\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 fcvt_s_wu_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_s_wu",(uint64_t) 0xd0100053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4818);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4817);\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, 4801, 4800, 4797, 4796, 4795, 4793, 4798, 4799);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4816, 4804, 4803, 4815, 4814, 4812);\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();})
static InstructionDefinition fmsub_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmsub_s",(uint64_t) 0x000047,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3579);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3563);\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, 3547, 3546, 3534, 3533, 3532, 3538, 3537, 3536, 3542, 3541, 3540, 3543, 3545, 3544);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3562, 3550, 3549, 3561, 3560, 3558);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3566, 3565);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3578, 3567, 3577, 3571, 3568, 3572, 3575, 3573, 3576);\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 fmv_w_x_rd_rs1(ISA32_RV32IMACFD, "fmv_w_x",(uint64_t) 0xf0000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4873);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4872);\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, 4871, 4855, 4854, 4870, 4869, 4867, 4866, 4864);\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 fsqrt_s_rd_rm_rs1(ISA32_RV32IMACFD, "fsqrt_s",(uint64_t) 0x58000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4069);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4053);\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, 4031, 4030, 4029, 4028);\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, 4037, 4036, 4033, 4035, 4034);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4052, 4040, 4039, 4051, 4050, 4048);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4056, 4055);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4068, 4057, 4067, 4061, 4058, 4062, 4065, 4063, 4066);\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 fmin_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fmin_s",(uint64_t) 0x28000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4310);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4294);\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, 4266, 4265, 4264, 4263);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4272, 4271, 4270, 4269);\n";cp.code()+="etiss_uint32 res = fsel_s(frs1, frs2, 0LL);\n";cp.code()+="etiss_coverage_count(5, 4278, 4277, 4274, 4275, 4276);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4293, 4281, 4280, 4292, 4291, 4289);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4297, 4296);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4309, 4298, 4308, 4302, 4299, 4303, 4306, 4304, 4307);\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 fsgnjx_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjx_s",(uint64_t) 0x20002053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4244);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4243);\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, 4213, 4212, 4211, 4210);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4219, 4218, 4217, 4216);\n";cp.code()+="etiss_uint32 res = frs1 ^ (frs2 & 2147483648ULL);\n";cp.code()+="etiss_coverage_count(7, 4227, 4226, 4221, 4224, 4222, 4223, 4225);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4242, 4230, 4229, 4241, 4240, 4238);\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 feq_s_rd_rs1_rs2(ISA32_RV32IMACFD, "feq_s",(uint64_t) 0xa0002053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4561);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4498, 4497);\n";{ cp.code()+="etiss_coverage_count(1, 4531);\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, 4518, 4517, 4516, 4515);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4524, 4523, 4522, 4521);\n";cp.code()+="res = fcmp_s(frs1, frs2, 0LL);\n";cp.code()+="etiss_coverage_count(6, 4530, 4525, 4529, 4526, 4527, 4528);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4532);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4538, 4535, 4533, 4536, 4537);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4545, 4543, 4542, 4540, 4544);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4548, 4547);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4560, 4549, 4559, 4553, 4550, 4554, 4557, 4555, 4558);\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 fsub_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fsub_s",(uint64_t) 0x8000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3875);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3859);\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, 3830, 3829, 3828, 3827);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3836, 3835, 3834, 3833);\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, 3843, 3842, 3838, 3839, 3841, 3840);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3858, 3846, 3845, 3857, 3856, 3854);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3862, 3861);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3874, 3863, 3873, 3867, 3864, 3868, 3871, 3869, 3872);\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 fsgnj_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnj_s",(uint64_t) 0x20000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4128);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4127);\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, 4096, 4095, 4094, 4093);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4102, 4101, 4100, 4099);\n";cp.code()+="etiss_uint32 res = ((((((frs2) >> (31ULL)) & 0x1ULL)) << 31) | (((frs1) & 0x7fffffffULL)));\n";cp.code()+="etiss_coverage_count(10, 4113, 4112, 4107, 4104, 4105, 4106, 4111, 4108, 4109, 4110);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4126, 4116, 4115, 4125, 4124, 4122);\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 fcvt_s_w_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_s_w",(uint64_t) 0xd0000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4773);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4772);\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, 4756, 4755, 4752, 4751, 4750, 4748, 4753, 4754);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4771, 4759, 4758, 4770, 4769, 4767);\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 fnmadd_s_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmadd_s",(uint64_t) 0x00004f,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3659);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3643);\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, 3606, 3605, 3604, 3603);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3612, 3611, 3610, 3609);\n";cp.code()+="etiss_uint32 frs3 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3618, 3617, 3616, 3615);\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, 3627, 3626, 3620, 3621, 3622, 3623, 3625, 3624);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3642, 3630, 3629, 3641, 3640, 3638);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3646, 3645);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3658, 3647, 3657, 3651, 3648, 3652, 3655, 3653, 3656);\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",(uint64_t) 0x10000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3943);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3927);\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, 3898, 3897, 3896, 3895);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3904, 3903, 3902, 3901);\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, 3911, 3910, 3906, 3907, 3909, 3908);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3926, 3914, 3913, 3925, 3924, 3922);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3930, 3929);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3942, 3931, 3941, 3935, 3932, 3936, 3939, 3937, 3940);\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 fadd_s_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fadd_s",(uint64_t) 0x000053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3807);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 3791);\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, 3762, 3761, 3760, 3759);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 3768, 3767, 3766, 3765);\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, 3775, 3774, 3770, 3771, 3773, 3772);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 3790, 3778, 3777, 3789, 3788, 3786);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 3794, 3793);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 3806, 3795, 3805, 3799, 3796, 3800, 3803, 3801, 3804);\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 fmax_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fmax_s",(uint64_t) 0x28001053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4376);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4360);\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, 4332, 4331, 4330, 4329);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4338, 4337, 4336, 4335);\n";cp.code()+="etiss_uint32 res = fsel_s(frs1, frs2, 1ULL);\n";cp.code()+="etiss_coverage_count(5, 4344, 4343, 4340, 4341, 4342);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4359, 4347, 4346, 4358, 4357, 4355);\n";cp.code()+="} // block\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4363, 4362);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4375, 4364, 4374, 4368, 4365, 4369, 4372, 4370, 4373);\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 fsgnjn_s_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjn_s",(uint64_t) 0x20001053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4189);\n";cp.code()+="{ // block\n";{ cp.code()+="etiss_coverage_count(1, 4188);\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, 4156, 4155, 4154, 4153);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4162, 4161, 4160, 4159);\n";cp.code()+="etiss_uint32 res = (((~((((frs2) >> (31ULL)) & 0x1ULL))) << 31) | (((frs1) & 0x7fffffffULL)));\n";cp.code()+="etiss_coverage_count(11, 4174, 4173, 4168, 4167, 4164, 4165, 4166, 4172, 4169, 4170, 4171);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL | (etiss_uint64)(res);\n";cp.code()+="etiss_coverage_count(6, 4187, 4177, 4176, 4186, 4185, 4183);\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 fcvt_wu_s_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_wu_s",(uint64_t) 0xc0100053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4495);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4437, 4436);\n";{ cp.code()+="etiss_coverage_count(1, 4462);\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, 4455, 4454, 4453, 4452);\n";cp.code()+="res = fcvt_s(frs1, 1ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(6, 4461, 4456, 4460, 4457, 4458, 4459);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4463);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4469, 4466, 4464, 4467, 4468);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = (etiss_uint32)((etiss_int32)(res));\n";cp.code()+="etiss_coverage_count(7, 4479, 4474, 4473, 4471, 4478, 4476, 4475);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4482, 4481);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4494, 4483, 4493, 4487, 4484, 4488, 4491, 4489, 4492);\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",(uint64_t) 0x002027,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3437);\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, 3424, 3423, 3419, 3418, 3416, 3422, 3420);\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(8, 3436, 3430, 3428, 3426, 3427, 3435, 3433, 3432);\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 flt_s_rd_rs1_rs2(ISA32_RV32IMACFD, "flt_s",(uint64_t) 0xa0001053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4627);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4564, 4563);\n";{ cp.code()+="etiss_coverage_count(1, 4597);\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, 4584, 4583, 4582, 4581);\n";cp.code()+="etiss_uint32 frs2 = unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(4, 4590, 4589, 4588, 4587);\n";cp.code()+="res = fcmp_s(frs1, frs2, 2ULL);\n";cp.code()+="etiss_coverage_count(6, 4596, 4591, 4595, 4592, 4593, 4594);\n";cp.code()+="} // block\n";} cp.code()+="etiss_coverage_count(1, 4598);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4604, 4601, 4599, 4602, 4603);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4611, 4609, 4608, 4606, 4610);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 4614, 4613);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 4626, 4615, 4625, 4619, 4616, 4620, 4623, 4621, 4624);\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 fclass_s_rd_rs1(ISA32_RV32IMACFD, "fclass_s",(uint64_t) 0xe0001053,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 4728);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 4696, 4695);\n";cp.code()+="res = fclass_s(unbox_s(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]));\n";cp.code()+="etiss_coverage_count(6, 4713, 4707, 4712, 4711, 4710, 4709);\n";cp.code()+="etiss_coverage_count(1, 4714);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 4720, 4717, 4715, 4718, 4719);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 4727, 4725, 4724, 4722, 4726);\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 flw_rd_rs1_imm(ISA32_RV32IMACFD, "flw",(uint64_t) 0x002007,(uint64_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, 1189);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string((etiss_uint32)((ic.current_address_+4)))+"ULL;\n";cp.code()+="etiss_coverage_count(7, 1188, 1181, 1187, 1184, 1182, 1183, 1185);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 3413);\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, 3377, 3376, 3372, 3371, 3369, 3375, 3373);\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(6, 3387, 3386, 3384, 3382, 3380, 3381);\n";{ cp.code()+="etiss_coverage_count(1, 3412);\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, 3411, 3399, 3398, 3410, 3409, 3407);\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();})
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.