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(
"//FLD\n");
49cp.
code() +=
"etiss_coverage_count(1, 118);\n";
51cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
52cp.
code() +=
"{ // block\n";
54cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
55cp.
code() +=
"} // block\n";
58cp.
code() +=
"etiss_coverage_count(1, 5067);\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, 5038, 5037, 5033, 5032, 5030, 5036, 5034);\n";
62cp.
code() +=
"etiss_uint64 mem_val_0;\n";
63cp.
code() +=
"cpu->exception |= (*(system->dread))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 8);\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_uint64 res = (etiss_uint64)(mem_val_0);\n";
73cp.
code() +=
"etiss_coverage_count(4, 5045, 5044, 5042, 5041);\n";
74cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
75cp.
code() +=
"etiss_coverage_count(4, 5054, 5052, 5051, 5053);\n";
76cp.
code() +=
"} // block\n";
79cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
86 cp.
code() = std::string(
"//FLD\n");
89cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
101rd += R_rd_0.read(ba) << 0;
104rs1 += R_rs1_0.read(ba) << 0;
107imm += R_imm_0.read(ba) << 0;
111 std::stringstream ss;
113ss <<
"fld" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | imm=" + std::to_string(imm) +
"]");
136imm += R_imm_0.
read(ba) << 0;
139rs1 += R_rs1_0.
read(ba) << 0;
142rs2 += R_rs2_0.
read(ba) << 0;
144imm += R_imm_5.
read(ba) << 5;
152 cp.
code() = std::string(
"//FSD\n");
155cp.
code() +=
"etiss_coverage_count(1, 119);\n";
157cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
158cp.
code() +=
"{ // block\n";
160cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
161cp.
code() +=
"} // block\n";
164cp.
code() +=
"etiss_coverage_count(1, 5088);\n";
165cp.
code() +=
"{ // block\n";
166cp.
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";
167cp.
code() +=
"etiss_coverage_count(7, 5078, 5077, 5073, 5072, 5070, 5076, 5074);\n";
168cp.
code() +=
"etiss_uint64 mem_val_0;\n";
169cp.
code() +=
"mem_val_0 = (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]);\n";
170cp.
code() +=
"etiss_coverage_count(6, 5087, 5081, 5080, 5086, 5084, 5083);\n";
171cp.
code() +=
"cpu->exception |= (*(system->dwrite))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 8);\n";
172cp.
code() +=
"if (cpu->exception) { // conditional\n";
174cp.
code() +=
"{ // procedure\n";
175cp.
code() +=
"RV32IMACFD_translate_exc_code(cpu, system, plugin_pointers, cpu->exception);\n";
177cp.
code() +=
"} // procedure\n";
179cp.
code() +=
"} // conditional\n";
180cp.
code() +=
"} // block\n";
183cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
190 cp.
code() = std::string(
"//FSD\n");
193cp.
code() +=
"if (cpu->return_pending || cpu->exception) return cpu->exception;\n";
205imm += R_imm_0.read(ba) << 0;
208rs1 += R_rs1_0.read(ba) << 0;
211rs2 += R_rs2_0.read(ba) << 0;
213imm += R_imm_5.read(ba) << 5;
217 std::stringstream ss;
219ss <<
"fsd" <<
" # " << ba << (
" [imm=" + std::to_string(imm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
229 (uint32_t) 0x2000043,
230 (uint32_t) 0x600007f,
242rd += R_rd_0.
read(ba) << 0;
245rm += R_rm_0.
read(ba) << 0;
248rs1 += R_rs1_0.
read(ba) << 0;
251rs2 += R_rs2_0.
read(ba) << 0;
254rs3 += R_rs3_0.
read(ba) << 0;
262 cp.
code() = std::string(
"//FMADD_D\n");
265cp.
code() +=
"etiss_coverage_count(1, 120);\n";
267cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
268cp.
code() +=
"{ // block\n";
270cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
271cp.
code() +=
"} // block\n";
274cp.
code() +=
"etiss_coverage_count(1, 5146);\n";
275cp.
code() +=
"{ // block\n";
276cp.
code() +=
"etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 0LL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
277cp.
code() +=
"etiss_coverage_count(14, 5109, 5108, 5094, 5092, 5091, 5099, 5097, 5096, 5104, 5102, 5101, 5105, 5107, 5106);\n";
278cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
279cp.
code() +=
"etiss_coverage_count(4, 5118, 5116, 5115, 5117);\n";
280cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
281cp.
code() +=
"etiss_coverage_count(2, 5133, 5132);\n";
282cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
283cp.
code() +=
"etiss_coverage_count(9, 5145, 5134, 5144, 5138, 5135, 5139, 5142, 5140, 5143);\n";
284cp.
code() +=
"} // block\n";
287cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
300rd += R_rd_0.read(ba) << 0;
303rm += R_rm_0.read(ba) << 0;
306rs1 += R_rs1_0.read(ba) << 0;
309rs2 += R_rs2_0.read(ba) << 0;
312rs3 += R_rs3_0.read(ba) << 0;
316 std::stringstream ss;
318ss <<
"fmadd_d" <<
" # " << 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) +
"]");
328 (uint32_t) 0x2000047,
329 (uint32_t) 0x600007f,
341rd += R_rd_0.
read(ba) << 0;
344rm += R_rm_0.
read(ba) << 0;
347rs1 += R_rs1_0.
read(ba) << 0;
350rs2 += R_rs2_0.
read(ba) << 0;
353rs3 += R_rs3_0.
read(ba) << 0;
361 cp.
code() = std::string(
"//FMSUB_D\n");
364cp.
code() +=
"etiss_coverage_count(1, 121);\n";
366cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
367cp.
code() +=
"{ // block\n";
369cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
370cp.
code() +=
"} // block\n";
373cp.
code() +=
"etiss_coverage_count(1, 5204);\n";
374cp.
code() +=
"{ // block\n";
375cp.
code() +=
"etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 1ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
376cp.
code() +=
"etiss_coverage_count(14, 5167, 5166, 5152, 5150, 5149, 5157, 5155, 5154, 5162, 5160, 5159, 5163, 5165, 5164);\n";
377cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
378cp.
code() +=
"etiss_coverage_count(4, 5176, 5174, 5173, 5175);\n";
379cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
380cp.
code() +=
"etiss_coverage_count(2, 5191, 5190);\n";
381cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
382cp.
code() +=
"etiss_coverage_count(9, 5203, 5192, 5202, 5196, 5193, 5197, 5200, 5198, 5201);\n";
383cp.
code() +=
"} // block\n";
386cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
399rd += R_rd_0.read(ba) << 0;
402rm += R_rm_0.read(ba) << 0;
405rs1 += R_rs1_0.read(ba) << 0;
408rs2 += R_rs2_0.read(ba) << 0;
411rs3 += R_rs3_0.read(ba) << 0;
415 std::stringstream ss;
417ss <<
"fmsub_d" <<
" # " << 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) +
"]");
427 (uint32_t) 0x200004f,
428 (uint32_t) 0x600007f,
440rd += R_rd_0.
read(ba) << 0;
443rm += R_rm_0.
read(ba) << 0;
446rs1 += R_rs1_0.
read(ba) << 0;
449rs2 += R_rs2_0.
read(ba) << 0;
452rs3 += R_rs3_0.
read(ba) << 0;
460 cp.
code() = std::string(
"//FNMADD_D\n");
463cp.
code() +=
"etiss_coverage_count(1, 122);\n";
465cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
466cp.
code() +=
"{ // block\n";
468cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
469cp.
code() +=
"} // block\n";
472cp.
code() +=
"etiss_coverage_count(1, 5262);\n";
473cp.
code() +=
"{ // block\n";
474cp.
code() +=
"etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 2ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
475cp.
code() +=
"etiss_coverage_count(14, 5225, 5224, 5210, 5208, 5207, 5215, 5213, 5212, 5220, 5218, 5217, 5221, 5223, 5222);\n";
476cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
477cp.
code() +=
"etiss_coverage_count(4, 5234, 5232, 5231, 5233);\n";
478cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
479cp.
code() +=
"etiss_coverage_count(2, 5249, 5248);\n";
480cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
481cp.
code() +=
"etiss_coverage_count(9, 5261, 5250, 5260, 5254, 5251, 5255, 5258, 5256, 5259);\n";
482cp.
code() +=
"} // block\n";
485cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
498rd += R_rd_0.read(ba) << 0;
501rm += R_rm_0.read(ba) << 0;
504rs1 += R_rs1_0.read(ba) << 0;
507rs2 += R_rs2_0.read(ba) << 0;
510rs3 += R_rs3_0.read(ba) << 0;
514 std::stringstream ss;
516ss <<
"fnmadd_d" <<
" # " << 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) +
"]");
526 (uint32_t) 0x200004b,
527 (uint32_t) 0x600007f,
539rd += R_rd_0.
read(ba) << 0;
542rm += R_rm_0.
read(ba) << 0;
545rs1 += R_rs1_0.
read(ba) << 0;
548rs2 += R_rs2_0.
read(ba) << 0;
551rs3 += R_rs3_0.
read(ba) << 0;
559 cp.
code() = std::string(
"//FNMSUB_D\n");
562cp.
code() +=
"etiss_coverage_count(1, 123);\n";
564cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
565cp.
code() +=
"{ // block\n";
567cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
568cp.
code() +=
"} // block\n";
571cp.
code() +=
"etiss_coverage_count(1, 5320);\n";
572cp.
code() +=
"{ // block\n";
573cp.
code() +=
"etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs3) +
"ULL]), 3ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
574cp.
code() +=
"etiss_coverage_count(14, 5283, 5282, 5268, 5266, 5265, 5273, 5271, 5270, 5278, 5276, 5275, 5279, 5281, 5280);\n";
575cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
576cp.
code() +=
"etiss_coverage_count(4, 5292, 5290, 5289, 5291);\n";
577cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
578cp.
code() +=
"etiss_coverage_count(2, 5307, 5306);\n";
579cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
580cp.
code() +=
"etiss_coverage_count(9, 5319, 5308, 5318, 5312, 5309, 5313, 5316, 5314, 5317);\n";
581cp.
code() +=
"} // block\n";
584cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
597rd += R_rd_0.read(ba) << 0;
600rm += R_rm_0.read(ba) << 0;
603rs1 += R_rs1_0.read(ba) << 0;
606rs2 += R_rs2_0.read(ba) << 0;
609rs3 += R_rs3_0.read(ba) << 0;
613 std::stringstream ss;
615ss <<
"fnmsub_d" <<
" # " << 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) +
"]");
625 (uint32_t) 0x2000053,
626 (uint32_t) 0xfe00007f,
638rd += R_rd_0.
read(ba) << 0;
641rm += R_rm_0.
read(ba) << 0;
644rs1 += R_rs1_0.
read(ba) << 0;
647rs2 += R_rs2_0.
read(ba) << 0;
655 cp.
code() = std::string(
"//FADD_D\n");
658cp.
code() +=
"etiss_coverage_count(1, 124);\n";
660cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
661cp.
code() +=
"{ // block\n";
663cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
664cp.
code() +=
"} // block\n";
667cp.
code() +=
"etiss_coverage_count(1, 5372);\n";
668cp.
code() +=
"{ // block\n";
669cp.
code() +=
"etiss_uint64 res = fadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
670cp.
code() +=
"etiss_coverage_count(10, 5335, 5334, 5326, 5324, 5323, 5331, 5329, 5328, 5333, 5332);\n";
671cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
672cp.
code() +=
"etiss_coverage_count(4, 5344, 5342, 5341, 5343);\n";
673cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
674cp.
code() +=
"etiss_coverage_count(2, 5359, 5358);\n";
675cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
676cp.
code() +=
"etiss_coverage_count(9, 5371, 5360, 5370, 5364, 5361, 5365, 5368, 5366, 5369);\n";
677cp.
code() +=
"} // block\n";
680cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
693rd += R_rd_0.read(ba) << 0;
696rm += R_rm_0.read(ba) << 0;
699rs1 += R_rs1_0.read(ba) << 0;
702rs2 += R_rs2_0.read(ba) << 0;
706 std::stringstream ss;
708ss <<
"fadd_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
718 (uint32_t) 0xa000053,
719 (uint32_t) 0xfe00007f,
731rd += R_rd_0.
read(ba) << 0;
734rm += R_rm_0.
read(ba) << 0;
737rs1 += R_rs1_0.
read(ba) << 0;
740rs2 += R_rs2_0.
read(ba) << 0;
748 cp.
code() = std::string(
"//FSUB_D\n");
751cp.
code() +=
"etiss_coverage_count(1, 125);\n";
753cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
754cp.
code() +=
"{ // block\n";
756cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
757cp.
code() +=
"} // block\n";
760cp.
code() +=
"etiss_coverage_count(1, 5424);\n";
761cp.
code() +=
"{ // block\n";
762cp.
code() +=
"etiss_uint64 res = fsub_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
763cp.
code() +=
"etiss_coverage_count(10, 5387, 5386, 5378, 5376, 5375, 5383, 5381, 5380, 5385, 5384);\n";
764cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
765cp.
code() +=
"etiss_coverage_count(4, 5396, 5394, 5393, 5395);\n";
766cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
767cp.
code() +=
"etiss_coverage_count(2, 5411, 5410);\n";
768cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
769cp.
code() +=
"etiss_coverage_count(9, 5423, 5412, 5422, 5416, 5413, 5417, 5420, 5418, 5421);\n";
770cp.
code() +=
"} // block\n";
773cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
786rd += R_rd_0.read(ba) << 0;
789rm += R_rm_0.read(ba) << 0;
792rs1 += R_rs1_0.read(ba) << 0;
795rs2 += R_rs2_0.read(ba) << 0;
799 std::stringstream ss;
801ss <<
"fsub_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
811 (uint32_t) 0x12000053,
812 (uint32_t) 0xfe00007f,
824rd += R_rd_0.
read(ba) << 0;
827rm += R_rm_0.
read(ba) << 0;
830rs1 += R_rs1_0.
read(ba) << 0;
833rs2 += R_rs2_0.
read(ba) << 0;
841 cp.
code() = std::string(
"//FMUL_D\n");
844cp.
code() +=
"etiss_coverage_count(1, 126);\n";
846cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
847cp.
code() +=
"{ // block\n";
849cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
850cp.
code() +=
"} // block\n";
853cp.
code() +=
"etiss_coverage_count(1, 5476);\n";
854cp.
code() +=
"{ // block\n";
855cp.
code() +=
"etiss_uint64 res = fmul_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
856cp.
code() +=
"etiss_coverage_count(10, 5439, 5438, 5430, 5428, 5427, 5435, 5433, 5432, 5437, 5436);\n";
857cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
858cp.
code() +=
"etiss_coverage_count(4, 5448, 5446, 5445, 5447);\n";
859cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
860cp.
code() +=
"etiss_coverage_count(2, 5463, 5462);\n";
861cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
862cp.
code() +=
"etiss_coverage_count(9, 5475, 5464, 5474, 5468, 5465, 5469, 5472, 5470, 5473);\n";
863cp.
code() +=
"} // block\n";
866cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
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;
892 std::stringstream ss;
894ss <<
"fmul_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
904 (uint32_t) 0x1a000053,
905 (uint32_t) 0xfe00007f,
917rd += R_rd_0.
read(ba) << 0;
920rm += R_rm_0.
read(ba) << 0;
923rs1 += R_rs1_0.
read(ba) << 0;
926rs2 += R_rs2_0.
read(ba) << 0;
934 cp.
code() = std::string(
"//FDIV_D\n");
937cp.
code() +=
"etiss_coverage_count(1, 127);\n";
939cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
940cp.
code() +=
"{ // block\n";
942cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
943cp.
code() +=
"} // block\n";
946cp.
code() +=
"etiss_coverage_count(1, 5528);\n";
947cp.
code() +=
"{ // block\n";
948cp.
code() +=
"etiss_uint64 res = fdiv_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
949cp.
code() +=
"etiss_coverage_count(10, 5491, 5490, 5482, 5480, 5479, 5487, 5485, 5484, 5489, 5488);\n";
950cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
951cp.
code() +=
"etiss_coverage_count(4, 5500, 5498, 5497, 5499);\n";
952cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
953cp.
code() +=
"etiss_coverage_count(2, 5515, 5514);\n";
954cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
955cp.
code() +=
"etiss_coverage_count(9, 5527, 5516, 5526, 5520, 5517, 5521, 5524, 5522, 5525);\n";
956cp.
code() +=
"} // block\n";
959cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
972rd += R_rd_0.read(ba) << 0;
975rm += R_rm_0.read(ba) << 0;
978rs1 += R_rs1_0.read(ba) << 0;
981rs2 += R_rs2_0.read(ba) << 0;
985 std::stringstream ss;
987ss <<
"fdiv_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
997 (uint32_t) 0x5a000053,
998 (uint32_t) 0xfff0007f,
1010rd += R_rd_0.
read(ba) << 0;
1013rm += R_rm_0.
read(ba) << 0;
1016rs1 += R_rs1_0.
read(ba) << 0;
1024 cp.
code() = std::string(
"//FSQRT_D\n");
1027cp.
code() +=
"etiss_coverage_count(1, 128);\n";
1029cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1030cp.
code() +=
"{ // block\n";
1032cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1033cp.
code() +=
"} // block\n";
1036cp.
code() +=
"etiss_coverage_count(1, 5575);\n";
1037cp.
code() +=
"{ // block\n";
1038cp.
code() +=
"etiss_uint64 res = fsqrt_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, " + std::to_string(rm) +
"ULL));\n";
1039cp.
code() +=
"etiss_coverage_count(7, 5538, 5537, 5534, 5532, 5531, 5536, 5535);\n";
1040cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1041cp.
code() +=
"etiss_coverage_count(4, 5547, 5545, 5544, 5546);\n";
1042cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1043cp.
code() +=
"etiss_coverage_count(2, 5562, 5561);\n";
1044cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1045cp.
code() +=
"etiss_coverage_count(9, 5574, 5563, 5573, 5567, 5564, 5568, 5571, 5569, 5572);\n";
1046cp.
code() +=
"} // block\n";
1049cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1062rd += R_rd_0.read(ba) << 0;
1065rm += R_rm_0.read(ba) << 0;
1068rs1 += R_rs1_0.read(ba) << 0;
1072 std::stringstream ss;
1074ss <<
"fsqrt_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1084 (uint32_t) 0x22000053,
1085 (uint32_t) 0xfe00707f,
1097rd += R_rd_0.
read(ba) << 0;
1100rs1 += R_rs1_0.
read(ba) << 0;
1103rs2 += R_rs2_0.
read(ba) << 0;
1111 cp.
code() = std::string(
"//FSGNJ_D\n");
1114cp.
code() +=
"etiss_coverage_count(1, 129);\n";
1116cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1117cp.
code() +=
"{ // block\n";
1119cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1120cp.
code() +=
"} // block\n";
1123cp.
code() +=
"etiss_coverage_count(1, 5612);\n";
1124cp.
code() +=
"{ // block\n";
1125cp.
code() +=
"etiss_uint64 res = ((((((((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]) >> (63ULL)) & 0x1ULL)) << 63) | (((((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]) & 0x7fffffffffffffffULL)));\n";
1126cp.
code() +=
"etiss_coverage_count(12, 5590, 5589, 5582, 5579, 5578, 5580, 5581, 5588, 5585, 5584, 5586, 5587);\n";
1127cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1128cp.
code() +=
"etiss_coverage_count(4, 5599, 5597, 5596, 5598);\n";
1129cp.
code() +=
"} // block\n";
1132cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1145rd += R_rd_0.read(ba) << 0;
1148rs1 += R_rs1_0.read(ba) << 0;
1151rs2 += R_rs2_0.read(ba) << 0;
1155 std::stringstream ss;
1157ss <<
"fsgnj_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1167 (uint32_t) 0x22001053,
1168 (uint32_t) 0xfe00707f,
1180rd += R_rd_0.
read(ba) << 0;
1183rs1 += R_rs1_0.
read(ba) << 0;
1186rs2 += R_rs2_0.
read(ba) << 0;
1194 cp.
code() = std::string(
"//FSGNJN_D\n");
1197cp.
code() +=
"etiss_coverage_count(1, 130);\n";
1199cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1200cp.
code() +=
"{ // block\n";
1202cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1203cp.
code() +=
"} // block\n";
1206cp.
code() +=
"etiss_coverage_count(1, 5650);\n";
1207cp.
code() +=
"{ // block\n";
1208cp.
code() +=
"etiss_uint64 res = (((~((((((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]) >> (63ULL)) & 0x1ULL))) << 63) | (((((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]) & 0x7fffffffffffffffULL)));\n";
1209cp.
code() +=
"etiss_coverage_count(13, 5628, 5627, 5620, 5619, 5616, 5615, 5617, 5618, 5626, 5623, 5622, 5624, 5625);\n";
1210cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1211cp.
code() +=
"etiss_coverage_count(4, 5637, 5635, 5634, 5636);\n";
1212cp.
code() +=
"} // block\n";
1215cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1228rd += R_rd_0.read(ba) << 0;
1231rs1 += R_rs1_0.read(ba) << 0;
1234rs2 += R_rs2_0.read(ba) << 0;
1238 std::stringstream ss;
1240ss <<
"fsgnjn_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1250 (uint32_t) 0x22002053,
1251 (uint32_t) 0xfe00707f,
1263rd += R_rd_0.
read(ba) << 0;
1266rs1 += R_rs1_0.
read(ba) << 0;
1269rs2 += R_rs2_0.
read(ba) << 0;
1277 cp.
code() = std::string(
"//FSGNJX_D\n");
1280cp.
code() +=
"etiss_coverage_count(1, 131);\n";
1282cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1283cp.
code() +=
"{ // block\n";
1285cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1286cp.
code() +=
"} // block\n";
1289cp.
code() +=
"etiss_coverage_count(1, 5691);\n";
1290cp.
code() +=
"{ // block\n";
1291cp.
code() +=
"etiss_uint64 res = (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]) ^ ((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]) & 9223372036854775808ULL);\n";
1292cp.
code() +=
"etiss_coverage_count(10, 5669, 5668, 5656, 5654, 5653, 5666, 5661, 5659, 5658, 5667);\n";
1293cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1294cp.
code() +=
"etiss_coverage_count(4, 5678, 5676, 5675, 5677);\n";
1295cp.
code() +=
"} // block\n";
1298cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1311rd += R_rd_0.read(ba) << 0;
1314rs1 += R_rs1_0.read(ba) << 0;
1317rs2 += R_rs2_0.read(ba) << 0;
1321 std::stringstream ss;
1323ss <<
"fsgnjx_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1333 (uint32_t) 0x2a000053,
1334 (uint32_t) 0xfe00707f,
1346rd += R_rd_0.
read(ba) << 0;
1349rs1 += R_rs1_0.
read(ba) << 0;
1352rs2 += R_rs2_0.
read(ba) << 0;
1360 cp.
code() = std::string(
"//FMIN_D\n");
1363cp.
code() +=
"etiss_coverage_count(1, 132);\n";
1365cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1366cp.
code() +=
"{ // block\n";
1368cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1369cp.
code() +=
"} // block\n";
1372cp.
code() +=
"etiss_coverage_count(1, 5742);\n";
1373cp.
code() +=
"{ // block\n";
1374cp.
code() +=
"etiss_uint64 res = fsel_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), 0LL);\n";
1375cp.
code() +=
"etiss_coverage_count(9, 5705, 5704, 5697, 5695, 5694, 5702, 5700, 5699, 5703);\n";
1376cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1377cp.
code() +=
"etiss_coverage_count(4, 5714, 5712, 5711, 5713);\n";
1378cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1379cp.
code() +=
"etiss_coverage_count(2, 5729, 5728);\n";
1380cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1381cp.
code() +=
"etiss_coverage_count(9, 5741, 5730, 5740, 5734, 5731, 5735, 5738, 5736, 5739);\n";
1382cp.
code() +=
"} // block\n";
1385cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1398rd += R_rd_0.read(ba) << 0;
1401rs1 += R_rs1_0.read(ba) << 0;
1404rs2 += R_rs2_0.read(ba) << 0;
1408 std::stringstream ss;
1410ss <<
"fmin_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1420 (uint32_t) 0x2a001053,
1421 (uint32_t) 0xfe00707f,
1433rd += R_rd_0.
read(ba) << 0;
1436rs1 += R_rs1_0.
read(ba) << 0;
1439rs2 += R_rs2_0.
read(ba) << 0;
1447 cp.
code() = std::string(
"//FMAX_D\n");
1450cp.
code() +=
"etiss_coverage_count(1, 133);\n";
1452cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1453cp.
code() +=
"{ // block\n";
1455cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1456cp.
code() +=
"} // block\n";
1459cp.
code() +=
"etiss_coverage_count(1, 5793);\n";
1460cp.
code() +=
"{ // block\n";
1461cp.
code() +=
"etiss_uint64 res = fsel_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL]), 1ULL);\n";
1462cp.
code() +=
"etiss_coverage_count(9, 5756, 5755, 5748, 5746, 5745, 5753, 5751, 5750, 5754);\n";
1463cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1464cp.
code() +=
"etiss_coverage_count(4, 5765, 5763, 5762, 5764);\n";
1465cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1466cp.
code() +=
"etiss_coverage_count(2, 5780, 5779);\n";
1467cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1468cp.
code() +=
"etiss_coverage_count(9, 5792, 5781, 5791, 5785, 5782, 5786, 5789, 5787, 5790);\n";
1469cp.
code() +=
"} // block\n";
1472cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1485rd += R_rd_0.read(ba) << 0;
1488rs1 += R_rs1_0.read(ba) << 0;
1491rs2 += R_rs2_0.read(ba) << 0;
1495 std::stringstream ss;
1497ss <<
"fmax_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1507 (uint32_t) 0x40100053,
1508 (uint32_t) 0xfff0007f,
1520rd += R_rd_0.
read(ba) << 0;
1523rm += R_rm_0.
read(ba) << 0;
1526rs1 += R_rs1_0.
read(ba) << 0;
1534 cp.
code() = std::string(
"//FCVT_S_D\n");
1537cp.
code() +=
"etiss_coverage_count(1, 134);\n";
1539cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1540cp.
code() +=
"{ // block\n";
1542cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1543cp.
code() +=
"} // block\n";
1546cp.
code() +=
"etiss_coverage_count(1, 5812);\n";
1547cp.
code() +=
"{ // block\n";
1548cp.
code() +=
"etiss_uint32 res = fconv_d2f(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], " + std::to_string(rm) +
"ULL);\n";
1549cp.
code() +=
"etiss_coverage_count(5, 5800, 5799, 5797, 5796, 5798);\n";
1550cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = -4294967296LL + res;\n";
1551cp.
code() +=
"etiss_coverage_count(5, 5811, 5803, 5802, 5810, 5809);\n";
1552cp.
code() +=
"} // block\n";
1555cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1568rd += R_rd_0.read(ba) << 0;
1571rm += R_rm_0.read(ba) << 0;
1574rs1 += R_rs1_0.read(ba) << 0;
1578 std::stringstream ss;
1580ss <<
"fcvt_s_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1590 (uint32_t) 0x42000053,
1591 (uint32_t) 0xfff0007f,
1603rd += R_rd_0.
read(ba) << 0;
1606rm += R_rm_0.
read(ba) << 0;
1609rs1 += R_rs1_0.
read(ba) << 0;
1617 cp.
code() = std::string(
"//FCVT_D_S\n");
1620cp.
code() +=
"etiss_coverage_count(1, 135);\n";
1622cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1623cp.
code() +=
"{ // block\n";
1625cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1626cp.
code() +=
"} // block\n";
1629cp.
code() +=
"etiss_coverage_count(1, 5843);\n";
1630cp.
code() +=
"{ // block\n";
1631cp.
code() +=
"etiss_uint64 res = fconv_f2d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]), " + std::to_string(rm) +
"ULL);\n";
1632cp.
code() +=
"etiss_coverage_count(6, 5820, 5819, 5817, 5816, 5815, 5818);\n";
1634cp.
code() +=
"etiss_coverage_count(1, 5830);\n";
1635cp.
code() +=
"{ // block\n";
1636cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
1637cp.
code() +=
"etiss_coverage_count(4, 5829, 5827, 5826, 5828);\n";
1638cp.
code() +=
"} // block\n";
1640cp.
code() +=
"} // block\n";
1643cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1656rd += R_rd_0.read(ba) << 0;
1659rm += R_rm_0.read(ba) << 0;
1662rs1 += R_rs1_0.read(ba) << 0;
1666 std::stringstream ss;
1668ss <<
"fcvt_d_s" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
1678 (uint32_t) 0xa2002053,
1679 (uint32_t) 0xfe00707f,
1691rd += R_rd_0.
read(ba) << 0;
1694rs1 += R_rs1_0.
read(ba) << 0;
1697rs2 += R_rs2_0.
read(ba) << 0;
1705 cp.
code() = std::string(
"//FEQ_D\n");
1708cp.
code() +=
"etiss_coverage_count(1, 136);\n";
1710cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1711cp.
code() +=
"{ // block\n";
1713cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1714cp.
code() +=
"} // block\n";
1717cp.
code() +=
"etiss_coverage_count(1, 5909);\n";
1718cp.
code() +=
"{ // block\n";
1719cp.
code() +=
"etiss_uint64 res = 0LL;\n";
1720cp.
code() +=
"etiss_coverage_count(2, 5846, 5845);\n";
1721cp.
code() +=
"res = fcmp_d(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], ((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL], 0LL);\n";
1722cp.
code() +=
"etiss_coverage_count(8, 5860, 5851, 5859, 5854, 5853, 5857, 5856, 5858);\n";
1723cp.
code() +=
"etiss_coverage_count(1, 5880);\n";
1724if ((rd % 32ULL) != 0LL) {
1725cp.
code() +=
"etiss_coverage_count(5, 5886, 5883, 5881, 5884, 5885);\n";
1726cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1727cp.
code() +=
"etiss_coverage_count(5, 5893, 5891, 5890, 5888, 5892);\n";
1729cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1730cp.
code() +=
"etiss_coverage_count(2, 5896, 5895);\n";
1731cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1732cp.
code() +=
"etiss_coverage_count(9, 5908, 5897, 5907, 5901, 5898, 5902, 5905, 5903, 5906);\n";
1733cp.
code() +=
"} // block\n";
1736cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1749rd += R_rd_0.read(ba) << 0;
1752rs1 += R_rs1_0.read(ba) << 0;
1755rs2 += R_rs2_0.read(ba) << 0;
1759 std::stringstream ss;
1761ss <<
"feq_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1771 (uint32_t) 0xa2001053,
1772 (uint32_t) 0xfe00707f,
1784rd += R_rd_0.
read(ba) << 0;
1787rs1 += R_rs1_0.
read(ba) << 0;
1790rs2 += R_rs2_0.
read(ba) << 0;
1798 cp.
code() = std::string(
"//FLT_D\n");
1801cp.
code() +=
"etiss_coverage_count(1, 137);\n";
1803cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1804cp.
code() +=
"{ // block\n";
1806cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1807cp.
code() +=
"} // block\n";
1810cp.
code() +=
"etiss_coverage_count(1, 5975);\n";
1811cp.
code() +=
"{ // block\n";
1812cp.
code() +=
"etiss_uint64 res = 0LL;\n";
1813cp.
code() +=
"etiss_coverage_count(2, 5912, 5911);\n";
1814cp.
code() +=
"res = fcmp_d(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], ((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL], 2ULL);\n";
1815cp.
code() +=
"etiss_coverage_count(8, 5926, 5917, 5925, 5920, 5919, 5923, 5922, 5924);\n";
1816cp.
code() +=
"etiss_coverage_count(1, 5946);\n";
1817if ((rd % 32ULL) != 0LL) {
1818cp.
code() +=
"etiss_coverage_count(5, 5952, 5949, 5947, 5950, 5951);\n";
1819cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1820cp.
code() +=
"etiss_coverage_count(5, 5959, 5957, 5956, 5954, 5958);\n";
1822cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1823cp.
code() +=
"etiss_coverage_count(2, 5962, 5961);\n";
1824cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1825cp.
code() +=
"etiss_coverage_count(9, 5974, 5963, 5973, 5967, 5964, 5968, 5971, 5969, 5972);\n";
1826cp.
code() +=
"} // block\n";
1829cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1842rd += R_rd_0.read(ba) << 0;
1845rs1 += R_rs1_0.read(ba) << 0;
1848rs2 += R_rs2_0.read(ba) << 0;
1852 std::stringstream ss;
1854ss <<
"flt_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1864 (uint32_t) 0xa2000053,
1865 (uint32_t) 0xfe00707f,
1877rd += R_rd_0.
read(ba) << 0;
1880rs1 += R_rs1_0.
read(ba) << 0;
1883rs2 += R_rs2_0.
read(ba) << 0;
1891 cp.
code() = std::string(
"//FLE_D\n");
1894cp.
code() +=
"etiss_coverage_count(1, 138);\n";
1896cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1897cp.
code() +=
"{ // block\n";
1899cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1900cp.
code() +=
"} // block\n";
1903cp.
code() +=
"etiss_coverage_count(1, 6041);\n";
1904cp.
code() +=
"{ // block\n";
1905cp.
code() +=
"etiss_uint64 res = 0LL;\n";
1906cp.
code() +=
"etiss_coverage_count(2, 5978, 5977);\n";
1907cp.
code() +=
"res = fcmp_d(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], ((RV32IMACFD*)cpu)->F[" + std::to_string(rs2) +
"ULL], 1ULL);\n";
1908cp.
code() +=
"etiss_coverage_count(8, 5992, 5983, 5991, 5986, 5985, 5989, 5988, 5990);\n";
1909cp.
code() +=
"etiss_coverage_count(1, 6012);\n";
1910if ((rd % 32ULL) != 0LL) {
1911cp.
code() +=
"etiss_coverage_count(5, 6018, 6015, 6013, 6016, 6017);\n";
1912cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
1913cp.
code() +=
"etiss_coverage_count(5, 6025, 6023, 6022, 6020, 6024);\n";
1915cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
1916cp.
code() +=
"etiss_coverage_count(2, 6028, 6027);\n";
1917cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
1918cp.
code() +=
"etiss_coverage_count(9, 6040, 6029, 6039, 6033, 6030, 6034, 6037, 6035, 6038);\n";
1919cp.
code() +=
"} // block\n";
1922cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
1935rd += R_rd_0.read(ba) << 0;
1938rs1 += R_rs1_0.read(ba) << 0;
1941rs2 += R_rs2_0.read(ba) << 0;
1945 std::stringstream ss;
1947ss <<
"fle_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
" | rs2=" + std::to_string(rs2) +
"]");
1957 (uint32_t) 0xe2001053,
1958 (uint32_t) 0xfff0707f,
1970rd += R_rd_0.
read(ba) << 0;
1973rs1 += R_rs1_0.
read(ba) << 0;
1981 cp.
code() = std::string(
"//FCLASS_D\n");
1984cp.
code() +=
"etiss_coverage_count(1, 139);\n";
1986cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
1987cp.
code() +=
"{ // block\n";
1989cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
1990cp.
code() +=
"} // block\n";
1993cp.
code() +=
"etiss_coverage_count(1, 6054);\n";
1994cp.
code() +=
"{ // block\n";
1995cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = fclass_d((etiss_uint64)(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL]));\n";
1996cp.
code() +=
"etiss_coverage_count(8, 6053, 6046, 6045, 6043, 6052, 6051, 6049, 6048);\n";
1997cp.
code() +=
"} // block\n";
2000cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2013rd += R_rd_0.read(ba) << 0;
2016rs1 += R_rs1_0.read(ba) << 0;
2020 std::stringstream ss;
2022ss <<
"fclass_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rs1=" + std::to_string(rs1) +
"]");
2032 (uint32_t) 0xc2000053,
2033 (uint32_t) 0xfff0007f,
2045rd += R_rd_0.
read(ba) << 0;
2048rm += R_rm_0.
read(ba) << 0;
2051rs1 += R_rs1_0.
read(ba) << 0;
2059 cp.
code() = std::string(
"//FCVT_W_D\n");
2062cp.
code() +=
"etiss_coverage_count(1, 140);\n";
2064cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2065cp.
code() +=
"{ // block\n";
2067cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2068cp.
code() +=
"} // block\n";
2071cp.
code() +=
"etiss_coverage_count(1, 6112);\n";
2072cp.
code() +=
"{ // block\n";
2073cp.
code() +=
"etiss_int32 res = 0LL;\n";
2074cp.
code() +=
"etiss_coverage_count(2, 6057, 6056);\n";
2075cp.
code() +=
"res = fcvt_64_32(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], 0LL, " + std::to_string(rm) +
"ULL);\n";
2076cp.
code() +=
"etiss_coverage_count(7, 6069, 6062, 6068, 6065, 6064, 6066, 6067);\n";
2077cp.
code() +=
"etiss_coverage_count(1, 6083);\n";
2078if ((rd % 32ULL) != 0LL) {
2079cp.
code() +=
"etiss_coverage_count(5, 6089, 6086, 6084, 6087, 6088);\n";
2080cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = res;\n";
2081cp.
code() +=
"etiss_coverage_count(5, 6096, 6094, 6093, 6091, 6095);\n";
2083cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
2084cp.
code() +=
"etiss_coverage_count(2, 6099, 6098);\n";
2085cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
2086cp.
code() +=
"etiss_coverage_count(9, 6111, 6100, 6110, 6104, 6101, 6105, 6108, 6106, 6109);\n";
2087cp.
code() +=
"} // block\n";
2090cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2103rd += R_rd_0.read(ba) << 0;
2106rm += R_rm_0.read(ba) << 0;
2109rs1 += R_rs1_0.read(ba) << 0;
2113 std::stringstream ss;
2115ss <<
"fcvt_w_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2125 (uint32_t) 0xc2100053,
2126 (uint32_t) 0xfff0007f,
2138rd += R_rd_0.
read(ba) << 0;
2141rm += R_rm_0.
read(ba) << 0;
2144rs1 += R_rs1_0.
read(ba) << 0;
2152 cp.
code() = std::string(
"//FCVT_WU_D\n");
2155cp.
code() +=
"etiss_coverage_count(1, 141);\n";
2157cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2158cp.
code() +=
"{ // block\n";
2160cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2161cp.
code() +=
"} // block\n";
2164cp.
code() +=
"etiss_coverage_count(1, 6173);\n";
2165cp.
code() +=
"{ // block\n";
2166cp.
code() +=
"etiss_uint32 res = 0LL;\n";
2167cp.
code() +=
"etiss_coverage_count(2, 6115, 6114);\n";
2168cp.
code() +=
"res = fcvt_64_32(((RV32IMACFD*)cpu)->F[" + std::to_string(rs1) +
"ULL], 1ULL, " + std::to_string(rm) +
"ULL);\n";
2169cp.
code() +=
"etiss_coverage_count(7, 6127, 6120, 6126, 6123, 6122, 6124, 6125);\n";
2170cp.
code() +=
"etiss_coverage_count(1, 6141);\n";
2171if ((rd % 32ULL) != 0LL) {
2172cp.
code() +=
"etiss_coverage_count(5, 6147, 6144, 6142, 6145, 6146);\n";
2173cp.
code() +=
"*((RV32IMACFD*)cpu)->X[" + std::to_string(rd % 32ULL) +
"ULL] = (etiss_uint64)((etiss_int32)(res));\n";
2174cp.
code() +=
"etiss_coverage_count(7, 6157, 6152, 6151, 6149, 6156, 6154, 6153);\n";
2176cp.
code() +=
"etiss_uint32 flags = fget_flags();\n";
2177cp.
code() +=
"etiss_coverage_count(2, 6160, 6159);\n";
2178cp.
code() +=
"((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";
2179cp.
code() +=
"etiss_coverage_count(9, 6172, 6161, 6171, 6165, 6162, 6166, 6169, 6167, 6170);\n";
2180cp.
code() +=
"} // block\n";
2183cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2196rd += R_rd_0.read(ba) << 0;
2199rm += R_rm_0.read(ba) << 0;
2202rs1 += R_rs1_0.read(ba) << 0;
2206 std::stringstream ss;
2208ss <<
"fcvt_wu_d" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2218 (uint32_t) 0xd2000053,
2219 (uint32_t) 0xfff0007f,
2231rd += R_rd_0.
read(ba) << 0;
2234rm += R_rm_0.
read(ba) << 0;
2237rs1 += R_rs1_0.
read(ba) << 0;
2245 cp.
code() = std::string(
"//FCVT_D_W\n");
2248cp.
code() +=
"etiss_coverage_count(1, 142);\n";
2250cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2251cp.
code() +=
"{ // block\n";
2253cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2254cp.
code() +=
"} // block\n";
2257cp.
code() +=
"etiss_coverage_count(1, 6206);\n";
2258cp.
code() +=
"{ // block\n";
2259cp.
code() +=
"etiss_int64 res = fcvt_32_64((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 2ULL, " + std::to_string(rm) +
"ULL);\n";
2260cp.
code() +=
"etiss_coverage_count(8, 6184, 6183, 6180, 6179, 6178, 6176, 6181, 6182);\n";
2261cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
2262cp.
code() +=
"etiss_coverage_count(4, 6193, 6191, 6190, 6192);\n";
2263cp.
code() +=
"} // block\n";
2266cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2279rd += R_rd_0.read(ba) << 0;
2282rm += R_rm_0.read(ba) << 0;
2285rs1 += R_rs1_0.read(ba) << 0;
2289 std::stringstream ss;
2291ss <<
"fcvt_d_w" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
2301 (uint32_t) 0xd2100053,
2302 (uint32_t) 0xfff0007f,
2314rd += R_rd_0.
read(ba) << 0;
2317rm += R_rm_0.
read(ba) << 0;
2320rs1 += R_rs1_0.
read(ba) << 0;
2328 cp.
code() = std::string(
"//FCVT_D_WU\n");
2331cp.
code() +=
"etiss_coverage_count(1, 143);\n";
2333cp.
code() +=
"etiss_coverage_count(1, 1169);\n";
2334cp.
code() +=
"{ // block\n";
2336cp.
code() +=
"etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";
2337cp.
code() +=
"} // block\n";
2340cp.
code() +=
"etiss_coverage_count(1, 6239);\n";
2341cp.
code() +=
"{ // block\n";
2342cp.
code() +=
"etiss_uint64 res = fcvt_32_64((etiss_uint32)(*((RV32IMACFD*)cpu)->X[" + std::to_string(rs1 % 32ULL) +
"ULL]), 3ULL, " + std::to_string(rm) +
"ULL);\n";
2343cp.
code() +=
"etiss_coverage_count(8, 6217, 6216, 6213, 6212, 6211, 6209, 6214, 6215);\n";
2344cp.
code() +=
"((RV32IMACFD*)cpu)->F[" + std::to_string(rd) +
"ULL] = res;\n";
2345cp.
code() +=
"etiss_coverage_count(4, 6226, 6224, 6223, 6225);\n";
2346cp.
code() +=
"} // block\n";
2349cp.
code() +=
"cpu->instructionPointer = cpu->nextPc;\n";
2362rd += R_rd_0.read(ba) << 0;
2365rm += R_rm_0.read(ba) << 0;
2368rs1 += R_rs1_0.read(ba) << 0;
2372 std::stringstream ss;
2374ss <<
"fcvt_d_wu" <<
" # " << ba << (
" [rd=" + std::to_string(rd) +
" | rm=" + std::to_string(rm) +
" | rs1=" + std::to_string(rs1) +
"]");
etiss::instr::InstructionGroup ISA32_RV32IMACFD("ISA32_RV32IMACFD", 32)
static InstructionDefinition fsgnj_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnj_d",(uint32_t) 0x22000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJ_D\n");cp.code()+="etiss_coverage_count(1, 129);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5612);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = ((((((((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]) >> (63ULL)) & 0x1ULL)) << 63) | (((((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]) & 0x7fffffffffffffffULL)));\n";cp.code()+="etiss_coverage_count(12, 5590, 5589, 5582, 5579, 5578, 5580, 5581, 5588, 5585, 5584, 5586, 5587);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5599, 5597, 5596, 5598);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fclass_d_rd_rs1(ISA32_RV32IMACFD, "fclass_d",(uint32_t) 0xe2001053,(uint32_t) 0xfff0707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCLASS_D\n");cp.code()+="etiss_coverage_count(1, 139);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6054);\n";cp.code()+="{ // block\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = fclass_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]));\n";cp.code()+="etiss_coverage_count(8, 6053, 6046, 6045, 6043, 6052, 6051, 6049, 6048);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fsgnjx_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjx_d",(uint32_t) 0x22002053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJX_D\n");cp.code()+="etiss_coverage_count(1, 131);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5691);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]) ^ ((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]) & 9223372036854775808ULL);\n";cp.code()+="etiss_coverage_count(10, 5669, 5668, 5656, 5654, 5653, 5666, 5661, 5659, 5658, 5667);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5678, 5676, 5675, 5677);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fsgnjn_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fsgnjn_d",(uint32_t) 0x22001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSGNJN_D\n");cp.code()+="etiss_coverage_count(1, 130);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5650);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = (((~((((((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]) >> (63ULL)) & 0x1ULL))) << 63) | (((((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]) & 0x7fffffffffffffffULL)));\n";cp.code()+="etiss_coverage_count(13, 5628, 5627, 5620, 5619, 5616, 5615, 5617, 5618, 5626, 5623, 5622, 5624, 5625);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5637, 5635, 5634, 5636);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_w_d_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_w_d",(uint32_t) 0xc2000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_W_D\n");cp.code()+="etiss_coverage_count(1, 140);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6112);\n";cp.code()+="{ // block\n";cp.code()+="etiss_int32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 6057, 6056);\n";cp.code()+="res = fcvt_64_32(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], 0LL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(7, 6069, 6062, 6068, 6065, 6064, 6066, 6067);\n";cp.code()+="etiss_coverage_count(1, 6083);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 6089, 6086, 6084, 6087, 6088);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 6096, 6094, 6093, 6091, 6095);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 6099, 6098);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 6111, 6100, 6110, 6104, 6101, 6105, 6108, 6106, 6109);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fmin_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fmin_d",(uint32_t) 0x2a000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMIN_D\n");cp.code()+="etiss_coverage_count(1, 132);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5742);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fsel_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), 0LL);\n";cp.code()+="etiss_coverage_count(9, 5705, 5704, 5697, 5695, 5694, 5702, 5700, 5699, 5703);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5714, 5712, 5711, 5713);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5729, 5728);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5741, 5730, 5740, 5734, 5731, 5735, 5738, 5736, 5739);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fdiv_d_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fdiv_d",(uint32_t) 0x1a000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FDIV_D\n");cp.code()+="etiss_coverage_count(1, 127);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5528);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fdiv_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(10, 5491, 5490, 5482, 5480, 5479, 5487, 5485, 5484, 5489, 5488);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5500, 5498, 5497, 5499);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5515, 5514);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5527, 5516, 5526, 5520, 5517, 5521, 5524, 5522, 5525);\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_d"<< " # "<< 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_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fmax_d",(uint32_t) 0x2a001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMAX_D\n");cp.code()+="etiss_coverage_count(1, 133);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5793);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fsel_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), 1ULL);\n";cp.code()+="etiss_coverage_count(9, 5756, 5755, 5748, 5746, 5745, 5753, 5751, 5750, 5754);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5765, 5763, 5762, 5764);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5780, 5779);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5792, 5781, 5791, 5785, 5782, 5786, 5789, 5787, 5790);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_s_d_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_s_d",(uint32_t) 0x40100053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_S_D\n");cp.code()+="etiss_coverage_count(1, 134);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5812);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = fconv_d2f(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(5, 5800, 5799, 5797, 5796, 5798);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = -4294967296LL + res;\n";cp.code()+="etiss_coverage_count(5, 5811, 5803, 5802, 5810, 5809);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition feq_d_rd_rs1_rs2(ISA32_RV32IMACFD, "feq_d",(uint32_t) 0xa2002053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FEQ_D\n");cp.code()+="etiss_coverage_count(1, 136);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5909);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 5846, 5845);\n";cp.code()+="res = fcmp_d(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], ((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL], 0LL);\n";cp.code()+="etiss_coverage_count(8, 5860, 5851, 5859, 5854, 5853, 5857, 5856, 5858);\n";cp.code()+="etiss_coverage_count(1, 5880);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 5886, 5883, 5881, 5884, 5885);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 5893, 5891, 5890, 5888, 5892);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5896, 5895);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5908, 5897, 5907, 5901, 5898, 5902, 5905, 5903, 5906);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fle_d_rd_rs1_rs2(ISA32_RV32IMACFD, "fle_d",(uint32_t) 0xa2000053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLE_D\n");cp.code()+="etiss_coverage_count(1, 138);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6041);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 5978, 5977);\n";cp.code()+="res = fcmp_d(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], ((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL], 1ULL);\n";cp.code()+="etiss_coverage_count(8, 5992, 5983, 5991, 5986, 5985, 5989, 5988, 5990);\n";cp.code()+="etiss_coverage_count(1, 6012);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 6018, 6015, 6013, 6016, 6017);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 6025, 6023, 6022, 6020, 6024);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 6028, 6027);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 6040, 6029, 6039, 6033, 6030, 6034, 6037, 6035, 6038);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fsub_d_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fsub_d",(uint32_t) 0xa000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSUB_D\n");cp.code()+="etiss_coverage_count(1, 125);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5424);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fsub_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(10, 5387, 5386, 5378, 5376, 5375, 5383, 5381, 5380, 5385, 5384);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5396, 5394, 5393, 5395);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5411, 5410);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5423, 5412, 5422, 5416, 5413, 5417, 5420, 5418, 5421);\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_d"<< " # "<< 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 fnmadd_d_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmadd_d",(uint32_t) 0x200004f,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FNMADD_D\n");cp.code()+="etiss_coverage_count(1, 122);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5262);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]), 2ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(14, 5225, 5224, 5210, 5208, 5207, 5215, 5213, 5212, 5220, 5218, 5217, 5221, 5223, 5222);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5234, 5232, 5231, 5233);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5249, 5248);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5261, 5250, 5260, 5254, 5251, 5255, 5258, 5256, 5259);\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_d"<< " # "<< 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_d_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fnmsub_d",(uint32_t) 0x200004b,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FNMSUB_D\n");cp.code()+="etiss_coverage_count(1, 123);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5320);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs3)+"ULL]), 3ULL, RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(14, 5283, 5282, 5268, 5266, 5265, 5273, 5271, 5270, 5278, 5276, 5275, 5279, 5281, 5280);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5292, 5290, 5289, 5291);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5307, 5306);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5319, 5308, 5318, 5312, 5309, 5313, 5316, 5314, 5317);\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_d"<< " # "<< 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_d_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fmul_d",(uint32_t) 0x12000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMUL_D\n");cp.code()+="etiss_coverage_count(1, 126);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5476);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fmul_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(10, 5439, 5438, 5430, 5428, 5427, 5435, 5433, 5432, 5437, 5436);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5448, 5446, 5445, 5447);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5463, 5462);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5475, 5464, 5474, 5468, 5465, 5469, 5472, 5470, 5473);\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_d"<< " # "<< 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 fmsub_d_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmsub_d",(uint32_t) 0x2000047,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMSUB_D\n");cp.code()+="etiss_coverage_count(1, 121);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5204);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), (etiss_uint64)(((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, 5167, 5166, 5152, 5150, 5149, 5157, 5155, 5154, 5162, 5160, 5159, 5163, 5165, 5164);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5176, 5174, 5173, 5175);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5191, 5190);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5203, 5192, 5202, 5196, 5193, 5197, 5200, 5198, 5201);\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_d"<< " # "<< 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 fcvt_d_s_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_d_s",(uint32_t) 0x42000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_D_S\n");cp.code()+="etiss_coverage_count(1, 135);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5843);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fconv_f2d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(6, 5820, 5819, 5817, 5816, 5815, 5818);\n";{ cp.code()+="etiss_coverage_count(1, 5830);\n";cp.code()+="{ // block\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5829, 5827, 5826, 5828);\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_d_s"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fcvt_d_w_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_d_w",(uint32_t) 0xd2000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_D_W\n");cp.code()+="etiss_coverage_count(1, 142);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6206);\n";cp.code()+="{ // block\n";cp.code()+="etiss_int64 res = fcvt_32_64((etiss_uint32)(*((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL]), 2ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(8, 6184, 6183, 6180, 6179, 6178, 6176, 6181, 6182);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 6193, 6191, 6190, 6192);\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_d_w"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fld_rd_rs1_imm(ISA32_RV32IMACFD, "fld",(uint32_t) 0x003007,(uint32_t) 0x00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint16 imm=0;static BitArrayRange R_imm_0(31, 20);imm+=R_imm_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLD\n");cp.code()+="etiss_coverage_count(1, 118);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5067);\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, 5038, 5037, 5033, 5032, 5030, 5036, 5034);\n";cp.code()+="etiss_uint64 mem_val_0;\n";cp.code()+="cpu->exception |= (*(system->dread))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 8);\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_uint64 res = (etiss_uint64)(mem_val_0);\n";cp.code()+="etiss_coverage_count(4, 5045, 5044, 5042, 5041);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5054, 5052, 5051, 5053);\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("//FLD\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<< "fld"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | imm="+std::to_string(imm)+"]");return ss.str();})
static InstructionDefinition fsd_imm_rs1_rs2(ISA32_RV32IMACFD, "fsd",(uint32_t) 0x003027,(uint32_t) 0x00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint16 imm=0;static BitArrayRange R_imm_0(11, 7);imm+=R_imm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;static BitArrayRange R_imm_5(31, 25);imm+=R_imm_5.read(ba)<< 5;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSD\n");cp.code()+="etiss_coverage_count(1, 119);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5088);\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, 5078, 5077, 5073, 5072, 5070, 5076, 5074);\n";cp.code()+="etiss_uint64 mem_val_0;\n";cp.code()+="mem_val_0 = (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]);\n";cp.code()+="etiss_coverage_count(6, 5087, 5081, 5080, 5086, 5084, 5083);\n";cp.code()+="cpu->exception |= (*(system->dwrite))(system->handle, cpu, offs, (etiss_uint8*)&mem_val_0, 8);\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("//FSD\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<< "fsd"<< " # "<< ba<<(" [imm="+std::to_string(imm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fsqrt_d_rd_rm_rs1(ISA32_RV32IMACFD, "fsqrt_d",(uint32_t) 0x5a000053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FSQRT_D\n");cp.code()+="etiss_coverage_count(1, 128);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5575);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fsqrt_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(7, 5538, 5537, 5534, 5532, 5531, 5536, 5535);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5547, 5545, 5544, 5546);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5562, 5561);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5574, 5563, 5573, 5567, 5564, 5568, 5571, 5569, 5572);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fmadd_d_rd_rm_rs1_rs2_rs3(ISA32_RV32IMACFD, "fmadd_d",(uint32_t) 0x2000043,(uint32_t) 0x600007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;etiss_uint8 rs3=0;static BitArrayRange R_rs3_0(31, 27);rs3+=R_rs3_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FMADD_D\n");cp.code()+="etiss_coverage_count(1, 120);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5146);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fmadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), (etiss_uint64)(((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, 5109, 5108, 5094, 5092, 5091, 5099, 5097, 5096, 5104, 5102, 5101, 5105, 5107, 5106);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5118, 5116, 5115, 5117);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5133, 5132);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5145, 5134, 5144, 5138, 5135, 5139, 5142, 5140, 5143);\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_d"<< " # "<< 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 fcvt_wu_d_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_wu_d",(uint32_t) 0xc2100053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_WU_D\n");cp.code()+="etiss_coverage_count(1, 141);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6173);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint32 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 6115, 6114);\n";cp.code()+="res = fcvt_64_32(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], 1ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(7, 6127, 6120, 6126, 6123, 6122, 6124, 6125);\n";cp.code()+="etiss_coverage_count(1, 6141);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 6147, 6144, 6142, 6145, 6146);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = (etiss_uint64)((etiss_int32)(res));\n";cp.code()+="etiss_coverage_count(7, 6157, 6152, 6151, 6149, 6156, 6154, 6153);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 6160, 6159);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 6172, 6161, 6171, 6165, 6162, 6166, 6169, 6167, 6170);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition flt_d_rd_rs1_rs2(ISA32_RV32IMACFD, "flt_d",(uint32_t) 0xa2001053,(uint32_t) 0xfe00707f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FLT_D\n");cp.code()+="etiss_coverage_count(1, 137);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5975);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = 0LL;\n";cp.code()+="etiss_coverage_count(2, 5912, 5911);\n";cp.code()+="res = fcmp_d(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL], ((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL], 2ULL);\n";cp.code()+="etiss_coverage_count(8, 5926, 5917, 5925, 5920, 5919, 5923, 5922, 5924);\n";cp.code()+="etiss_coverage_count(1, 5946);\n";if((rd % 32ULL) !=0LL) { cp.code()+="etiss_coverage_count(5, 5952, 5949, 5947, 5950, 5951);\n";cp.code()+="*((RV32IMACFD*)cpu)->X["+std::to_string(rd % 32ULL)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(5, 5959, 5957, 5956, 5954, 5958);\n";} cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5962, 5961);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5974, 5963, 5973, 5967, 5964, 5968, 5971, 5969, 5972);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");return ss.str();})
static InstructionDefinition fcvt_d_wu_rd_rm_rs1(ISA32_RV32IMACFD, "fcvt_d_wu",(uint32_t) 0xd2100053,(uint32_t) 0xfff0007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FCVT_D_WU\n");cp.code()+="etiss_coverage_count(1, 143);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 6239);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fcvt_32_64((etiss_uint32)(*((RV32IMACFD*)cpu)->X["+std::to_string(rs1 % 32ULL)+"ULL]), 3ULL, "+std::to_string(rm)+"ULL);\n";cp.code()+="etiss_coverage_count(8, 6217, 6216, 6213, 6212, 6211, 6209, 6214, 6215);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 6226, 6224, 6223, 6225);\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_d_wu"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+"]");return ss.str();})
static InstructionDefinition fadd_d_rd_rm_rs1_rs2(ISA32_RV32IMACFD, "fadd_d",(uint32_t) 0x2000053,(uint32_t) 0xfe00007f, [](BitArray &ba, etiss::CodeSet &cs, InstructionContext &ic) { etiss_uint8 rd=0;static BitArrayRange R_rd_0(11, 7);rd+=R_rd_0.read(ba)<< 0;etiss_uint8 rm=0;static BitArrayRange R_rm_0(14, 12);rm+=R_rm_0.read(ba)<< 0;etiss_uint8 rs1=0;static BitArrayRange R_rs1_0(19, 15);rs1+=R_rs1_0.read(ba)<< 0;etiss_uint8 rs2=0;static BitArrayRange R_rs2_0(24, 20);rs2+=R_rs2_0.read(ba)<< 0;{ CodePart &cp=cs.append(CodePart::INITIALREQUIRED);cp.code()=std::string("//FADD_D\n");cp.code()+="etiss_coverage_count(1, 124);\n";{ cp.code()+="etiss_coverage_count(1, 1169);\n";cp.code()+="{ // block\n";cp.code()+="cpu->nextPc = "+std::to_string(ic.current_address_+4)+"ULL;\n";cp.code()+="etiss_coverage_count(5, 1168, 1164, 1167, 1165, 1166);\n";cp.code()+="} // block\n";} { cp.code()+="etiss_coverage_count(1, 5372);\n";cp.code()+="{ // block\n";cp.code()+="etiss_uint64 res = fadd_d((etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs1)+"ULL]), (etiss_uint64)(((RV32IMACFD*)cpu)->F["+std::to_string(rs2)+"ULL]), RV32IMACFD_get_rm(cpu, system, plugin_pointers, "+std::to_string(rm)+"ULL));\n";cp.code()+="etiss_coverage_count(10, 5335, 5334, 5326, 5324, 5323, 5331, 5329, 5328, 5333, 5332);\n";cp.code()+="((RV32IMACFD*)cpu)->F["+std::to_string(rd)+"ULL] = res;\n";cp.code()+="etiss_coverage_count(4, 5344, 5342, 5341, 5343);\n";cp.code()+="etiss_uint32 flags = fget_flags();\n";cp.code()+="etiss_coverage_count(2, 5359, 5358);\n";cp.code()+="((RV32IMACFD*)cpu)->FCSR = (((RV32IMACFD*)cpu)->FCSR & -32LL) | (flags & 31ULL);\n";cp.code()+="etiss_coverage_count(9, 5371, 5360, 5370, 5364, 5361, 5365, 5368, 5366, 5369);\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_d"<< " # "<< ba<<(" [rd="+std::to_string(rd)+" | rm="+std::to_string(rm)+" | rs1="+std::to_string(rs1)+" | rs2="+std::to_string(rs2)+"]");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.