hw: AC97: make it more QOMconventional
[qemu/ar7.git] / disas / nanomips.cpp
blob1238c2ff33c0e20d82ed780bb35c3f4635c29359
1 /*
2 * Source file for nanoMIPS disassembler component of QEMU
4 * Copyright (C) 2018 Wave Computing
5 * Copyright (C) 2018 Matthew Fortune <matthew.fortune@mips.com>
6 * Copyright (C) 2018 Aleksandar Markovic <aleksandar.markovic@wavecomp.com>
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
22 extern "C" {
23 #include "qemu/osdep.h"
24 #include "disas/bfd.h"
27 #include <cstring>
28 #include <stdexcept>
29 #include <sstream>
30 #include <stdio.h>
31 #include <stdarg.h>
33 #include "nanomips.h"
35 #define IMGASSERTONCE(test)
38 int nanomips_dis(char *buf,
39 unsigned address,
40 unsigned short one,
41 unsigned short two,
42 unsigned short three)
44 std::string disasm;
45 uint16 bits[3] = {one, two, three};
47 NMD::TABLE_ENTRY_TYPE type;
48 NMD d(address, NMD::ALL_ATTRIBUTES);
49 int size = d.Disassemble(bits, disasm, type);
51 strcpy(buf, disasm.c_str());
52 return size;
55 int print_insn_nanomips(bfd_vma memaddr, struct disassemble_info *info)
57 int status;
58 bfd_byte buffer[2];
59 uint16_t insn1 = 0, insn2 = 0, insn3 = 0;
60 char buf[200];
62 info->bytes_per_chunk = 2;
63 info->display_endian = info->endian;
64 info->insn_info_valid = 1;
65 info->branch_delay_insns = 0;
66 info->data_size = 0;
67 info->insn_type = dis_nonbranch;
68 info->target = 0;
69 info->target2 = 0;
71 status = (*info->read_memory_func)(memaddr, buffer, 2, info);
72 if (status != 0) {
73 (*info->memory_error_func)(status, memaddr, info);
74 return -1;
77 if (info->endian == BFD_ENDIAN_BIG) {
78 insn1 = bfd_getb16(buffer);
79 } else {
80 insn1 = bfd_getl16(buffer);
82 (*info->fprintf_func)(info->stream, "%04x ", insn1);
84 /* Handle 32-bit opcodes. */
85 if ((insn1 & 0x1000) == 0) {
86 status = (*info->read_memory_func)(memaddr + 2, buffer, 2, info);
87 if (status != 0) {
88 (*info->memory_error_func)(status, memaddr + 2, info);
89 return -1;
92 if (info->endian == BFD_ENDIAN_BIG) {
93 insn2 = bfd_getb16(buffer);
94 } else {
95 insn2 = bfd_getl16(buffer);
97 (*info->fprintf_func)(info->stream, "%04x ", insn2);
98 } else {
99 (*info->fprintf_func)(info->stream, " ");
101 /* Handle 48-bit opcodes. */
102 if ((insn1 >> 10) == 0x18) {
103 status = (*info->read_memory_func)(memaddr + 4, buffer, 2, info);
104 if (status != 0) {
105 (*info->memory_error_func)(status, memaddr + 4, info);
106 return -1;
109 if (info->endian == BFD_ENDIAN_BIG) {
110 insn3 = bfd_getb16(buffer);
111 } else {
112 insn3 = bfd_getl16(buffer);
114 (*info->fprintf_func)(info->stream, "%04x ", insn3);
115 } else {
116 (*info->fprintf_func)(info->stream, " ");
119 int length = nanomips_dis(buf, memaddr, insn1, insn2, insn3);
121 /* FIXME: Should probably use a hash table on the major opcode here. */
123 (*info->fprintf_func) (info->stream, "%s", buf);
124 if (length > 0) {
125 return length / 8;
128 info->insn_type = dis_noninsn;
130 return insn3 ? 6 : insn2 ? 4 : 2;
134 namespace img
136 address addr32(address a)
138 return a;
141 std::string format(const char *format, ...)
143 char buffer[256];
144 va_list args;
145 va_start(args, format);
146 int err = vsprintf(buffer, format, args);
147 if (err < 0) {
148 perror(buffer);
150 va_end(args);
151 return buffer;
154 std::string format(const char *format,
155 std::string s)
157 char buffer[256];
159 sprintf(buffer, format, s.c_str());
161 return buffer;
164 std::string format(const char *format,
165 std::string s1,
166 std::string s2)
168 char buffer[256];
170 sprintf(buffer, format, s1.c_str(), s2.c_str());
172 return buffer;
175 std::string format(const char *format,
176 std::string s1,
177 std::string s2,
178 std::string s3)
180 char buffer[256];
182 sprintf(buffer, format, s1.c_str(), s2.c_str(), s3.c_str());
184 return buffer;
187 std::string format(const char *format,
188 std::string s1,
189 std::string s2,
190 std::string s3,
191 std::string s4)
193 char buffer[256];
195 sprintf(buffer, format, s1.c_str(), s2.c_str(), s3.c_str(),
196 s4.c_str());
198 return buffer;
201 std::string format(const char *format,
202 std::string s1,
203 std::string s2,
204 std::string s3,
205 std::string s4,
206 std::string s5)
208 char buffer[256];
210 sprintf(buffer, format, s1.c_str(), s2.c_str(), s3.c_str(),
211 s4.c_str(), s5.c_str());
213 return buffer;
216 std::string format(const char *format,
217 uint64 d,
218 std::string s2)
220 char buffer[256];
222 sprintf(buffer, format, d, s2.c_str());
224 return buffer;
227 std::string format(const char *format,
228 std::string s1,
229 uint64 d,
230 std::string s2)
232 char buffer[256];
234 sprintf(buffer, format, s1.c_str(), d, s2.c_str());
236 return buffer;
239 std::string format(const char *format,
240 std::string s1,
241 std::string s2,
242 uint64 d)
244 char buffer[256];
246 sprintf(buffer, format, s1.c_str(), s2.c_str(), d);
248 return buffer;
251 char as_char(int c)
253 return static_cast<char>(c);
258 std::string to_string(img::address a)
260 char buffer[256];
261 sprintf(buffer, "0x%08llx", a);
262 return buffer;
266 uint64 extract_bits(uint64 data, uint32 bit_offset, uint32 bit_size)
268 return (data << (64 - (bit_size + bit_offset))) >> (64 - bit_size);
272 int64 sign_extend(int64 data, int msb)
274 uint64 shift = 63 - msb;
275 return (data << shift) >> shift;
279 uint64 NMD::renumber_registers(uint64 index, uint64 *register_list,
280 size_t register_list_size)
282 if (index < register_list_size) {
283 return register_list[index];
286 throw std::runtime_error(img::format(
287 "Invalid register mapping index %d, size of list = %d",
288 index, register_list_size));
293 * these functions should be decode functions but the json does not have
294 * decode sections so they are based on the encode, the equivalent decode
295 * functions need writing eventually.
297 uint64 NMD::encode_gpr3(uint64 d)
299 static uint64 register_list[] = { 16, 17, 18, 19, 4, 5, 6, 7 };
300 return renumber_registers(d, register_list,
301 sizeof(register_list) / sizeof(register_list[0]));
305 uint64 NMD::encode_gpr3_store(uint64 d)
307 static uint64 register_list[] = { 0, 17, 18, 19, 4, 5, 6, 7 };
308 return renumber_registers(d, register_list,
309 sizeof(register_list) / sizeof(register_list[0]));
313 uint64 NMD::encode_rd1_from_rd(uint64 d)
315 static uint64 register_list[] = { 4, 5 };
316 return renumber_registers(d, register_list,
317 sizeof(register_list) / sizeof(register_list[0]));
321 uint64 NMD::encode_gpr4_zero(uint64 d)
323 static uint64 register_list[] = { 8, 9, 10, 0, 4, 5, 6, 7,
324 16, 17, 18, 19, 20, 21, 22, 23 };
325 return renumber_registers(d, register_list,
326 sizeof(register_list) / sizeof(register_list[0]));
330 uint64 NMD::encode_gpr4(uint64 d)
332 static uint64 register_list[] = { 8, 9, 10, 11, 4, 5, 6, 7,
333 16, 17, 18, 19, 20, 21, 22, 23 };
334 return renumber_registers(d, register_list,
335 sizeof(register_list) / sizeof(register_list[0]));
339 uint64 NMD::encode_rd2_reg1(uint64 d)
341 static uint64 register_list[] = { 4, 5, 6, 7 };
342 return renumber_registers(d, register_list,
343 sizeof(register_list) / sizeof(register_list[0]));
347 uint64 NMD::encode_rd2_reg2(uint64 d)
349 static uint64 register_list[] = { 5, 6, 7, 8 };
350 return renumber_registers(d, register_list,
351 sizeof(register_list) / sizeof(register_list[0]));
355 uint64 NMD::copy(uint64 d)
357 return d;
361 int64 NMD::copy(int64 d)
363 return d;
367 int64 NMD::neg_copy(uint64 d)
369 return 0ll - d;
373 int64 NMD::neg_copy(int64 d)
375 return -d;
379 /* strange wrapper around gpr3 */
380 uint64 NMD::encode_rs3_and_check_rs3_ge_rt3(uint64 d)
382 return encode_gpr3(d);
386 /* strange wrapper around gpr3 */
387 uint64 NMD::encode_rs3_and_check_rs3_lt_rt3(uint64 d)
389 return encode_gpr3(d);
393 /* nop - done by extraction function */
394 uint64 NMD::encode_s_from_address(uint64 d)
396 return d;
400 /* nop - done by extraction function */
401 uint64 NMD::encode_u_from_address(uint64 d)
403 return d;
407 /* nop - done by extraction function */
408 uint64 NMD::encode_s_from_s_hi(uint64 d)
410 return d;
414 uint64 NMD::encode_count3_from_count(uint64 d)
416 IMGASSERTONCE(d < 8);
417 return d == 0ull ? 8ull : d;
421 uint64 NMD::encode_shift3_from_shift(uint64 d)
423 IMGASSERTONCE(d < 8);
424 return d == 0ull ? 8ull : d;
428 /* special value for load literal */
429 int64 NMD::encode_eu_from_s_li16(uint64 d)
431 IMGASSERTONCE(d < 128);
432 return d == 127 ? -1 : (int64)d;
436 uint64 NMD::encode_msbd_from_size(uint64 d)
438 IMGASSERTONCE(d < 32);
439 return d + 1;
443 uint64 NMD::encode_eu_from_u_andi16(uint64 d)
445 IMGASSERTONCE(d < 16);
446 if (d == 12) {
447 return 0x00ffull;
449 if (d == 13) {
450 return 0xffffull;
452 return d;
456 uint64 NMD::encode_msbd_from_pos_and_size(uint64 d)
458 IMGASSERTONCE(0);
459 return d;
463 /* save16 / restore16 ???? */
464 uint64 NMD::encode_rt1_from_rt(uint64 d)
466 return d ? 31 : 30;
470 /* ? */
471 uint64 NMD::encode_lsb_from_pos_and_size(uint64 d)
473 return d;
477 std::string NMD::save_restore_list(uint64 rt, uint64 count, uint64 gp)
479 std::string str;
481 for (uint64 counter = 0; counter != count; counter++) {
482 bool use_gp = gp && (counter == count - 1);
483 uint64 this_rt = use_gp ? 28 : ((rt & 0x10) | (rt + counter)) & 0x1f;
484 str += img::format(",%s", GPR(this_rt));
487 return str;
491 std::string NMD::GPR(uint64 reg)
493 static const char *gpr_reg[32] = {
494 "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
495 "a4", "a5", "a6", "a7", "r12", "r13", "r14", "r15",
496 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
497 "r24", "r25", "k0", "k1", "gp", "sp", "fp", "ra"
500 if (reg < 32) {
501 return gpr_reg[reg];
504 throw std::runtime_error(img::format("Invalid GPR register index %d", reg));
508 std::string NMD::FPR(uint64 reg)
510 static const char *fpr_reg[32] = {
511 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
512 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
513 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
514 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
517 if (reg < 32) {
518 return fpr_reg[reg];
521 throw std::runtime_error(img::format("Invalid FPR register index %d", reg));
525 std::string NMD::AC(uint64 reg)
527 static const char *ac_reg[4] = {
528 "ac0", "ac1", "ac2", "ac3"
531 if (reg < 4) {
532 return ac_reg[reg];
535 throw std::runtime_error(img::format("Invalid AC register index %d", reg));
539 std::string NMD::IMMEDIATE(uint64 value)
541 return img::format("0x%x", value);
545 std::string NMD::IMMEDIATE(int64 value)
547 return img::format("%d", value);
551 std::string NMD::CPR(uint64 reg)
553 /* needs more work */
554 return img::format("CP%d", reg);
558 std::string NMD::ADDRESS(uint64 value, int instruction_size)
560 /* token for string replace */
561 /* const char TOKEN_REPLACE = (char)0xa2; */
562 img::address address = m_pc + value + instruction_size;
563 /* symbol replacement */
564 /* return img::as_char(TOKEN_REPLACE) + to_string(address); */
565 return to_string(address);
569 uint64 NMD::extract_op_code_value(const uint16 * data, int size)
571 switch (size) {
572 case 16:
573 return data[0];
574 case 32:
575 return ((uint64)data[0] << 16) | data[1];
576 case 48:
577 return ((uint64)data[0] << 32) | ((uint64)data[1] << 16) | data[2];
578 default:
579 return data[0];
584 int NMD::Disassemble(const uint16 * data, std::string & dis,
585 NMD::TABLE_ENTRY_TYPE & type)
587 return Disassemble(data, dis, type, MAJOR, 2);
592 * Recurse through tables until the instruction is found then return
593 * the string and size
595 * inputs:
596 * pointer to a word stream,
597 * disassember table and size
598 * returns:
599 * instruction size - negative is error
600 * disassembly string - on error will constain error string
602 int NMD::Disassemble(const uint16 * data, std::string & dis,
603 NMD::TABLE_ENTRY_TYPE & type, const Pool *table,
604 int table_size)
608 for (int i = 0; i < table_size; i++) {
609 uint64 op_code = extract_op_code_value(data,
610 table[i].instructions_size);
611 if ((op_code & table[i].mask) == table[i].value) {
612 /* possible match */
613 conditional_function cond = table[i].condition;
614 if ((cond == 0) || (this->*cond)(op_code)) {
617 if (table[i].type == pool) {
618 return Disassemble(data, dis, type,
619 table[i].next_table,
620 table[i].next_table_size);
621 } else if ((table[i].type == instruction) ||
622 (table[i].type == call_instruction) ||
623 (table[i].type == branch_instruction) ||
624 (table[i].type == return_instruction)) {
625 if ((table[i].attributes != 0) &&
626 (m_requested_instruction_categories &
627 table[i].attributes) == 0) {
629 * failed due to instruction having
630 * an ASE attribute and the requested version
631 * not having that attribute
633 dis = "ASE attribute missmatch";
634 return -5;
636 disassembly_function dis_fn = table[i].disassembly;
637 if (dis_fn == 0) {
638 dis = "disassembler failure - bad table entry";
639 return -6;
641 type = table[i].type;
642 dis = (this->*dis_fn)(op_code);
643 return table[i].instructions_size;
644 } else {
645 dis = "reserved instruction";
646 return -2;
649 catch (std::runtime_error & e)
651 dis = e.what();
652 return -3; /* runtime error */
658 catch (std::exception & e)
660 dis = e.what();
661 return -4; /* runtime error */
664 dis = "failed to disassemble";
665 return -1; /* failed to disassemble */
669 uint64 NMD::extract_code_18_to_0(uint64 instruction)
671 uint64 value = 0;
672 value |= extract_bits(instruction, 0, 19);
673 return value;
677 uint64 NMD::extract_shift3_2_1_0(uint64 instruction)
679 uint64 value = 0;
680 value |= extract_bits(instruction, 0, 3);
681 return value;
685 uint64 NMD::extr_uil3il3bs9Fmsb11(uint64 instruction)
687 uint64 value = 0;
688 value |= extract_bits(instruction, 3, 9) << 3;
689 return value;
693 uint64 NMD::extract_count_3_2_1_0(uint64 instruction)
695 uint64 value = 0;
696 value |= extract_bits(instruction, 0, 4);
697 return value;
701 uint64 NMD::extract_rtz3_9_8_7(uint64 instruction)
703 uint64 value = 0;
704 value |= extract_bits(instruction, 7, 3);
705 return value;
709 uint64 NMD::extr_uil1il1bs17Fmsb17(uint64 instruction)
711 uint64 value = 0;
712 value |= extract_bits(instruction, 1, 17) << 1;
713 return value;
717 int64 NMD::extr_sil11il0bs10Tmsb9(uint64 instruction)
719 int64 value = 0;
720 value |= extract_bits(instruction, 11, 10);
721 value = sign_extend(value, 9);
722 return value;
726 int64 NMD::extr_sil0il11bs1_il1il1bs10Tmsb11(uint64 instruction)
728 int64 value = 0;
729 value |= extract_bits(instruction, 0, 1) << 11;
730 value |= extract_bits(instruction, 1, 10) << 1;
731 value = sign_extend(value, 11);
732 return value;
736 uint64 NMD::extract_u_10(uint64 instruction)
738 uint64 value = 0;
739 value |= extract_bits(instruction, 10, 1);
740 return value;
744 uint64 NMD::extract_rtz4_27_26_25_23_22_21(uint64 instruction)
746 uint64 value = 0;
747 value |= extract_bits(instruction, 21, 3);
748 value |= extract_bits(instruction, 25, 1) << 3;
749 return value;
753 uint64 NMD::extract_sa_15_14_13_12_11(uint64 instruction)
755 uint64 value = 0;
756 value |= extract_bits(instruction, 11, 5);
757 return value;
761 uint64 NMD::extract_shift_4_3_2_1_0(uint64 instruction)
763 uint64 value = 0;
764 value |= extract_bits(instruction, 0, 5);
765 return value;
769 uint64 NMD::extr_shiftxil7il1bs4Fmsb4(uint64 instruction)
771 uint64 value = 0;
772 value |= extract_bits(instruction, 7, 4) << 1;
773 return value;
777 uint64 NMD::extract_hint_25_24_23_22_21(uint64 instruction)
779 uint64 value = 0;
780 value |= extract_bits(instruction, 21, 5);
781 return value;
785 uint64 NMD::extract_count3_14_13_12(uint64 instruction)
787 uint64 value = 0;
788 value |= extract_bits(instruction, 12, 3);
789 return value;
793 int64 NMD::extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(uint64 instruction)
795 int64 value = 0;
796 value |= extract_bits(instruction, 0, 1) << 31;
797 value |= extract_bits(instruction, 2, 10) << 21;
798 value |= extract_bits(instruction, 12, 9) << 12;
799 value = sign_extend(value, 31);
800 return value;
804 int64 NMD::extr_sil0il7bs1_il1il1bs6Tmsb7(uint64 instruction)
806 int64 value = 0;
807 value |= extract_bits(instruction, 0, 1) << 7;
808 value |= extract_bits(instruction, 1, 6) << 1;
809 value = sign_extend(value, 7);
810 return value;
814 uint64 NMD::extract_u2_10_9(uint64 instruction)
816 uint64 value = 0;
817 value |= extract_bits(instruction, 9, 2);
818 return value;
822 uint64 NMD::extract_code_25_24_23_22_21_20_19_18_17_16(uint64 instruction)
824 uint64 value = 0;
825 value |= extract_bits(instruction, 16, 10);
826 return value;
830 uint64 NMD::extract_rs_20_19_18_17_16(uint64 instruction)
832 uint64 value = 0;
833 value |= extract_bits(instruction, 16, 5);
834 return value;
838 uint64 NMD::extr_uil1il1bs2Fmsb2(uint64 instruction)
840 uint64 value = 0;
841 value |= extract_bits(instruction, 1, 2) << 1;
842 return value;
846 uint64 NMD::extract_stripe_6(uint64 instruction)
848 uint64 value = 0;
849 value |= extract_bits(instruction, 6, 1);
850 return value;
854 uint64 NMD::extr_xil17il0bs1Fmsb0(uint64 instruction)
856 uint64 value = 0;
857 value |= extract_bits(instruction, 17, 1);
858 return value;
862 uint64 NMD::extr_xil2il0bs1_il15il0bs1Fmsb0(uint64 instruction)
864 uint64 value = 0;
865 value |= extract_bits(instruction, 2, 1);
866 value |= extract_bits(instruction, 15, 1);
867 return value;
871 uint64 NMD::extract_ac_13_12(uint64 instruction)
873 uint64 value = 0;
874 value |= extract_bits(instruction, 14, 2);
875 return value;
879 uint64 NMD::extract_shift_20_19_18_17_16(uint64 instruction)
881 uint64 value = 0;
882 value |= extract_bits(instruction, 16, 5);
883 return value;
887 uint64 NMD::extract_rdl_25_24(uint64 instruction)
889 uint64 value = 0;
890 value |= extract_bits(instruction, 24, 1);
891 return value;
895 int64 NMD::extr_sil0il10bs1_il1il1bs9Tmsb10(uint64 instruction)
897 int64 value = 0;
898 value |= extract_bits(instruction, 0, 1) << 10;
899 value |= extract_bits(instruction, 1, 9) << 1;
900 value = sign_extend(value, 10);
901 return value;
905 uint64 NMD::extract_eu_6_5_4_3_2_1_0(uint64 instruction)
907 uint64 value = 0;
908 value |= extract_bits(instruction, 0, 7);
909 return value;
913 uint64 NMD::extract_shift_5_4_3_2_1_0(uint64 instruction)
915 uint64 value = 0;
916 value |= extract_bits(instruction, 0, 6);
917 return value;
921 uint64 NMD::extr_xil10il0bs6Fmsb5(uint64 instruction)
923 uint64 value = 0;
924 value |= extract_bits(instruction, 10, 6);
925 return value;
929 uint64 NMD::extract_count_19_18_17_16(uint64 instruction)
931 uint64 value = 0;
932 value |= extract_bits(instruction, 16, 4);
933 return value;
937 uint64 NMD::extract_code_2_1_0(uint64 instruction)
939 uint64 value = 0;
940 value |= extract_bits(instruction, 0, 3);
941 return value;
945 uint64 NMD::extr_xil10il0bs4_il22il0bs4Fmsb3(uint64 instruction)
947 uint64 value = 0;
948 value |= extract_bits(instruction, 10, 4);
949 value |= extract_bits(instruction, 22, 4);
950 return value;
954 uint64 NMD::extract_u_11_10_9_8_7_6_5_4_3_2_1_0(uint64 instruction)
956 uint64 value = 0;
957 value |= extract_bits(instruction, 0, 12);
958 return value;
962 uint64 NMD::extract_rs_4_3_2_1_0(uint64 instruction)
964 uint64 value = 0;
965 value |= extract_bits(instruction, 0, 5);
966 return value;
970 uint64 NMD::extr_uil3il3bs18Fmsb20(uint64 instruction)
972 uint64 value = 0;
973 value |= extract_bits(instruction, 3, 18) << 3;
974 return value;
978 uint64 NMD::extr_xil12il0bs1Fmsb0(uint64 instruction)
980 uint64 value = 0;
981 value |= extract_bits(instruction, 12, 1);
982 return value;
986 uint64 NMD::extr_uil0il2bs4Fmsb5(uint64 instruction)
988 uint64 value = 0;
989 value |= extract_bits(instruction, 0, 4) << 2;
990 return value;
994 uint64 NMD::extract_cofun_25_24_23(uint64 instruction)
996 uint64 value = 0;
997 value |= extract_bits(instruction, 3, 23);
998 return value;
1002 uint64 NMD::extr_uil0il2bs3Fmsb4(uint64 instruction)
1004 uint64 value = 0;
1005 value |= extract_bits(instruction, 0, 3) << 2;
1006 return value;
1010 uint64 NMD::extr_xil10il0bs1Fmsb0(uint64 instruction)
1012 uint64 value = 0;
1013 value |= extract_bits(instruction, 10, 1);
1014 return value;
1018 uint64 NMD::extract_rd3_3_2_1(uint64 instruction)
1020 uint64 value = 0;
1021 value |= extract_bits(instruction, 1, 3);
1022 return value;
1026 uint64 NMD::extract_sa_15_14_13_12(uint64 instruction)
1028 uint64 value = 0;
1029 value |= extract_bits(instruction, 12, 4);
1030 return value;
1034 uint64 NMD::extract_rt_25_24_23_22_21(uint64 instruction)
1036 uint64 value = 0;
1037 value |= extract_bits(instruction, 21, 5);
1038 return value;
1042 uint64 NMD::extract_ru_7_6_5_4_3(uint64 instruction)
1044 uint64 value = 0;
1045 value |= extract_bits(instruction, 3, 5);
1046 return value;
1050 uint64 NMD::extr_xil21il0bs5Fmsb4(uint64 instruction)
1052 uint64 value = 0;
1053 value |= extract_bits(instruction, 21, 5);
1054 return value;
1058 uint64 NMD::extr_xil9il0bs3Fmsb2(uint64 instruction)
1060 uint64 value = 0;
1061 value |= extract_bits(instruction, 9, 3);
1062 return value;
1066 uint64 NMD::extract_u_17_to_0(uint64 instruction)
1068 uint64 value = 0;
1069 value |= extract_bits(instruction, 0, 18);
1070 return value;
1074 uint64 NMD::extr_xil14il0bs1_il15il0bs1Fmsb0(uint64 instruction)
1076 uint64 value = 0;
1077 value |= extract_bits(instruction, 14, 1);
1078 value |= extract_bits(instruction, 15, 1);
1079 return value;
1083 uint64 NMD::extract_rsz4_4_2_1_0(uint64 instruction)
1085 uint64 value = 0;
1086 value |= extract_bits(instruction, 0, 3);
1087 value |= extract_bits(instruction, 4, 1) << 3;
1088 return value;
1092 uint64 NMD::extr_xil24il0bs1Fmsb0(uint64 instruction)
1094 uint64 value = 0;
1095 value |= extract_bits(instruction, 24, 1);
1096 return value;
1100 int64 NMD::extr_sil0il21bs1_il1il1bs20Tmsb21(uint64 instruction)
1102 int64 value = 0;
1103 value |= extract_bits(instruction, 0, 1) << 21;
1104 value |= extract_bits(instruction, 1, 20) << 1;
1105 value = sign_extend(value, 21);
1106 return value;
1110 uint64 NMD::extract_op_25_to_3(uint64 instruction)
1112 uint64 value = 0;
1113 value |= extract_bits(instruction, 3, 23);
1114 return value;
1118 uint64 NMD::extract_rs4_4_2_1_0(uint64 instruction)
1120 uint64 value = 0;
1121 value |= extract_bits(instruction, 0, 3);
1122 value |= extract_bits(instruction, 4, 1) << 3;
1123 return value;
1127 uint64 NMD::extract_bit_23_22_21(uint64 instruction)
1129 uint64 value = 0;
1130 value |= extract_bits(instruction, 21, 3);
1131 return value;
1135 uint64 NMD::extract_rt_41_40_39_38_37(uint64 instruction)
1137 uint64 value = 0;
1138 value |= extract_bits(instruction, 37, 5);
1139 return value;
1143 int64 NMD::extract_shift_21_20_19_18_17_16(uint64 instruction)
1145 int64 value = 0;
1146 value |= extract_bits(instruction, 16, 6);
1147 value = sign_extend(value, 5);
1148 return value;
1152 uint64 NMD::extr_xil6il0bs3_il10il0bs1Fmsb2(uint64 instruction)
1154 uint64 value = 0;
1155 value |= extract_bits(instruction, 6, 3);
1156 value |= extract_bits(instruction, 10, 1);
1157 return value;
1161 uint64 NMD::extract_rd2_3_8(uint64 instruction)
1163 uint64 value = 0;
1164 value |= extract_bits(instruction, 3, 1) << 1;
1165 value |= extract_bits(instruction, 8, 1);
1166 return value;
1170 uint64 NMD::extr_xil16il0bs5Fmsb4(uint64 instruction)
1172 uint64 value = 0;
1173 value |= extract_bits(instruction, 16, 5);
1174 return value;
1178 uint64 NMD::extract_code_17_to_0(uint64 instruction)
1180 uint64 value = 0;
1181 value |= extract_bits(instruction, 0, 18);
1182 return value;
1186 uint64 NMD::extr_xil0il0bs12Fmsb11(uint64 instruction)
1188 uint64 value = 0;
1189 value |= extract_bits(instruction, 0, 12);
1190 return value;
1194 uint64 NMD::extract_size_20_19_18_17_16(uint64 instruction)
1196 uint64 value = 0;
1197 value |= extract_bits(instruction, 16, 5);
1198 return value;
1202 int64 NMD::extr_sil2il2bs6_il15il8bs1Tmsb8(uint64 instruction)
1204 int64 value = 0;
1205 value |= extract_bits(instruction, 2, 6) << 2;
1206 value |= extract_bits(instruction, 15, 1) << 8;
1207 value = sign_extend(value, 8);
1208 return value;
1212 uint64 NMD::extract_u_15_to_0(uint64 instruction)
1214 uint64 value = 0;
1215 value |= extract_bits(instruction, 0, 16);
1216 return value;
1220 uint64 NMD::extract_fs_15_14_13_12_11(uint64 instruction)
1222 uint64 value = 0;
1223 value |= extract_bits(instruction, 16, 5);
1224 return value;
1228 int64 NMD::extr_sil0il0bs8_il15il8bs1Tmsb8(uint64 instruction)
1230 int64 value = 0;
1231 value |= extract_bits(instruction, 0, 8);
1232 value |= extract_bits(instruction, 15, 1) << 8;
1233 value = sign_extend(value, 8);
1234 return value;
1238 uint64 NMD::extract_stype_20_19_18_17_16(uint64 instruction)
1240 uint64 value = 0;
1241 value |= extract_bits(instruction, 16, 5);
1242 return value;
1246 uint64 NMD::extract_rtl_11(uint64 instruction)
1248 uint64 value = 0;
1249 value |= extract_bits(instruction, 9, 1);
1250 return value;
1254 uint64 NMD::extract_hs_20_19_18_17_16(uint64 instruction)
1256 uint64 value = 0;
1257 value |= extract_bits(instruction, 16, 5);
1258 return value;
1262 uint64 NMD::extr_xil10il0bs1_il14il0bs2Fmsb1(uint64 instruction)
1264 uint64 value = 0;
1265 value |= extract_bits(instruction, 10, 1);
1266 value |= extract_bits(instruction, 14, 2);
1267 return value;
1271 uint64 NMD::extract_sel_13_12_11(uint64 instruction)
1273 uint64 value = 0;
1274 value |= extract_bits(instruction, 11, 3);
1275 return value;
1279 uint64 NMD::extract_lsb_4_3_2_1_0(uint64 instruction)
1281 uint64 value = 0;
1282 value |= extract_bits(instruction, 0, 5);
1283 return value;
1287 uint64 NMD::extr_xil14il0bs2Fmsb1(uint64 instruction)
1289 uint64 value = 0;
1290 value |= extract_bits(instruction, 14, 2);
1291 return value;
1295 uint64 NMD::extract_gp_2(uint64 instruction)
1297 uint64 value = 0;
1298 value |= extract_bits(instruction, 2, 1);
1299 return value;
1303 uint64 NMD::extract_rt3_9_8_7(uint64 instruction)
1305 uint64 value = 0;
1306 value |= extract_bits(instruction, 7, 3);
1307 return value;
1311 uint64 NMD::extract_ft_20_19_18_17_16(uint64 instruction)
1313 uint64 value = 0;
1314 value |= extract_bits(instruction, 21, 5);
1315 return value;
1319 uint64 NMD::extract_u_17_16_15_14_13_12_11(uint64 instruction)
1321 uint64 value = 0;
1322 value |= extract_bits(instruction, 11, 7);
1323 return value;
1327 uint64 NMD::extract_cs_20_19_18_17_16(uint64 instruction)
1329 uint64 value = 0;
1330 value |= extract_bits(instruction, 16, 5);
1331 return value;
1335 uint64 NMD::extr_xil16il0bs10Fmsb9(uint64 instruction)
1337 uint64 value = 0;
1338 value |= extract_bits(instruction, 16, 10);
1339 return value;
1343 uint64 NMD::extract_rt4_9_7_6_5(uint64 instruction)
1345 uint64 value = 0;
1346 value |= extract_bits(instruction, 5, 3);
1347 value |= extract_bits(instruction, 9, 1) << 3;
1348 return value;
1352 uint64 NMD::extract_msbt_10_9_8_7_6(uint64 instruction)
1354 uint64 value = 0;
1355 value |= extract_bits(instruction, 6, 5);
1356 return value;
1360 uint64 NMD::extr_uil0il2bs6Fmsb7(uint64 instruction)
1362 uint64 value = 0;
1363 value |= extract_bits(instruction, 0, 6) << 2;
1364 return value;
1368 uint64 NMD::extr_xil17il0bs9Fmsb8(uint64 instruction)
1370 uint64 value = 0;
1371 value |= extract_bits(instruction, 17, 9);
1372 return value;
1376 uint64 NMD::extract_sa_15_14_13(uint64 instruction)
1378 uint64 value = 0;
1379 value |= extract_bits(instruction, 13, 3);
1380 return value;
1384 int64 NMD::extr_sil0il14bs1_il1il1bs13Tmsb14(uint64 instruction)
1386 int64 value = 0;
1387 value |= extract_bits(instruction, 0, 1) << 14;
1388 value |= extract_bits(instruction, 1, 13) << 1;
1389 value = sign_extend(value, 14);
1390 return value;
1394 uint64 NMD::extract_rs3_6_5_4(uint64 instruction)
1396 uint64 value = 0;
1397 value |= extract_bits(instruction, 4, 3);
1398 return value;
1402 uint64 NMD::extr_uil0il32bs32Fmsb63(uint64 instruction)
1404 uint64 value = 0;
1405 value |= extract_bits(instruction, 0, 32) << 32;
1406 return value;
1410 uint64 NMD::extract_shift_10_9_8_7_6(uint64 instruction)
1412 uint64 value = 0;
1413 value |= extract_bits(instruction, 6, 5);
1414 return value;
1418 uint64 NMD::extract_cs_25_24_23_22_21(uint64 instruction)
1420 uint64 value = 0;
1421 value |= extract_bits(instruction, 21, 5);
1422 return value;
1426 uint64 NMD::extract_shiftx_11_10_9_8_7_6(uint64 instruction)
1428 uint64 value = 0;
1429 value |= extract_bits(instruction, 6, 6);
1430 return value;
1434 uint64 NMD::extract_rt_9_8_7_6_5(uint64 instruction)
1436 uint64 value = 0;
1437 value |= extract_bits(instruction, 5, 5);
1438 return value;
1442 uint64 NMD::extract_op_25_24_23_22_21(uint64 instruction)
1444 uint64 value = 0;
1445 value |= extract_bits(instruction, 21, 5);
1446 return value;
1450 uint64 NMD::extr_uil0il2bs7Fmsb8(uint64 instruction)
1452 uint64 value = 0;
1453 value |= extract_bits(instruction, 0, 7) << 2;
1454 return value;
1458 uint64 NMD::extract_bit_16_15_14_13_12_11(uint64 instruction)
1460 uint64 value = 0;
1461 value |= extract_bits(instruction, 11, 6);
1462 return value;
1466 uint64 NMD::extr_xil10il0bs1_il11il0bs5Fmsb4(uint64 instruction)
1468 uint64 value = 0;
1469 value |= extract_bits(instruction, 10, 1);
1470 value |= extract_bits(instruction, 11, 5);
1471 return value;
1475 uint64 NMD::extract_mask_20_19_18_17_16_15_14(uint64 instruction)
1477 uint64 value = 0;
1478 value |= extract_bits(instruction, 14, 7);
1479 return value;
1483 uint64 NMD::extract_eu_3_2_1_0(uint64 instruction)
1485 uint64 value = 0;
1486 value |= extract_bits(instruction, 0, 4);
1487 return value;
1491 uint64 NMD::extr_uil4il4bs4Fmsb7(uint64 instruction)
1493 uint64 value = 0;
1494 value |= extract_bits(instruction, 4, 4) << 4;
1495 return value;
1499 int64 NMD::extr_sil3il3bs5_il15il8bs1Tmsb8(uint64 instruction)
1501 int64 value = 0;
1502 value |= extract_bits(instruction, 3, 5) << 3;
1503 value |= extract_bits(instruction, 15, 1) << 8;
1504 value = sign_extend(value, 8);
1505 return value;
1509 uint64 NMD::extract_ft_15_14_13_12_11(uint64 instruction)
1511 uint64 value = 0;
1512 value |= extract_bits(instruction, 11, 5);
1513 return value;
1517 int64 NMD::extr_sil0il16bs16_il16il0bs16Tmsb31(uint64 instruction)
1519 int64 value = 0;
1520 value |= extract_bits(instruction, 0, 16) << 16;
1521 value |= extract_bits(instruction, 16, 16);
1522 value = sign_extend(value, 31);
1523 return value;
1527 uint64 NMD::extract_u_20_19_18_17_16_15_14_13(uint64 instruction)
1529 uint64 value = 0;
1530 value |= extract_bits(instruction, 13, 8);
1531 return value;
1535 uint64 NMD::extr_xil15il0bs1Fmsb0(uint64 instruction)
1537 uint64 value = 0;
1538 value |= extract_bits(instruction, 15, 1);
1539 return value;
1543 uint64 NMD::extr_xil11il0bs5Fmsb4(uint64 instruction)
1545 uint64 value = 0;
1546 value |= extract_bits(instruction, 11, 5);
1547 return value;
1551 uint64 NMD::extr_uil2il2bs16Fmsb17(uint64 instruction)
1553 uint64 value = 0;
1554 value |= extract_bits(instruction, 2, 16) << 2;
1555 return value;
1559 uint64 NMD::extract_rd_20_19_18_17_16(uint64 instruction)
1561 uint64 value = 0;
1562 value |= extract_bits(instruction, 11, 5);
1563 return value;
1567 uint64 NMD::extract_c0s_20_19_18_17_16(uint64 instruction)
1569 uint64 value = 0;
1570 value |= extract_bits(instruction, 16, 5);
1571 return value;
1575 uint64 NMD::extract_code_1_0(uint64 instruction)
1577 uint64 value = 0;
1578 value |= extract_bits(instruction, 0, 2);
1579 return value;
1583 int64 NMD::extr_sil0il25bs1_il1il1bs24Tmsb25(uint64 instruction)
1585 int64 value = 0;
1586 value |= extract_bits(instruction, 0, 1) << 25;
1587 value |= extract_bits(instruction, 1, 24) << 1;
1588 value = sign_extend(value, 25);
1589 return value;
1593 uint64 NMD::extr_xil0il0bs3_il4il0bs1Fmsb2(uint64 instruction)
1595 uint64 value = 0;
1596 value |= extract_bits(instruction, 0, 3);
1597 value |= extract_bits(instruction, 4, 1);
1598 return value;
1602 uint64 NMD::extract_u_1_0(uint64 instruction)
1604 uint64 value = 0;
1605 value |= extract_bits(instruction, 0, 2);
1606 return value;
1610 uint64 NMD::extr_uil3il3bs1_il8il2bs1Fmsb3(uint64 instruction)
1612 uint64 value = 0;
1613 value |= extract_bits(instruction, 3, 1) << 3;
1614 value |= extract_bits(instruction, 8, 1) << 2;
1615 return value;
1619 uint64 NMD::extr_xil9il0bs3_il16il0bs5Fmsb4(uint64 instruction)
1621 uint64 value = 0;
1622 value |= extract_bits(instruction, 9, 3);
1623 value |= extract_bits(instruction, 16, 5);
1624 return value;
1628 uint64 NMD::extract_fd_10_9_8_7_6(uint64 instruction)
1630 uint64 value = 0;
1631 value |= extract_bits(instruction, 11, 5);
1632 return value;
1636 uint64 NMD::extr_xil6il0bs3Fmsb2(uint64 instruction)
1638 uint64 value = 0;
1639 value |= extract_bits(instruction, 6, 3);
1640 return value;
1644 uint64 NMD::extr_uil0il2bs5Fmsb6(uint64 instruction)
1646 uint64 value = 0;
1647 value |= extract_bits(instruction, 0, 5) << 2;
1648 return value;
1652 uint64 NMD::extract_rtz4_9_7_6_5(uint64 instruction)
1654 uint64 value = 0;
1655 value |= extract_bits(instruction, 5, 3);
1656 value |= extract_bits(instruction, 9, 1) << 3;
1657 return value;
1661 uint64 NMD::extract_sel_15_14_13_12_11(uint64 instruction)
1663 uint64 value = 0;
1664 value |= extract_bits(instruction, 11, 5);
1665 return value;
1669 uint64 NMD::extract_ct_25_24_23_22_21(uint64 instruction)
1671 uint64 value = 0;
1672 value |= extract_bits(instruction, 21, 5);
1673 return value;
1677 uint64 NMD::extr_xil11il0bs1Fmsb0(uint64 instruction)
1679 uint64 value = 0;
1680 value |= extract_bits(instruction, 11, 1);
1681 return value;
1685 uint64 NMD::extr_uil2il2bs19Fmsb20(uint64 instruction)
1687 uint64 value = 0;
1688 value |= extract_bits(instruction, 2, 19) << 2;
1689 return value;
1693 int64 NMD::extract_s_4_2_1_0(uint64 instruction)
1695 int64 value = 0;
1696 value |= extract_bits(instruction, 0, 3);
1697 value |= extract_bits(instruction, 4, 1) << 3;
1698 value = sign_extend(value, 3);
1699 return value;
1703 uint64 NMD::extr_uil0il1bs4Fmsb4(uint64 instruction)
1705 uint64 value = 0;
1706 value |= extract_bits(instruction, 0, 4) << 1;
1707 return value;
1711 uint64 NMD::extr_xil9il0bs2Fmsb1(uint64 instruction)
1713 uint64 value = 0;
1714 value |= extract_bits(instruction, 9, 2);
1715 return value;
1720 bool NMD::ADDIU_32__cond(uint64 instruction)
1722 uint64 rt = extract_rt_25_24_23_22_21(instruction);
1723 return rt != 0;
1727 bool NMD::ADDIU_RS5__cond(uint64 instruction)
1729 uint64 rt = extract_rt_9_8_7_6_5(instruction);
1730 return rt != 0;
1734 bool NMD::BALRSC_cond(uint64 instruction)
1736 uint64 rt = extract_rt_25_24_23_22_21(instruction);
1737 return rt != 0;
1741 bool NMD::BEQC_16__cond(uint64 instruction)
1743 uint64 rs3 = extract_rs3_6_5_4(instruction);
1744 uint64 rt3 = extract_rt3_9_8_7(instruction);
1745 uint64 u = extr_uil0il1bs4Fmsb4(instruction);
1746 return rs3 < rt3 && u != 0;
1750 bool NMD::BNEC_16__cond(uint64 instruction)
1752 uint64 rs3 = extract_rs3_6_5_4(instruction);
1753 uint64 rt3 = extract_rt3_9_8_7(instruction);
1754 uint64 u = extr_uil0il1bs4Fmsb4(instruction);
1755 return rs3 >= rt3 && u != 0;
1759 bool NMD::MOVE_cond(uint64 instruction)
1761 uint64 rt = extract_rt_9_8_7_6_5(instruction);
1762 return rt != 0;
1766 bool NMD::P16_BR1_cond(uint64 instruction)
1768 uint64 u = extr_uil0il1bs4Fmsb4(instruction);
1769 return u != 0;
1773 bool NMD::PREF_S9__cond(uint64 instruction)
1775 uint64 hint = extract_hint_25_24_23_22_21(instruction);
1776 return hint != 31;
1780 bool NMD::PREFE_cond(uint64 instruction)
1782 uint64 hint = extract_hint_25_24_23_22_21(instruction);
1783 return hint != 31;
1787 bool NMD::SLTU_cond(uint64 instruction)
1789 uint64 rd = extract_rd_20_19_18_17_16(instruction);
1790 return rd != 0;
1796 * ABS.D fd, fs - Floating Point Absolute Value
1798 * 3 2 1
1799 * 10987654321098765432109876543210
1800 * 010001 00000 000101
1801 * fmt -----
1802 * fs -----
1803 * fd -----
1805 std::string NMD::ABS_D(uint64 instruction)
1807 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
1808 uint64 fd_value = extract_ft_20_19_18_17_16(instruction);
1810 std::string fs = FPR(copy(fs_value));
1811 std::string fd = FPR(copy(fd_value));
1813 return img::format("ABS.D %s, %s", fd, fs);
1818 * ABS.S fd, fs - Floating Point Absolute Value
1820 * 3 2 1
1821 * 10987654321098765432109876543210
1822 * 010001 00000 000101
1823 * fmt -----
1824 * fd -----
1825 * fs -----
1827 std::string NMD::ABS_S(uint64 instruction)
1829 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
1830 uint64 fd_value = extract_ft_20_19_18_17_16(instruction);
1832 std::string fs = FPR(copy(fs_value));
1833 std::string fd = FPR(copy(fd_value));
1835 return img::format("ABS.S %s, %s", fd, fs);
1840 * ABSQ_S.PH rt, rs - Find Absolute Value of Two Fractional Halfwords
1842 * 3 2 1
1843 * 10987654321098765432109876543210
1844 * 001000 0001000100111111
1845 * rt -----
1846 * rs -----
1848 std::string NMD::ABSQ_S_PH(uint64 instruction)
1850 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
1851 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
1853 std::string rt = GPR(copy(rt_value));
1854 std::string rs = GPR(copy(rs_value));
1856 return img::format("ABSQ_S.PH %s, %s", rt, rs);
1861 * ABSQ_S.QB rt, rs - Find Absolute Value of Four Fractional Byte Values
1863 * 3 2 1
1864 * 10987654321098765432109876543210
1865 * 001000 0000000100111111
1866 * rt -----
1867 * rs -----
1869 std::string NMD::ABSQ_S_QB(uint64 instruction)
1871 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
1872 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
1874 std::string rt = GPR(copy(rt_value));
1875 std::string rs = GPR(copy(rs_value));
1877 return img::format("ABSQ_S.QB %s, %s", rt, rs);
1884 * 3 2 1
1885 * 10987654321098765432109876543210
1886 * 001000 0010000100111111
1887 * rt -----
1888 * rs -----
1890 std::string NMD::ABSQ_S_W(uint64 instruction)
1892 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
1893 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
1895 std::string rt = GPR(copy(rt_value));
1896 std::string rs = GPR(copy(rs_value));
1898 return img::format("ABSQ_S.W %s, %s", rt, rs);
1905 * 3 2 1
1906 * 10987654321098765432109876543210
1907 * 001000 0010000100111111
1908 * rt -----
1909 * rs -----
1911 std::string NMD::ACLR(uint64 instruction)
1913 uint64 bit_value = extract_bit_23_22_21(instruction);
1914 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
1915 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
1917 std::string bit = IMMEDIATE(copy(bit_value));
1918 std::string s = IMMEDIATE(copy(s_value));
1919 std::string rs = GPR(copy(rs_value));
1921 return img::format("ACLR %s, %s(%s)", bit, s, rs);
1928 * 3 2 1
1929 * 10987654321098765432109876543210
1930 * 001000 0010000100111111
1931 * rt -----
1932 * rs -----
1934 std::string NMD::ADD(uint64 instruction)
1936 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
1937 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
1938 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
1940 std::string rd = GPR(copy(rd_value));
1941 std::string rs = GPR(copy(rs_value));
1942 std::string rt = GPR(copy(rt_value));
1944 return img::format("ADD %s, %s, %s", rd, rs, rt);
1949 * ADD.D fd, fs, ft - Floating Point Add
1951 * 3 2 1
1952 * 10987654321098765432109876543210
1953 * 010001 000101
1954 * fmt -----
1955 * ft -----
1956 * fs -----
1957 * fd -----
1959 std::string NMD::ADD_D(uint64 instruction)
1961 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
1962 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
1963 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
1965 std::string ft = FPR(copy(ft_value));
1966 std::string fs = FPR(copy(fs_value));
1967 std::string fd = FPR(copy(fd_value));
1969 return img::format("ADD.D %s, %s, %s", fd, fs, ft);
1974 * ADD.S fd, fs, ft - Floating Point Add
1976 * 3 2 1
1977 * 10987654321098765432109876543210
1978 * 010001 000101
1979 * fmt -----
1980 * ft -----
1981 * fs -----
1982 * fd -----
1984 std::string NMD::ADD_S(uint64 instruction)
1986 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
1987 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
1988 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
1990 std::string ft = FPR(copy(ft_value));
1991 std::string fs = FPR(copy(fs_value));
1992 std::string fd = FPR(copy(fd_value));
1994 return img::format("ADD.S %s, %s, %s", fd, fs, ft);
2001 * 3 2 1
2002 * 10987654321098765432109876543210
2003 * 001000 0010000100111111
2004 * rt -----
2005 * rs -----
2007 std::string NMD::ADDIU_32_(uint64 instruction)
2009 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2010 uint64 u_value = extract_u_15_to_0(instruction);
2011 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2013 std::string rt = GPR(copy(rt_value));
2014 std::string rs = GPR(copy(rs_value));
2015 std::string u = IMMEDIATE(copy(u_value));
2017 return img::format("ADDIU %s, %s, %s", rt, rs, u);
2024 * 3 2 1
2025 * 10987654321098765432109876543210
2026 * 001000 0010000100111111
2027 * rt -----
2028 * rs -----
2030 std::string NMD::ADDIU_48_(uint64 instruction)
2032 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
2033 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
2035 std::string rt = GPR(copy(rt_value));
2036 std::string s = IMMEDIATE(copy(s_value));
2038 return img::format("ADDIU %s, %s", rt, s);
2045 * 3 2 1
2046 * 10987654321098765432109876543210
2047 * 001000 0010000100111111
2048 * rt -----
2049 * rs -----
2051 std::string NMD::ADDIU_GP48_(uint64 instruction)
2053 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
2054 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
2056 std::string rt = GPR(copy(rt_value));
2057 std::string s = IMMEDIATE(copy(s_value));
2059 return img::format("ADDIU %s, $%d, %s", rt, 28, s);
2066 * 3 2 1
2067 * 10987654321098765432109876543210
2068 * 001000 0010000100111111
2069 * rt -----
2070 * rs -----
2072 std::string NMD::ADDIU_GP_B_(uint64 instruction)
2074 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2075 uint64 u_value = extract_u_17_to_0(instruction);
2077 std::string rt = GPR(copy(rt_value));
2078 std::string u = IMMEDIATE(copy(u_value));
2080 return img::format("ADDIU %s, $%d, %s", rt, 28, u);
2087 * 3 2 1
2088 * 10987654321098765432109876543210
2089 * 001000 0010000100111111
2090 * rt -----
2091 * rs -----
2093 std::string NMD::ADDIU_GP_W_(uint64 instruction)
2095 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2096 uint64 u_value = extr_uil2il2bs19Fmsb20(instruction);
2098 std::string rt = GPR(copy(rt_value));
2099 std::string u = IMMEDIATE(copy(u_value));
2101 return img::format("ADDIU %s, $%d, %s", rt, 28, u);
2108 * 3 2 1
2109 * 10987654321098765432109876543210
2110 * 001000 0010000100111111
2111 * rt -----
2112 * rs -----
2114 std::string NMD::ADDIU_NEG_(uint64 instruction)
2116 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2117 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
2118 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2120 std::string rt = GPR(copy(rt_value));
2121 std::string rs = GPR(copy(rs_value));
2122 std::string u = IMMEDIATE(neg_copy(u_value));
2124 return img::format("ADDIU %s, %s, %s", rt, rs, u);
2131 * 3 2 1
2132 * 10987654321098765432109876543210
2133 * 001000 0010000100111111
2134 * rt -----
2135 * rs -----
2137 std::string NMD::ADDIU_R1_SP_(uint64 instruction)
2139 uint64 u_value = extr_uil0il2bs6Fmsb7(instruction);
2140 uint64 rt3_value = extract_rt3_9_8_7(instruction);
2142 std::string rt3 = GPR(encode_gpr3(rt3_value));
2143 std::string u = IMMEDIATE(copy(u_value));
2145 return img::format("ADDIU %s, $%d, %s", rt3, 29, u);
2152 * 3 2 1
2153 * 10987654321098765432109876543210
2154 * 001000 0010000100111111
2155 * rt -----
2156 * rs -----
2158 std::string NMD::ADDIU_R2_(uint64 instruction)
2160 uint64 u_value = extr_uil0il2bs3Fmsb4(instruction);
2161 uint64 rt3_value = extract_rt3_9_8_7(instruction);
2162 uint64 rs3_value = extract_rs3_6_5_4(instruction);
2164 std::string rt3 = GPR(encode_gpr3(rt3_value));
2165 std::string rs3 = GPR(encode_gpr3(rs3_value));
2166 std::string u = IMMEDIATE(copy(u_value));
2168 return img::format("ADDIU %s, %s, %s", rt3, rs3, u);
2173 * ADDIU[RS5] rt, s5 - Add Signed Word and Set Carry Bit
2175 * 5432109876543210
2176 * 100100 1
2177 * rt -----
2178 * s - ---
2180 std::string NMD::ADDIU_RS5_(uint64 instruction)
2182 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
2183 int64 s_value = extract_s_4_2_1_0(instruction);
2185 std::string rt = GPR(copy(rt_value));
2186 std::string s = IMMEDIATE(copy(s_value));
2188 return img::format("ADDIU %s, %s", rt, s);
2195 * 3 2 1
2196 * 10987654321098765432109876543210
2197 * 001000 x1110000101
2198 * rt -----
2199 * rs -----
2200 * rd -----
2202 std::string NMD::ADDIUPC_32_(uint64 instruction)
2204 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2205 int64 s_value = extr_sil0il21bs1_il1il1bs20Tmsb21(instruction);
2207 std::string rt = GPR(copy(rt_value));
2208 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2210 return img::format("ADDIUPC %s, %s", rt, s);
2217 * 3 2 1
2218 * 10987654321098765432109876543210
2219 * 001000 x1110000101
2220 * rt -----
2221 * rs -----
2222 * rd -----
2224 std::string NMD::ADDIUPC_48_(uint64 instruction)
2226 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
2227 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
2229 std::string rt = GPR(copy(rt_value));
2230 std::string s = ADDRESS(encode_s_from_address(s_value), 6);
2232 return img::format("ADDIUPC %s, %s", rt, s);
2237 * ADDQ.PH rd, rt, rs - Add Fractional Halfword Vectors
2239 * 3 2 1
2240 * 10987654321098765432109876543210
2241 * 001000 00000001101
2242 * rt -----
2243 * rs -----
2244 * rd -----
2246 std::string NMD::ADDQ_PH(uint64 instruction)
2248 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2249 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2250 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2252 std::string rd = GPR(copy(rd_value));
2253 std::string rs = GPR(copy(rs_value));
2254 std::string rt = GPR(copy(rt_value));
2256 return img::format("ADDQ.PH %s, %s, %s", rd, rs, rt);
2261 * ADDQ_S.PH rd, rt, rs - Add Fractional Halfword Vectors
2263 * 3 2 1
2264 * 10987654321098765432109876543210
2265 * 001000 10000001101
2266 * rt -----
2267 * rs -----
2268 * rd -----
2270 std::string NMD::ADDQ_S_PH(uint64 instruction)
2272 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2273 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2274 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2276 std::string rd = GPR(copy(rd_value));
2277 std::string rs = GPR(copy(rs_value));
2278 std::string rt = GPR(copy(rt_value));
2280 return img::format("ADDQ_S.PH %s, %s, %s", rd, rs, rt);
2285 * ADDQ_S.W rd, rt, rs - Add Fractional Words
2287 * 3 2 1
2288 * 10987654321098765432109876543210
2289 * 001000 x1100000101
2290 * rt -----
2291 * rs -----
2292 * rd -----
2294 std::string NMD::ADDQ_S_W(uint64 instruction)
2296 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2297 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2298 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2300 std::string rd = GPR(copy(rd_value));
2301 std::string rs = GPR(copy(rs_value));
2302 std::string rt = GPR(copy(rt_value));
2304 return img::format("ADDQ_S.W %s, %s, %s", rd, rs, rt);
2309 * ADDQH.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2310 * to Halve Results
2312 * 3 2 1
2313 * 10987654321098765432109876543210
2314 * 001000 00001001101
2315 * rt -----
2316 * rs -----
2317 * rd -----
2319 std::string NMD::ADDQH_PH(uint64 instruction)
2321 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2322 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2323 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2325 std::string rd = GPR(copy(rd_value));
2326 std::string rs = GPR(copy(rs_value));
2327 std::string rt = GPR(copy(rt_value));
2329 return img::format("ADDQH.PH %s, %s, %s", rd, rs, rt);
2334 * ADDQH_R.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2335 * to Halve Results
2337 * 3 2 1
2338 * 10987654321098765432109876543210
2339 * 001000 10001001101
2340 * rt -----
2341 * rs -----
2342 * rd -----
2344 std::string NMD::ADDQH_R_PH(uint64 instruction)
2346 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2347 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2348 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2350 std::string rd = GPR(copy(rd_value));
2351 std::string rs = GPR(copy(rs_value));
2352 std::string rt = GPR(copy(rt_value));
2354 return img::format("ADDQH_R.PH %s, %s, %s", rd, rs, rt);
2359 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2361 * 3 2 1
2362 * 10987654321098765432109876543210
2363 * 001000 00010001101
2364 * rt -----
2365 * rs -----
2366 * rd -----
2368 std::string NMD::ADDQH_R_W(uint64 instruction)
2370 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2371 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2372 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2374 std::string rd = GPR(copy(rd_value));
2375 std::string rs = GPR(copy(rs_value));
2376 std::string rt = GPR(copy(rt_value));
2378 return img::format("ADDQH_R.W %s, %s, %s", rd, rs, rt);
2383 * ADDQH.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2385 * 3 2 1
2386 * 10987654321098765432109876543210
2387 * 001000 10010001101
2388 * rt -----
2389 * rs -----
2390 * rd -----
2392 std::string NMD::ADDQH_W(uint64 instruction)
2394 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2395 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2396 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2398 std::string rd = GPR(copy(rd_value));
2399 std::string rs = GPR(copy(rs_value));
2400 std::string rt = GPR(copy(rt_value));
2402 return img::format("ADDQH.W %s, %s, %s", rd, rs, rt);
2407 * ADDSC rd, rt, rs - Add Signed Word and Set Carry Bit
2409 * 3 2 1
2410 * 10987654321098765432109876543210
2411 * 001000 x1110000101
2412 * rt -----
2413 * rs -----
2414 * rd -----
2416 std::string NMD::ADDSC(uint64 instruction)
2418 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2419 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2420 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2422 std::string rd = GPR(copy(rd_value));
2423 std::string rs = GPR(copy(rs_value));
2424 std::string rt = GPR(copy(rt_value));
2426 return img::format("ADDSC %s, %s, %s", rd, rs, rt);
2431 * ADDU[16] rd3, rs3, rt3 -
2433 * 5432109876543210
2434 * 101100 0
2435 * rt3 ---
2436 * rs3 ---
2437 * rd3 ---
2439 std::string NMD::ADDU_16_(uint64 instruction)
2441 uint64 rt3_value = extract_rt3_9_8_7(instruction);
2442 uint64 rs3_value = extract_rs3_6_5_4(instruction);
2443 uint64 rd3_value = extract_rd3_3_2_1(instruction);
2445 std::string rt3 = GPR(encode_gpr3(rt3_value));
2446 std::string rs3 = GPR(encode_gpr3(rs3_value));
2447 std::string rd3 = GPR(encode_gpr3(rd3_value));
2449 return img::format("ADDU %s, %s, %s", rd3, rs3, rt3);
2456 * 3 2 1
2457 * 10987654321098765432109876543210
2458 * 001000 x1110000101
2459 * rt -----
2460 * rs -----
2461 * rd -----
2463 std::string NMD::ADDU_32_(uint64 instruction)
2465 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2466 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2467 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2469 std::string rd = GPR(copy(rd_value));
2470 std::string rs = GPR(copy(rs_value));
2471 std::string rt = GPR(copy(rt_value));
2473 return img::format("ADDU %s, %s, %s", rd, rs, rt);
2480 * 3 2 1
2481 * 10987654321098765432109876543210
2482 * 001000 x1110000101
2483 * rt -----
2484 * rs -----
2485 * rd -----
2487 std::string NMD::ADDU_4X4_(uint64 instruction)
2489 uint64 rs4_value = extract_rs4_4_2_1_0(instruction);
2490 uint64 rt4_value = extract_rt4_9_7_6_5(instruction);
2492 std::string rs4 = GPR(encode_gpr4(rs4_value));
2493 std::string rt4 = GPR(encode_gpr4(rt4_value));
2495 return img::format("ADDU %s, %s", rs4, rt4);
2500 * ADDU.PH rd, rt, rs - Unsigned Add Integer Halfwords
2502 * 3 2 1
2503 * 10987654321098765432109876543210
2504 * 001000 00100001101
2505 * rt -----
2506 * rs -----
2507 * rd -----
2509 std::string NMD::ADDU_PH(uint64 instruction)
2511 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2512 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2513 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2515 std::string rd = GPR(copy(rd_value));
2516 std::string rs = GPR(copy(rs_value));
2517 std::string rt = GPR(copy(rt_value));
2519 return img::format("ADDU.PH %s, %s, %s", rd, rs, rt);
2524 * ADDU.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2526 * 3 2 1
2527 * 10987654321098765432109876543210
2528 * 001000 00011001101
2529 * rt -----
2530 * rs -----
2531 * rd -----
2533 std::string NMD::ADDU_QB(uint64 instruction)
2535 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2536 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2537 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2539 std::string rd = GPR(copy(rd_value));
2540 std::string rs = GPR(copy(rs_value));
2541 std::string rt = GPR(copy(rt_value));
2543 return img::format("ADDU.QB %s, %s, %s", rd, rs, rt);
2548 * ADDU_S.PH rd, rt, rs - Unsigned Add Integer Halfwords
2550 * 3 2 1
2551 * 10987654321098765432109876543210
2552 * 001000 10100001101
2553 * rt -----
2554 * rs -----
2555 * rd -----
2557 std::string NMD::ADDU_S_PH(uint64 instruction)
2559 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2560 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2561 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2563 std::string rd = GPR(copy(rd_value));
2564 std::string rs = GPR(copy(rs_value));
2565 std::string rt = GPR(copy(rt_value));
2567 return img::format("ADDU_S.PH %s, %s, %s", rd, rs, rt);
2572 * ADDU_S.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2574 * 3 2 1
2575 * 10987654321098765432109876543210
2576 * 001000 10011001101
2577 * rt -----
2578 * rs -----
2579 * rd -----
2581 std::string NMD::ADDU_S_QB(uint64 instruction)
2583 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2584 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2585 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2587 std::string rd = GPR(copy(rd_value));
2588 std::string rs = GPR(copy(rs_value));
2589 std::string rt = GPR(copy(rt_value));
2591 return img::format("ADDU_S.QB %s, %s, %s", rd, rs, rt);
2596 * ADDUH.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2597 * to Halve Results
2599 * 3 2 1
2600 * 10987654321098765432109876543210
2601 * 001000 00101001101
2602 * rt -----
2603 * rs -----
2604 * rd -----
2606 std::string NMD::ADDUH_QB(uint64 instruction)
2608 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2609 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2610 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2612 std::string rd = GPR(copy(rd_value));
2613 std::string rs = GPR(copy(rs_value));
2614 std::string rt = GPR(copy(rt_value));
2616 return img::format("ADDUH.QB %s, %s, %s", rd, rs, rt);
2621 * ADDUH_R.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2622 * to Halve Results
2624 * 3 2 1
2625 * 10987654321098765432109876543210
2626 * 001000 10101001101
2627 * rt -----
2628 * rs -----
2629 * rd -----
2631 std::string NMD::ADDUH_R_QB(uint64 instruction)
2633 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2634 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2635 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2637 std::string rd = GPR(copy(rd_value));
2638 std::string rs = GPR(copy(rs_value));
2639 std::string rt = GPR(copy(rt_value));
2641 return img::format("ADDUH_R.QB %s, %s, %s", rd, rs, rt);
2645 * ADDWC rd, rt, rs - Add Word with Carry Bit
2647 * 3 2 1
2648 * 10987654321098765432109876543210
2649 * 001000 x1111000101
2650 * rt -----
2651 * rs -----
2652 * rd -----
2654 std::string NMD::ADDWC(uint64 instruction)
2656 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2657 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2658 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2660 std::string rd = GPR(copy(rd_value));
2661 std::string rs = GPR(copy(rs_value));
2662 std::string rt = GPR(copy(rt_value));
2664 return img::format("ADDWC %s, %s, %s", rd, rs, rt);
2671 * 3 2 1
2672 * 10987654321098765432109876543210
2673 * 001000 x1110000101
2674 * rt -----
2675 * rs -----
2676 * rd -----
2678 std::string NMD::ALUIPC(uint64 instruction)
2680 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2681 int64 s_value = extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(instruction);
2683 std::string rt = GPR(copy(rt_value));
2684 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2686 return img::format("ALUIPC %s, %%pcrel_hi(%s)", rt, s);
2691 * AND[16] rt3, rs3 -
2693 * 5432109876543210
2694 * 101100
2695 * rt3 ---
2696 * rs3 ---
2697 * eu ----
2699 std::string NMD::AND_16_(uint64 instruction)
2701 uint64 rt3_value = extract_rt3_9_8_7(instruction);
2702 uint64 rs3_value = extract_rs3_6_5_4(instruction);
2704 std::string rt3 = GPR(encode_gpr3(rt3_value));
2705 std::string rs3 = GPR(encode_gpr3(rs3_value));
2707 return img::format("AND %s, %s", rs3, rt3);
2714 * 3 2 1
2715 * 10987654321098765432109876543210
2716 * 001000 x1110000101
2717 * rt -----
2718 * rs -----
2719 * rd -----
2721 std::string NMD::AND_32_(uint64 instruction)
2723 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2724 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
2725 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2727 std::string rd = GPR(copy(rd_value));
2728 std::string rs = GPR(copy(rs_value));
2729 std::string rt = GPR(copy(rt_value));
2731 return img::format("AND %s, %s, %s", rd, rs, rt);
2736 * ANDI rt, rs, u -
2738 * 5432109876543210
2739 * 101100
2740 * rt3 ---
2741 * rs3 ---
2742 * eu ----
2744 std::string NMD::ANDI_16_(uint64 instruction)
2746 uint64 rt3_value = extract_rt3_9_8_7(instruction);
2747 uint64 rs3_value = extract_rs3_6_5_4(instruction);
2748 uint64 eu_value = extract_eu_3_2_1_0(instruction);
2750 std::string rt3 = GPR(encode_gpr3(rt3_value));
2751 std::string rs3 = GPR(encode_gpr3(rs3_value));
2752 std::string eu = IMMEDIATE(encode_eu_from_u_andi16(eu_value));
2754 return img::format("ANDI %s, %s, %s", rt3, rs3, eu);
2761 * 3 2 1
2762 * 10987654321098765432109876543210
2763 * 001000 x1110000101
2764 * rt -----
2765 * rs -----
2766 * rd -----
2768 std::string NMD::ANDI_32_(uint64 instruction)
2770 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2771 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
2772 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2774 std::string rt = GPR(copy(rt_value));
2775 std::string rs = GPR(copy(rs_value));
2776 std::string u = IMMEDIATE(copy(u_value));
2778 return img::format("ANDI %s, %s, %s", rt, rs, u);
2785 * 3 2 1
2786 * 10987654321098765432109876543210
2787 * 001000 x1110000101
2788 * rt -----
2789 * rs -----
2790 * rd -----
2792 std::string NMD::APPEND(uint64 instruction)
2794 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2795 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
2796 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2798 std::string rt = GPR(copy(rt_value));
2799 std::string rs = GPR(copy(rs_value));
2800 std::string sa = IMMEDIATE(copy(sa_value));
2802 return img::format("APPEND %s, %s, %s", rt, rs, sa);
2809 * 3 2 1
2810 * 10987654321098765432109876543210
2811 * 001000 x1110000101
2812 * rt -----
2813 * rs -----
2814 * rd -----
2816 std::string NMD::ASET(uint64 instruction)
2818 uint64 bit_value = extract_bit_23_22_21(instruction);
2819 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
2820 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2822 std::string bit = IMMEDIATE(copy(bit_value));
2823 std::string s = IMMEDIATE(copy(s_value));
2824 std::string rs = GPR(copy(rs_value));
2826 return img::format("ASET %s, %s(%s)", bit, s, rs);
2833 * 3 2 1
2834 * 10987654321098765432109876543210
2835 * 001000 x1110000101
2836 * rt -----
2837 * rs -----
2838 * rd -----
2840 std::string NMD::BALC_16_(uint64 instruction)
2842 int64 s_value = extr_sil0il10bs1_il1il1bs9Tmsb10(instruction);
2844 std::string s = ADDRESS(encode_s_from_address(s_value), 2);
2846 return img::format("BALC %s", s);
2853 * 3 2 1
2854 * 10987654321098765432109876543210
2855 * 001000 x1110000101
2856 * rt -----
2857 * rs -----
2858 * rd -----
2860 std::string NMD::BALC_32_(uint64 instruction)
2862 int64 s_value = extr_sil0il25bs1_il1il1bs24Tmsb25(instruction);
2864 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2866 return img::format("BALC %s", s);
2873 * 3 2 1
2874 * 10987654321098765432109876543210
2875 * 001000 x1110000101
2876 * rt -----
2877 * rs -----
2878 * rd -----
2880 std::string NMD::BALRSC(uint64 instruction)
2882 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2883 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
2885 std::string rt = GPR(copy(rt_value));
2886 std::string rs = GPR(copy(rs_value));
2888 return img::format("BALRSC %s, %s", rt, rs);
2895 * 3 2 1
2896 * 10987654321098765432109876543210
2897 * 001000 x1110000101
2898 * rt -----
2899 * rs -----
2900 * rd -----
2902 std::string NMD::BBEQZC(uint64 instruction)
2904 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2905 uint64 bit_value = extract_bit_16_15_14_13_12_11(instruction);
2906 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
2908 std::string rt = GPR(copy(rt_value));
2909 std::string bit = IMMEDIATE(copy(bit_value));
2910 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2912 return img::format("BBEQZC %s, %s, %s", rt, bit, s);
2919 * 3 2 1
2920 * 10987654321098765432109876543210
2921 * 001000 x1110000101
2922 * rt -----
2923 * rs -----
2924 * rd -----
2926 std::string NMD::BBNEZC(uint64 instruction)
2928 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
2929 uint64 bit_value = extract_bit_16_15_14_13_12_11(instruction);
2930 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
2932 std::string rt = GPR(copy(rt_value));
2933 std::string bit = IMMEDIATE(copy(bit_value));
2934 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2936 return img::format("BBNEZC %s, %s, %s", rt, bit, s);
2943 * 3 2 1
2944 * 10987654321098765432109876543210
2945 * 001000 x1110000101
2946 * rt -----
2947 * rs -----
2948 * rd -----
2950 std::string NMD::BC_16_(uint64 instruction)
2952 int64 s_value = extr_sil0il10bs1_il1il1bs9Tmsb10(instruction);
2954 std::string s = ADDRESS(encode_s_from_address(s_value), 2);
2956 return img::format("BC %s", s);
2963 * 3 2 1
2964 * 10987654321098765432109876543210
2965 * 001000 x1110000101
2966 * rt -----
2967 * rs -----
2968 * rd -----
2970 std::string NMD::BC_32_(uint64 instruction)
2972 int64 s_value = extr_sil0il25bs1_il1il1bs24Tmsb25(instruction);
2974 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2976 return img::format("BC %s", s);
2983 * 3 2 1
2984 * 10987654321098765432109876543210
2985 * 001000 x1110000101
2986 * rt -----
2987 * rs -----
2988 * rd -----
2990 std::string NMD::BC1EQZC(uint64 instruction)
2992 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
2993 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
2995 std::string ft = FPR(copy(ft_value));
2996 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
2998 return img::format("BC1EQZC %s, %s", ft, s);
3005 * 3 2 1
3006 * 10987654321098765432109876543210
3007 * 001000 x1110000101
3008 * rt -----
3009 * rs -----
3010 * rd -----
3012 std::string NMD::BC1NEZC(uint64 instruction)
3014 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3015 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3017 std::string ft = FPR(copy(ft_value));
3018 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3020 return img::format("BC1NEZC %s, %s", ft, s);
3027 * 3 2 1
3028 * 10987654321098765432109876543210
3029 * 001000 x1110000101
3030 * rt -----
3031 * rs -----
3032 * rd -----
3034 std::string NMD::BC2EQZC(uint64 instruction)
3036 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3037 uint64 ct_value = extract_ct_25_24_23_22_21(instruction);
3039 std::string ct = CPR(copy(ct_value));
3040 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3042 return img::format("BC2EQZC %s, %s", ct, s);
3049 * 3 2 1
3050 * 10987654321098765432109876543210
3051 * 001000 x1110000101
3052 * rt -----
3053 * rs -----
3054 * rd -----
3056 std::string NMD::BC2NEZC(uint64 instruction)
3058 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3059 uint64 ct_value = extract_ct_25_24_23_22_21(instruction);
3061 std::string ct = CPR(copy(ct_value));
3062 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3064 return img::format("BC2NEZC %s, %s", ct, s);
3071 * 3 2 1
3072 * 10987654321098765432109876543210
3073 * 001000 x1110000101
3074 * rt -----
3075 * rs -----
3076 * rd -----
3078 std::string NMD::BEQC_16_(uint64 instruction)
3080 uint64 u_value = extr_uil0il1bs4Fmsb4(instruction);
3081 uint64 rt3_value = extract_rt3_9_8_7(instruction);
3082 uint64 rs3_value = extract_rs3_6_5_4(instruction);
3084 std::string rs3 = GPR(encode_rs3_and_check_rs3_lt_rt3(rs3_value));
3085 std::string rt3 = GPR(encode_gpr3(rt3_value));
3086 std::string u = ADDRESS(encode_u_from_address(u_value), 2);
3088 return img::format("BEQC %s, %s, %s", rs3, rt3, u);
3095 * 3 2 1
3096 * 10987654321098765432109876543210
3097 * 001000 x1110000101
3098 * rt -----
3099 * rs -----
3100 * rd -----
3102 std::string NMD::BEQC_32_(uint64 instruction)
3104 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3105 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3106 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3108 std::string rs = GPR(copy(rs_value));
3109 std::string rt = GPR(copy(rt_value));
3110 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3112 return img::format("BEQC %s, %s, %s", rs, rt, s);
3119 * 3 2 1
3120 * 10987654321098765432109876543210
3121 * 001000 x1110000101
3122 * rt -----
3123 * rs -----
3124 * rd -----
3126 std::string NMD::BEQIC(uint64 instruction)
3128 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3129 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3130 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3132 std::string rt = GPR(copy(rt_value));
3133 std::string u = IMMEDIATE(copy(u_value));
3134 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3136 return img::format("BEQIC %s, %s, %s", rt, u, s);
3143 * 3 2 1
3144 * 10987654321098765432109876543210
3145 * 001000 x1110000101
3146 * rt -----
3147 * rs -----
3148 * rd -----
3150 std::string NMD::BEQZC_16_(uint64 instruction)
3152 int64 s_value = extr_sil0il7bs1_il1il1bs6Tmsb7(instruction);
3153 uint64 rt3_value = extract_rt3_9_8_7(instruction);
3155 std::string rt3 = GPR(encode_gpr3(rt3_value));
3156 std::string s = ADDRESS(encode_s_from_address(s_value), 2);
3158 return img::format("BEQZC %s, %s", rt3, s);
3165 * 3 2 1
3166 * 10987654321098765432109876543210
3167 * 001000 x1110000101
3168 * rt -----
3169 * rs -----
3170 * rd -----
3172 std::string NMD::BGEC(uint64 instruction)
3174 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3175 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3176 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3178 std::string rs = GPR(copy(rs_value));
3179 std::string rt = GPR(copy(rt_value));
3180 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3182 return img::format("BGEC %s, %s, %s", rs, rt, s);
3189 * 3 2 1
3190 * 10987654321098765432109876543210
3191 * 001000 x1110000101
3192 * rt -----
3193 * rs -----
3194 * rd -----
3196 std::string NMD::BGEIC(uint64 instruction)
3198 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3199 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3200 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3202 std::string rt = GPR(copy(rt_value));
3203 std::string u = IMMEDIATE(copy(u_value));
3204 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3206 return img::format("BGEIC %s, %s, %s", rt, u, s);
3213 * 3 2 1
3214 * 10987654321098765432109876543210
3215 * 001000 x1110000101
3216 * rt -----
3217 * rs -----
3218 * rd -----
3220 std::string NMD::BGEIUC(uint64 instruction)
3222 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3223 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3224 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3226 std::string rt = GPR(copy(rt_value));
3227 std::string u = IMMEDIATE(copy(u_value));
3228 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3230 return img::format("BGEIUC %s, %s, %s", rt, u, s);
3237 * 3 2 1
3238 * 10987654321098765432109876543210
3239 * 001000 x1110000101
3240 * rt -----
3241 * rs -----
3242 * rd -----
3244 std::string NMD::BGEUC(uint64 instruction)
3246 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3247 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3248 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3250 std::string rs = GPR(copy(rs_value));
3251 std::string rt = GPR(copy(rt_value));
3252 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3254 return img::format("BGEUC %s, %s, %s", rs, rt, s);
3261 * 3 2 1
3262 * 10987654321098765432109876543210
3263 * 001000 x1110000101
3264 * rt -----
3265 * rs -----
3266 * rd -----
3268 std::string NMD::BLTC(uint64 instruction)
3270 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3271 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3272 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3274 std::string rs = GPR(copy(rs_value));
3275 std::string rt = GPR(copy(rt_value));
3276 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3278 return img::format("BLTC %s, %s, %s", rs, rt, s);
3285 * 3 2 1
3286 * 10987654321098765432109876543210
3287 * 001000 x1110000101
3288 * rt -----
3289 * rs -----
3290 * rd -----
3292 std::string NMD::BLTIC(uint64 instruction)
3294 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3295 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3296 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3298 std::string rt = GPR(copy(rt_value));
3299 std::string u = IMMEDIATE(copy(u_value));
3300 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3302 return img::format("BLTIC %s, %s, %s", rt, u, s);
3309 * 3 2 1
3310 * 10987654321098765432109876543210
3311 * 001000 x1110000101
3312 * rt -----
3313 * rs -----
3314 * rd -----
3316 std::string NMD::BLTIUC(uint64 instruction)
3318 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3319 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3320 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3322 std::string rt = GPR(copy(rt_value));
3323 std::string u = IMMEDIATE(copy(u_value));
3324 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3326 return img::format("BLTIUC %s, %s, %s", rt, u, s);
3333 * 3 2 1
3334 * 10987654321098765432109876543210
3335 * 001000 x1110000101
3336 * rt -----
3337 * rs -----
3338 * rd -----
3340 std::string NMD::BLTUC(uint64 instruction)
3342 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3343 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3344 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3346 std::string rs = GPR(copy(rs_value));
3347 std::string rt = GPR(copy(rt_value));
3348 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3350 return img::format("BLTUC %s, %s, %s", rs, rt, s);
3357 * 3 2 1
3358 * 10987654321098765432109876543210
3359 * 001000 x1110000101
3360 * rt -----
3361 * rs -----
3362 * rd -----
3364 std::string NMD::BNEC_16_(uint64 instruction)
3366 uint64 u_value = extr_uil0il1bs4Fmsb4(instruction);
3367 uint64 rt3_value = extract_rt3_9_8_7(instruction);
3368 uint64 rs3_value = extract_rs3_6_5_4(instruction);
3370 std::string rs3 = GPR(encode_rs3_and_check_rs3_ge_rt3(rs3_value));
3371 std::string rt3 = GPR(encode_gpr3(rt3_value));
3372 std::string u = ADDRESS(encode_u_from_address(u_value), 2);
3374 return img::format("BNEC %s, %s, %s", rs3, rt3, u);
3381 * 3 2 1
3382 * 10987654321098765432109876543210
3383 * 001000 x1110000101
3384 * rt -----
3385 * rs -----
3386 * rd -----
3388 std::string NMD::BNEC_32_(uint64 instruction)
3390 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3391 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3392 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3394 std::string rs = GPR(copy(rs_value));
3395 std::string rt = GPR(copy(rt_value));
3396 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3398 return img::format("BNEC %s, %s, %s", rs, rt, s);
3405 * 3 2 1
3406 * 10987654321098765432109876543210
3407 * 001000 x1110000101
3408 * rt -----
3409 * rs -----
3410 * rd -----
3412 std::string NMD::BNEIC(uint64 instruction)
3414 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3415 int64 s_value = extr_sil0il11bs1_il1il1bs10Tmsb11(instruction);
3416 uint64 u_value = extract_u_17_16_15_14_13_12_11(instruction);
3418 std::string rt = GPR(copy(rt_value));
3419 std::string u = IMMEDIATE(copy(u_value));
3420 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3422 return img::format("BNEIC %s, %s, %s", rt, u, s);
3429 * 3 2 1
3430 * 10987654321098765432109876543210
3431 * 001000 x1110000101
3432 * rt -----
3433 * rs -----
3434 * rd -----
3436 std::string NMD::BNEZC_16_(uint64 instruction)
3438 int64 s_value = extr_sil0il7bs1_il1il1bs6Tmsb7(instruction);
3439 uint64 rt3_value = extract_rt3_9_8_7(instruction);
3441 std::string rt3 = GPR(encode_gpr3(rt3_value));
3442 std::string s = ADDRESS(encode_s_from_address(s_value), 2);
3444 return img::format("BNEZC %s, %s", rt3, s);
3451 * 3 2 1
3452 * 10987654321098765432109876543210
3453 * 001000 x1110000101
3454 * rt -----
3455 * rs -----
3456 * rd -----
3458 std::string NMD::BPOSGE32C(uint64 instruction)
3460 int64 s_value = extr_sil0il14bs1_il1il1bs13Tmsb14(instruction);
3462 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
3464 return img::format("BPOSGE32C %s", s);
3471 * 3 2 1
3472 * 10987654321098765432109876543210
3473 * 001000 x1110000101
3474 * rt -----
3475 * rs -----
3476 * rd -----
3478 std::string NMD::BREAK_16_(uint64 instruction)
3480 uint64 code_value = extract_code_2_1_0(instruction);
3482 std::string code = IMMEDIATE(copy(code_value));
3484 return img::format("BREAK %s", code);
3489 * BREAK code - Break. Cause a Breakpoint exception
3491 * 3 2 1
3492 * 10987654321098765432109876543210
3493 * 001000 x1110000101
3494 * rt -----
3495 * rs -----
3496 * rd -----
3498 std::string NMD::BREAK_32_(uint64 instruction)
3500 uint64 code_value = extract_code_18_to_0(instruction);
3502 std::string code = IMMEDIATE(copy(code_value));
3504 return img::format("BREAK %s", code);
3511 * 3 2 1
3512 * 10987654321098765432109876543210
3513 * 001000 x1110000101
3514 * rt -----
3515 * rs -----
3516 * rd -----
3518 std::string NMD::BRSC(uint64 instruction)
3520 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3522 std::string rs = GPR(copy(rs_value));
3524 return img::format("BRSC %s", rs);
3531 * 3 2 1
3532 * 10987654321098765432109876543210
3533 * 001000 x1110000101
3534 * rt -----
3535 * rs -----
3536 * rd -----
3538 std::string NMD::CACHE(uint64 instruction)
3540 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
3541 uint64 op_value = extract_op_25_24_23_22_21(instruction);
3542 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3544 std::string op = IMMEDIATE(copy(op_value));
3545 std::string s = IMMEDIATE(copy(s_value));
3546 std::string rs = GPR(copy(rs_value));
3548 return img::format("CACHE %s, %s(%s)", op, s, rs);
3555 * 3 2 1
3556 * 10987654321098765432109876543210
3557 * 001000 x1110000101
3558 * rt -----
3559 * rs -----
3560 * rd -----
3562 std::string NMD::CACHEE(uint64 instruction)
3564 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
3565 uint64 op_value = extract_op_25_24_23_22_21(instruction);
3566 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3568 std::string op = IMMEDIATE(copy(op_value));
3569 std::string s = IMMEDIATE(copy(s_value));
3570 std::string rs = GPR(copy(rs_value));
3572 return img::format("CACHEE %s, %s(%s)", op, s, rs);
3579 * 3 2 1
3580 * 10987654321098765432109876543210
3581 * 001000 x1110000101
3582 * rt -----
3583 * rs -----
3584 * rd -----
3586 std::string NMD::CEIL_L_D(uint64 instruction)
3588 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3589 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3591 std::string ft = FPR(copy(ft_value));
3592 std::string fs = FPR(copy(fs_value));
3594 return img::format("CEIL.L.D %s, %s", ft, fs);
3601 * 3 2 1
3602 * 10987654321098765432109876543210
3603 * 001000 x1110000101
3604 * rt -----
3605 * rs -----
3606 * rd -----
3608 std::string NMD::CEIL_L_S(uint64 instruction)
3610 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3611 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3613 std::string ft = FPR(copy(ft_value));
3614 std::string fs = FPR(copy(fs_value));
3616 return img::format("CEIL.L.S %s, %s", ft, fs);
3623 * 3 2 1
3624 * 10987654321098765432109876543210
3625 * 001000 x1110000101
3626 * rt -----
3627 * rs -----
3628 * rd -----
3630 std::string NMD::CEIL_W_D(uint64 instruction)
3632 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3633 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3635 std::string ft = FPR(copy(ft_value));
3636 std::string fs = FPR(copy(fs_value));
3638 return img::format("CEIL.W.D %s, %s", ft, fs);
3645 * 3 2 1
3646 * 10987654321098765432109876543210
3647 * 001000 x1110000101
3648 * rt -----
3649 * rs -----
3650 * rd -----
3652 std::string NMD::CEIL_W_S(uint64 instruction)
3654 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3655 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3657 std::string ft = FPR(copy(ft_value));
3658 std::string fs = FPR(copy(fs_value));
3660 return img::format("CEIL.W.S %s, %s", ft, fs);
3667 * 3 2 1
3668 * 10987654321098765432109876543210
3669 * 001000 x1110000101
3670 * rt -----
3671 * rs -----
3672 * rd -----
3674 std::string NMD::CFC1(uint64 instruction)
3676 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
3677 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3679 std::string rt = GPR(copy(rt_value));
3680 std::string cs = CPR(copy(cs_value));
3682 return img::format("CFC1 %s, %s", rt, cs);
3689 * 3 2 1
3690 * 10987654321098765432109876543210
3691 * 001000 x1110000101
3692 * rt -----
3693 * rs -----
3694 * rd -----
3696 std::string NMD::CFC2(uint64 instruction)
3698 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
3699 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3701 std::string rt = GPR(copy(rt_value));
3702 std::string cs = CPR(copy(cs_value));
3704 return img::format("CFC2 %s, %s", rt, cs);
3711 * 3 2 1
3712 * 10987654321098765432109876543210
3713 * 001000 x1110000101
3714 * rt -----
3715 * rs -----
3716 * rd -----
3718 std::string NMD::CLASS_D(uint64 instruction)
3720 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3721 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3723 std::string ft = FPR(copy(ft_value));
3724 std::string fs = FPR(copy(fs_value));
3726 return img::format("CLASS.D %s, %s", ft, fs);
3733 * 3 2 1
3734 * 10987654321098765432109876543210
3735 * 001000 x1110000101
3736 * rt -----
3737 * rs -----
3738 * rd -----
3740 std::string NMD::CLASS_S(uint64 instruction)
3742 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3743 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3745 std::string ft = FPR(copy(ft_value));
3746 std::string fs = FPR(copy(fs_value));
3748 return img::format("CLASS.S %s, %s", ft, fs);
3755 * 3 2 1
3756 * 10987654321098765432109876543210
3757 * 001000 x1110000101
3758 * rt -----
3759 * rs -----
3760 * rd -----
3762 std::string NMD::CLO(uint64 instruction)
3764 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3765 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3767 std::string rt = GPR(copy(rt_value));
3768 std::string rs = GPR(copy(rs_value));
3770 return img::format("CLO %s, %s", rt, rs);
3777 * 3 2 1
3778 * 10987654321098765432109876543210
3779 * 001000 x1110000101
3780 * rt -----
3781 * rs -----
3782 * rd -----
3784 std::string NMD::CLZ(uint64 instruction)
3786 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3787 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3789 std::string rt = GPR(copy(rt_value));
3790 std::string rs = GPR(copy(rs_value));
3792 return img::format("CLZ %s, %s", rt, rs);
3799 * 3 2 1
3800 * 10987654321098765432109876543210
3801 * 001000 x1110000101
3802 * rt -----
3803 * rs -----
3804 * rd -----
3806 std::string NMD::CMP_AF_D(uint64 instruction)
3808 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3809 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3810 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3812 std::string fd = FPR(copy(fd_value));
3813 std::string fs = FPR(copy(fs_value));
3814 std::string ft = FPR(copy(ft_value));
3816 return img::format("CMP.AF.D %s, %s, %s", fd, fs, ft);
3823 * 3 2 1
3824 * 10987654321098765432109876543210
3825 * 001000 x1110000101
3826 * rt -----
3827 * rs -----
3828 * rd -----
3830 std::string NMD::CMP_AF_S(uint64 instruction)
3832 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3833 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3834 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3836 std::string fd = FPR(copy(fd_value));
3837 std::string fs = FPR(copy(fs_value));
3838 std::string ft = FPR(copy(ft_value));
3840 return img::format("CMP.AF.S %s, %s, %s", fd, fs, ft);
3847 * 3 2 1
3848 * 10987654321098765432109876543210
3849 * 001000 x1110000101
3850 * rt -----
3851 * rs -----
3852 * rd -----
3854 std::string NMD::CMP_EQ_D(uint64 instruction)
3856 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3857 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3858 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3860 std::string fd = FPR(copy(fd_value));
3861 std::string fs = FPR(copy(fs_value));
3862 std::string ft = FPR(copy(ft_value));
3864 return img::format("CMP.EQ.D %s, %s, %s", fd, fs, ft);
3871 * 3 2 1
3872 * 10987654321098765432109876543210
3873 * 001000 x1110000101
3874 * rt -----
3875 * rs -----
3876 * rd -----
3878 std::string NMD::CMP_EQ_PH(uint64 instruction)
3880 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3881 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3883 std::string rs = GPR(copy(rs_value));
3884 std::string rt = GPR(copy(rt_value));
3886 return img::format("CMP.EQ.PH %s, %s", rs, rt);
3893 * 3 2 1
3894 * 10987654321098765432109876543210
3895 * 001000 x1110000101
3896 * rt -----
3897 * rs -----
3898 * rd -----
3900 std::string NMD::CMP_EQ_S(uint64 instruction)
3902 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3903 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3904 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3906 std::string fd = FPR(copy(fd_value));
3907 std::string fs = FPR(copy(fs_value));
3908 std::string ft = FPR(copy(ft_value));
3910 return img::format("CMP.EQ.S %s, %s, %s", fd, fs, ft);
3917 * 3 2 1
3918 * 10987654321098765432109876543210
3919 * 001000 x1110000101
3920 * rt -----
3921 * rs -----
3922 * rd -----
3924 std::string NMD::CMP_LE_D(uint64 instruction)
3926 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3927 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3928 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3930 std::string fd = FPR(copy(fd_value));
3931 std::string fs = FPR(copy(fs_value));
3932 std::string ft = FPR(copy(ft_value));
3934 return img::format("CMP.LE.D %s, %s, %s", fd, fs, ft);
3941 * 3 2 1
3942 * 10987654321098765432109876543210
3943 * 001000 x1110000101
3944 * rt -----
3945 * rs -----
3946 * rd -----
3948 std::string NMD::CMP_LE_PH(uint64 instruction)
3950 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
3951 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
3953 std::string rs = GPR(copy(rs_value));
3954 std::string rt = GPR(copy(rt_value));
3956 return img::format("CMP.LE.PH %s, %s", rs, rt);
3963 * 3 2 1
3964 * 10987654321098765432109876543210
3965 * 001000 x1110000101
3966 * rt -----
3967 * rs -----
3968 * rd -----
3970 std::string NMD::CMP_LE_S(uint64 instruction)
3972 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3973 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3974 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
3976 std::string fd = FPR(copy(fd_value));
3977 std::string fs = FPR(copy(fs_value));
3978 std::string ft = FPR(copy(ft_value));
3980 return img::format("CMP.LE.S %s, %s, %s", fd, fs, ft);
3987 * 3 2 1
3988 * 10987654321098765432109876543210
3989 * 001000 x1110000101
3990 * rt -----
3991 * rs -----
3992 * rd -----
3994 std::string NMD::CMP_LT_D(uint64 instruction)
3996 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
3997 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
3998 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4000 std::string fd = FPR(copy(fd_value));
4001 std::string fs = FPR(copy(fs_value));
4002 std::string ft = FPR(copy(ft_value));
4004 return img::format("CMP.LT.D %s, %s, %s", fd, fs, ft);
4011 * 3 2 1
4012 * 10987654321098765432109876543210
4013 * 001000 x1110000101
4014 * rt -----
4015 * rs -----
4016 * rd -----
4018 std::string NMD::CMP_LT_PH(uint64 instruction)
4020 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
4021 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
4023 std::string rs = GPR(copy(rs_value));
4024 std::string rt = GPR(copy(rt_value));
4026 return img::format("CMP.LT.PH %s, %s", rs, rt);
4033 * 3 2 1
4034 * 10987654321098765432109876543210
4035 * 001000 x1110000101
4036 * rt -----
4037 * rs -----
4038 * rd -----
4040 std::string NMD::CMP_LT_S(uint64 instruction)
4042 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4043 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4044 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4046 std::string fd = FPR(copy(fd_value));
4047 std::string fs = FPR(copy(fs_value));
4048 std::string ft = FPR(copy(ft_value));
4050 return img::format("CMP.LT.S %s, %s, %s", fd, fs, ft);
4057 * 3 2 1
4058 * 10987654321098765432109876543210
4059 * 001000 x1110000101
4060 * rt -----
4061 * rs -----
4062 * rd -----
4064 std::string NMD::CMP_NE_D(uint64 instruction)
4066 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4067 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4068 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4070 std::string fd = FPR(copy(fd_value));
4071 std::string fs = FPR(copy(fs_value));
4072 std::string ft = FPR(copy(ft_value));
4074 return img::format("CMP.NE.D %s, %s, %s", fd, fs, ft);
4081 * 3 2 1
4082 * 10987654321098765432109876543210
4083 * 001000 x1110000101
4084 * rt -----
4085 * rs -----
4086 * rd -----
4088 std::string NMD::CMP_NE_S(uint64 instruction)
4090 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4091 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4092 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4094 std::string fd = FPR(copy(fd_value));
4095 std::string fs = FPR(copy(fs_value));
4096 std::string ft = FPR(copy(ft_value));
4098 return img::format("CMP.NE.S %s, %s, %s", fd, fs, ft);
4105 * 3 2 1
4106 * 10987654321098765432109876543210
4107 * 001000 x1110000101
4108 * rt -----
4109 * rs -----
4110 * rd -----
4112 std::string NMD::CMP_OR_D(uint64 instruction)
4114 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4115 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4116 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4118 std::string fd = FPR(copy(fd_value));
4119 std::string fs = FPR(copy(fs_value));
4120 std::string ft = FPR(copy(ft_value));
4122 return img::format("CMP.OR.D %s, %s, %s", fd, fs, ft);
4129 * 3 2 1
4130 * 10987654321098765432109876543210
4131 * 001000 x1110000101
4132 * rt -----
4133 * rs -----
4134 * rd -----
4136 std::string NMD::CMP_OR_S(uint64 instruction)
4138 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4139 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4140 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4142 std::string fd = FPR(copy(fd_value));
4143 std::string fs = FPR(copy(fs_value));
4144 std::string ft = FPR(copy(ft_value));
4146 return img::format("CMP.OR.S %s, %s, %s", fd, fs, ft);
4153 * 3 2 1
4154 * 10987654321098765432109876543210
4155 * 001000 x1110000101
4156 * rt -----
4157 * rs -----
4158 * rd -----
4160 std::string NMD::CMP_SAF_D(uint64 instruction)
4162 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4163 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4164 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4166 std::string fd = FPR(copy(fd_value));
4167 std::string fs = FPR(copy(fs_value));
4168 std::string ft = FPR(copy(ft_value));
4170 return img::format("CMP.SAF.D %s, %s, %s", fd, fs, ft);
4177 * 3 2 1
4178 * 10987654321098765432109876543210
4179 * 001000 x1110000101
4180 * rt -----
4181 * rs -----
4182 * rd -----
4184 std::string NMD::CMP_SAF_S(uint64 instruction)
4186 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4187 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4188 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4190 std::string fd = FPR(copy(fd_value));
4191 std::string fs = FPR(copy(fs_value));
4192 std::string ft = FPR(copy(ft_value));
4194 return img::format("CMP.SAF.S %s, %s, %s", fd, fs, ft);
4201 * 3 2 1
4202 * 10987654321098765432109876543210
4203 * 001000 x1110000101
4204 * rt -----
4205 * rs -----
4206 * rd -----
4208 std::string NMD::CMP_SEQ_D(uint64 instruction)
4210 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4211 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4212 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4214 std::string fd = FPR(copy(fd_value));
4215 std::string fs = FPR(copy(fs_value));
4216 std::string ft = FPR(copy(ft_value));
4218 return img::format("CMP.SEQ.D %s, %s, %s", fd, fs, ft);
4225 * 3 2 1
4226 * 10987654321098765432109876543210
4227 * 001000 x1110000101
4228 * rt -----
4229 * rs -----
4230 * rd -----
4232 std::string NMD::CMP_SEQ_S(uint64 instruction)
4234 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4235 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4236 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4238 std::string fd = FPR(copy(fd_value));
4239 std::string fs = FPR(copy(fs_value));
4240 std::string ft = FPR(copy(ft_value));
4242 return img::format("CMP.SEQ.S %s, %s, %s", fd, fs, ft);
4249 * 3 2 1
4250 * 10987654321098765432109876543210
4251 * 001000 x1110000101
4252 * rt -----
4253 * rs -----
4254 * rd -----
4256 std::string NMD::CMP_SLE_D(uint64 instruction)
4258 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4259 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4260 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4262 std::string fd = FPR(copy(fd_value));
4263 std::string fs = FPR(copy(fs_value));
4264 std::string ft = FPR(copy(ft_value));
4266 return img::format("CMP.SLE.D %s, %s, %s", fd, fs, ft);
4273 * 3 2 1
4274 * 10987654321098765432109876543210
4275 * 001000 x1110000101
4276 * rt -----
4277 * rs -----
4278 * rd -----
4280 std::string NMD::CMP_SLE_S(uint64 instruction)
4282 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4283 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4284 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4286 std::string fd = FPR(copy(fd_value));
4287 std::string fs = FPR(copy(fs_value));
4288 std::string ft = FPR(copy(ft_value));
4290 return img::format("CMP.SLE.S %s, %s, %s", fd, fs, ft);
4297 * 3 2 1
4298 * 10987654321098765432109876543210
4299 * 001000 x1110000101
4300 * rt -----
4301 * rs -----
4302 * rd -----
4304 std::string NMD::CMP_SLT_D(uint64 instruction)
4306 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4307 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4308 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4310 std::string fd = FPR(copy(fd_value));
4311 std::string fs = FPR(copy(fs_value));
4312 std::string ft = FPR(copy(ft_value));
4314 return img::format("CMP.SLT.D %s, %s, %s", fd, fs, ft);
4321 * 3 2 1
4322 * 10987654321098765432109876543210
4323 * 001000 x1110000101
4324 * rt -----
4325 * rs -----
4326 * rd -----
4328 std::string NMD::CMP_SLT_S(uint64 instruction)
4330 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4331 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4332 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4334 std::string fd = FPR(copy(fd_value));
4335 std::string fs = FPR(copy(fs_value));
4336 std::string ft = FPR(copy(ft_value));
4338 return img::format("CMP.SLT.S %s, %s, %s", fd, fs, ft);
4345 * 3 2 1
4346 * 10987654321098765432109876543210
4347 * 001000 x1110000101
4348 * rt -----
4349 * rs -----
4350 * rd -----
4352 std::string NMD::CMP_SNE_D(uint64 instruction)
4354 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4355 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4356 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4358 std::string fd = FPR(copy(fd_value));
4359 std::string fs = FPR(copy(fs_value));
4360 std::string ft = FPR(copy(ft_value));
4362 return img::format("CMP.SNE.D %s, %s, %s", fd, fs, ft);
4369 * 3 2 1
4370 * 10987654321098765432109876543210
4371 * 001000 x1110000101
4372 * rt -----
4373 * rs -----
4374 * rd -----
4376 std::string NMD::CMP_SNE_S(uint64 instruction)
4378 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4379 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4380 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4382 std::string fd = FPR(copy(fd_value));
4383 std::string fs = FPR(copy(fs_value));
4384 std::string ft = FPR(copy(ft_value));
4386 return img::format("CMP.SNE.S %s, %s, %s", fd, fs, ft);
4393 * 3 2 1
4394 * 10987654321098765432109876543210
4395 * 001000 x1110000101
4396 * rt -----
4397 * rs -----
4398 * rd -----
4400 std::string NMD::CMP_SOR_D(uint64 instruction)
4402 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4403 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4404 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4406 std::string fd = FPR(copy(fd_value));
4407 std::string fs = FPR(copy(fs_value));
4408 std::string ft = FPR(copy(ft_value));
4410 return img::format("CMP.SOR.D %s, %s, %s", fd, fs, ft);
4417 * 3 2 1
4418 * 10987654321098765432109876543210
4419 * 001000 x1110000101
4420 * rt -----
4421 * rs -----
4422 * rd -----
4424 std::string NMD::CMP_SOR_S(uint64 instruction)
4426 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4427 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4428 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4430 std::string fd = FPR(copy(fd_value));
4431 std::string fs = FPR(copy(fs_value));
4432 std::string ft = FPR(copy(ft_value));
4434 return img::format("CMP.SOR.S %s, %s, %s", fd, fs, ft);
4441 * 3 2 1
4442 * 10987654321098765432109876543210
4443 * 001000 x1110000101
4444 * rt -----
4445 * rs -----
4446 * rd -----
4448 std::string NMD::CMP_SUEQ_D(uint64 instruction)
4450 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4451 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4452 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4454 std::string fd = FPR(copy(fd_value));
4455 std::string fs = FPR(copy(fs_value));
4456 std::string ft = FPR(copy(ft_value));
4458 return img::format("CMP.SUEQ.D %s, %s, %s", fd, fs, ft);
4465 * 3 2 1
4466 * 10987654321098765432109876543210
4467 * 001000 x1110000101
4468 * rt -----
4469 * rs -----
4470 * rd -----
4472 std::string NMD::CMP_SUEQ_S(uint64 instruction)
4474 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4475 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4476 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4478 std::string fd = FPR(copy(fd_value));
4479 std::string fs = FPR(copy(fs_value));
4480 std::string ft = FPR(copy(ft_value));
4482 return img::format("CMP.SUEQ.S %s, %s, %s", fd, fs, ft);
4489 * 3 2 1
4490 * 10987654321098765432109876543210
4491 * 001000 x1110000101
4492 * rt -----
4493 * rs -----
4494 * rd -----
4496 std::string NMD::CMP_SULE_D(uint64 instruction)
4498 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4499 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4500 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4502 std::string fd = FPR(copy(fd_value));
4503 std::string fs = FPR(copy(fs_value));
4504 std::string ft = FPR(copy(ft_value));
4506 return img::format("CMP.SULE.D %s, %s, %s", fd, fs, ft);
4513 * 3 2 1
4514 * 10987654321098765432109876543210
4515 * 001000 x1110000101
4516 * rt -----
4517 * rs -----
4518 * rd -----
4520 std::string NMD::CMP_SULE_S(uint64 instruction)
4522 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4523 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4524 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4526 std::string fd = FPR(copy(fd_value));
4527 std::string fs = FPR(copy(fs_value));
4528 std::string ft = FPR(copy(ft_value));
4530 return img::format("CMP.SULE.S %s, %s, %s", fd, fs, ft);
4537 * 3 2 1
4538 * 10987654321098765432109876543210
4539 * 001000 x1110000101
4540 * rt -----
4541 * rs -----
4542 * rd -----
4544 std::string NMD::CMP_SULT_D(uint64 instruction)
4546 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4547 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4548 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4550 std::string fd = FPR(copy(fd_value));
4551 std::string fs = FPR(copy(fs_value));
4552 std::string ft = FPR(copy(ft_value));
4554 return img::format("CMP.SULT.D %s, %s, %s", fd, fs, ft);
4561 * 3 2 1
4562 * 10987654321098765432109876543210
4563 * 001000 x1110000101
4564 * rt -----
4565 * rs -----
4566 * rd -----
4568 std::string NMD::CMP_SULT_S(uint64 instruction)
4570 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4571 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4572 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4574 std::string fd = FPR(copy(fd_value));
4575 std::string fs = FPR(copy(fs_value));
4576 std::string ft = FPR(copy(ft_value));
4578 return img::format("CMP.SULT.S %s, %s, %s", fd, fs, ft);
4585 * 3 2 1
4586 * 10987654321098765432109876543210
4587 * 001000 x1110000101
4588 * rt -----
4589 * rs -----
4590 * rd -----
4592 std::string NMD::CMP_SUN_D(uint64 instruction)
4594 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4595 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4596 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4598 std::string fd = FPR(copy(fd_value));
4599 std::string fs = FPR(copy(fs_value));
4600 std::string ft = FPR(copy(ft_value));
4602 return img::format("CMP.SUN.D %s, %s, %s", fd, fs, ft);
4609 * 3 2 1
4610 * 10987654321098765432109876543210
4611 * 001000 x1110000101
4612 * rt -----
4613 * rs -----
4614 * rd -----
4616 std::string NMD::CMP_SUNE_D(uint64 instruction)
4618 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4619 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4620 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4622 std::string fd = FPR(copy(fd_value));
4623 std::string fs = FPR(copy(fs_value));
4624 std::string ft = FPR(copy(ft_value));
4626 return img::format("CMP.SUNE.D %s, %s, %s", fd, fs, ft);
4633 * 3 2 1
4634 * 10987654321098765432109876543210
4635 * 001000 x1110000101
4636 * rt -----
4637 * rs -----
4638 * rd -----
4640 std::string NMD::CMP_SUNE_S(uint64 instruction)
4642 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4643 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4644 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4646 std::string fd = FPR(copy(fd_value));
4647 std::string fs = FPR(copy(fs_value));
4648 std::string ft = FPR(copy(ft_value));
4650 return img::format("CMP.SUNE.S %s, %s, %s", fd, fs, ft);
4657 * 3 2 1
4658 * 10987654321098765432109876543210
4659 * 001000 x1110000101
4660 * rt -----
4661 * rs -----
4662 * rd -----
4664 std::string NMD::CMP_SUN_S(uint64 instruction)
4666 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4667 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4668 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4670 std::string fd = FPR(copy(fd_value));
4671 std::string fs = FPR(copy(fs_value));
4672 std::string ft = FPR(copy(ft_value));
4674 return img::format("CMP.SUN.S %s, %s, %s", fd, fs, ft);
4681 * 3 2 1
4682 * 10987654321098765432109876543210
4683 * 001000 x1110000101
4684 * rt -----
4685 * rs -----
4686 * rd -----
4688 std::string NMD::CMP_UEQ_D(uint64 instruction)
4690 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4691 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4692 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4694 std::string fd = FPR(copy(fd_value));
4695 std::string fs = FPR(copy(fs_value));
4696 std::string ft = FPR(copy(ft_value));
4698 return img::format("CMP.UEQ.D %s, %s, %s", fd, fs, ft);
4705 * 3 2 1
4706 * 10987654321098765432109876543210
4707 * 001000 x1110000101
4708 * rt -----
4709 * rs -----
4710 * rd -----
4712 std::string NMD::CMP_UEQ_S(uint64 instruction)
4714 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4715 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4716 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4718 std::string fd = FPR(copy(fd_value));
4719 std::string fs = FPR(copy(fs_value));
4720 std::string ft = FPR(copy(ft_value));
4722 return img::format("CMP.UEQ.S %s, %s, %s", fd, fs, ft);
4729 * 3 2 1
4730 * 10987654321098765432109876543210
4731 * 001000 x1110000101
4732 * rt -----
4733 * rs -----
4734 * rd -----
4736 std::string NMD::CMP_ULE_D(uint64 instruction)
4738 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4739 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4740 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4742 std::string fd = FPR(copy(fd_value));
4743 std::string fs = FPR(copy(fs_value));
4744 std::string ft = FPR(copy(ft_value));
4746 return img::format("CMP.ULE.D %s, %s, %s", fd, fs, ft);
4753 * 3 2 1
4754 * 10987654321098765432109876543210
4755 * 001000 x1110000101
4756 * rt -----
4757 * rs -----
4758 * rd -----
4760 std::string NMD::CMP_ULE_S(uint64 instruction)
4762 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4763 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4764 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4766 std::string fd = FPR(copy(fd_value));
4767 std::string fs = FPR(copy(fs_value));
4768 std::string ft = FPR(copy(ft_value));
4770 return img::format("CMP.ULE.S %s, %s, %s", fd, fs, ft);
4777 * 3 2 1
4778 * 10987654321098765432109876543210
4779 * 001000 x1110000101
4780 * rt -----
4781 * rs -----
4782 * rd -----
4784 std::string NMD::CMP_ULT_D(uint64 instruction)
4786 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4787 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4788 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4790 std::string fd = FPR(copy(fd_value));
4791 std::string fs = FPR(copy(fs_value));
4792 std::string ft = FPR(copy(ft_value));
4794 return img::format("CMP.ULT.D %s, %s, %s", fd, fs, ft);
4801 * 3 2 1
4802 * 10987654321098765432109876543210
4803 * 001000 x1110000101
4804 * rt -----
4805 * rs -----
4806 * rd -----
4808 std::string NMD::CMP_ULT_S(uint64 instruction)
4810 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4811 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4812 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4814 std::string fd = FPR(copy(fd_value));
4815 std::string fs = FPR(copy(fs_value));
4816 std::string ft = FPR(copy(ft_value));
4818 return img::format("CMP.ULT.S %s, %s, %s", fd, fs, ft);
4825 * 3 2 1
4826 * 10987654321098765432109876543210
4827 * 001000 x1110000101
4828 * rt -----
4829 * rs -----
4830 * rd -----
4832 std::string NMD::CMP_UN_D(uint64 instruction)
4834 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4835 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4836 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4838 std::string fd = FPR(copy(fd_value));
4839 std::string fs = FPR(copy(fs_value));
4840 std::string ft = FPR(copy(ft_value));
4842 return img::format("CMP.UN.D %s, %s, %s", fd, fs, ft);
4849 * 3 2 1
4850 * 10987654321098765432109876543210
4851 * 001000 x1110000101
4852 * rt -----
4853 * rs -----
4854 * rd -----
4856 std::string NMD::CMP_UNE_D(uint64 instruction)
4858 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4859 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4860 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4862 std::string fd = FPR(copy(fd_value));
4863 std::string fs = FPR(copy(fs_value));
4864 std::string ft = FPR(copy(ft_value));
4866 return img::format("CMP.UNE.D %s, %s, %s", fd, fs, ft);
4873 * 3 2 1
4874 * 10987654321098765432109876543210
4875 * 001000 x1110000101
4876 * rt -----
4877 * rs -----
4878 * rd -----
4880 std::string NMD::CMP_UNE_S(uint64 instruction)
4882 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4883 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4884 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4886 std::string fd = FPR(copy(fd_value));
4887 std::string fs = FPR(copy(fs_value));
4888 std::string ft = FPR(copy(ft_value));
4890 return img::format("CMP.UNE.S %s, %s, %s", fd, fs, ft);
4897 * 3 2 1
4898 * 10987654321098765432109876543210
4899 * 001000 x1110000101
4900 * rt -----
4901 * rs -----
4902 * rd -----
4904 std::string NMD::CMP_UN_S(uint64 instruction)
4906 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
4907 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
4908 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
4910 std::string fd = FPR(copy(fd_value));
4911 std::string fs = FPR(copy(fs_value));
4912 std::string ft = FPR(copy(ft_value));
4914 return img::format("CMP.UN.S %s, %s, %s", fd, fs, ft);
4921 * 3 2 1
4922 * 10987654321098765432109876543210
4923 * 001000 x1110000101
4924 * rt -----
4925 * rs -----
4926 * rd -----
4928 std::string NMD::CMPGDU_EQ_QB(uint64 instruction)
4930 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
4931 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
4932 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
4934 std::string rd = GPR(copy(rd_value));
4935 std::string rs = GPR(copy(rs_value));
4936 std::string rt = GPR(copy(rt_value));
4938 return img::format("CMPGDU.EQ.QB %s, %s, %s", rd, rs, rt);
4945 * 3 2 1
4946 * 10987654321098765432109876543210
4947 * 001000 x1110000101
4948 * rt -----
4949 * rs -----
4950 * rd -----
4952 std::string NMD::CMPGDU_LE_QB(uint64 instruction)
4954 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
4955 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
4956 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
4958 std::string rd = GPR(copy(rd_value));
4959 std::string rs = GPR(copy(rs_value));
4960 std::string rt = GPR(copy(rt_value));
4962 return img::format("CMPGDU.LE.QB %s, %s, %s", rd, rs, rt);
4969 * 3 2 1
4970 * 10987654321098765432109876543210
4971 * 001000 x1110000101
4972 * rt -----
4973 * rs -----
4974 * rd -----
4976 std::string NMD::CMPGDU_LT_QB(uint64 instruction)
4978 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
4979 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
4980 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
4982 std::string rd = GPR(copy(rd_value));
4983 std::string rs = GPR(copy(rs_value));
4984 std::string rt = GPR(copy(rt_value));
4986 return img::format("CMPGDU.LT.QB %s, %s, %s", rd, rs, rt);
4993 * 3 2 1
4994 * 10987654321098765432109876543210
4995 * 001000 x1110000101
4996 * rt -----
4997 * rs -----
4998 * rd -----
5000 std::string NMD::CMPGU_EQ_QB(uint64 instruction)
5002 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5003 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5004 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5006 std::string rd = GPR(copy(rd_value));
5007 std::string rs = GPR(copy(rs_value));
5008 std::string rt = GPR(copy(rt_value));
5010 return img::format("CMPGU.EQ.QB %s, %s, %s", rd, rs, rt);
5017 * 3 2 1
5018 * 10987654321098765432109876543210
5019 * 001000 x1110000101
5020 * rt -----
5021 * rs -----
5022 * rd -----
5024 std::string NMD::CMPGU_LE_QB(uint64 instruction)
5026 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5027 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5028 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5030 std::string rd = GPR(copy(rd_value));
5031 std::string rs = GPR(copy(rs_value));
5032 std::string rt = GPR(copy(rt_value));
5034 return img::format("CMPGU.LE.QB %s, %s, %s", rd, rs, rt);
5041 * 3 2 1
5042 * 10987654321098765432109876543210
5043 * 001000 x1110000101
5044 * rt -----
5045 * rs -----
5046 * rd -----
5048 std::string NMD::CMPGU_LT_QB(uint64 instruction)
5050 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5051 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5052 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5054 std::string rd = GPR(copy(rd_value));
5055 std::string rs = GPR(copy(rs_value));
5056 std::string rt = GPR(copy(rt_value));
5058 return img::format("CMPGU.LT.QB %s, %s, %s", rd, rs, rt);
5065 * 3 2 1
5066 * 10987654321098765432109876543210
5067 * 001000 x1110000101
5068 * rt -----
5069 * rs -----
5070 * rd -----
5072 std::string NMD::CMPU_EQ_QB(uint64 instruction)
5074 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5075 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5077 std::string rs = GPR(copy(rs_value));
5078 std::string rt = GPR(copy(rt_value));
5080 return img::format("CMPU.EQ.QB %s, %s", rs, rt);
5087 * 3 2 1
5088 * 10987654321098765432109876543210
5089 * 001000 x1110000101
5090 * rt -----
5091 * rs -----
5092 * rd -----
5094 std::string NMD::CMPU_LE_QB(uint64 instruction)
5096 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5097 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5099 std::string rs = GPR(copy(rs_value));
5100 std::string rt = GPR(copy(rt_value));
5102 return img::format("CMPU.LE.QB %s, %s", rs, rt);
5109 * 3 2 1
5110 * 10987654321098765432109876543210
5111 * 001000 x1110000101
5112 * rt -----
5113 * rs -----
5114 * rd -----
5116 std::string NMD::CMPU_LT_QB(uint64 instruction)
5118 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5119 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5121 std::string rs = GPR(copy(rs_value));
5122 std::string rt = GPR(copy(rt_value));
5124 return img::format("CMPU.LT.QB %s, %s", rs, rt);
5131 * 3 2 1
5132 * 10987654321098765432109876543210
5133 * 001000 x1110000101
5134 * rt -----
5135 * rs -----
5136 * rd -----
5138 std::string NMD::COP2_1(uint64 instruction)
5140 uint64 cofun_value = extract_cofun_25_24_23(instruction);
5142 std::string cofun = IMMEDIATE(copy(cofun_value));
5144 return img::format("COP2_1 %s", cofun);
5151 * 3 2 1
5152 * 10987654321098765432109876543210
5153 * 001000 x1110000101
5154 * rt -----
5155 * rs -----
5156 * rd -----
5158 std::string NMD::CTC1(uint64 instruction)
5160 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
5161 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5163 std::string rt = GPR(copy(rt_value));
5164 std::string cs = CPR(copy(cs_value));
5166 return img::format("CTC1 %s, %s", rt, cs);
5173 * 3 2 1
5174 * 10987654321098765432109876543210
5175 * 001000 x1110000101
5176 * rt -----
5177 * rs -----
5178 * rd -----
5180 std::string NMD::CTC2(uint64 instruction)
5182 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
5183 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5185 std::string rt = GPR(copy(rt_value));
5186 std::string cs = CPR(copy(cs_value));
5188 return img::format("CTC2 %s, %s", rt, cs);
5195 * 3 2 1
5196 * 10987654321098765432109876543210
5197 * 001000 x1110000101
5198 * rt -----
5199 * rs -----
5200 * rd -----
5202 std::string NMD::CVT_D_L(uint64 instruction)
5204 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5205 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5207 std::string ft = FPR(copy(ft_value));
5208 std::string fs = FPR(copy(fs_value));
5210 return img::format("CVT.D.L %s, %s", ft, fs);
5217 * 3 2 1
5218 * 10987654321098765432109876543210
5219 * 001000 x1110000101
5220 * rt -----
5221 * rs -----
5222 * rd -----
5224 std::string NMD::CVT_D_S(uint64 instruction)
5226 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5227 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5229 std::string ft = FPR(copy(ft_value));
5230 std::string fs = FPR(copy(fs_value));
5232 return img::format("CVT.D.S %s, %s", ft, fs);
5239 * 3 2 1
5240 * 10987654321098765432109876543210
5241 * 001000 x1110000101
5242 * rt -----
5243 * rs -----
5244 * rd -----
5246 std::string NMD::CVT_D_W(uint64 instruction)
5248 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5249 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5251 std::string ft = FPR(copy(ft_value));
5252 std::string fs = FPR(copy(fs_value));
5254 return img::format("CVT.D.W %s, %s", ft, fs);
5261 * 3 2 1
5262 * 10987654321098765432109876543210
5263 * 001000 x1110000101
5264 * rt -----
5265 * rs -----
5266 * rd -----
5268 std::string NMD::CVT_L_D(uint64 instruction)
5270 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5271 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5273 std::string ft = FPR(copy(ft_value));
5274 std::string fs = FPR(copy(fs_value));
5276 return img::format("CVT.L.D %s, %s", ft, fs);
5283 * 3 2 1
5284 * 10987654321098765432109876543210
5285 * 001000 x1110000101
5286 * rt -----
5287 * rs -----
5288 * rd -----
5290 std::string NMD::CVT_L_S(uint64 instruction)
5292 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5293 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5295 std::string ft = FPR(copy(ft_value));
5296 std::string fs = FPR(copy(fs_value));
5298 return img::format("CVT.L.S %s, %s", ft, fs);
5305 * 3 2 1
5306 * 10987654321098765432109876543210
5307 * 001000 x1110000101
5308 * rt -----
5309 * rs -----
5310 * rd -----
5312 std::string NMD::CVT_S_D(uint64 instruction)
5314 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5315 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5317 std::string ft = FPR(copy(ft_value));
5318 std::string fs = FPR(copy(fs_value));
5320 return img::format("CVT.S.D %s, %s", ft, fs);
5327 * 3 2 1
5328 * 10987654321098765432109876543210
5329 * 001000 x1110000101
5330 * rt -----
5331 * rs -----
5332 * rd -----
5334 std::string NMD::CVT_S_L(uint64 instruction)
5336 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5337 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5339 std::string ft = FPR(copy(ft_value));
5340 std::string fs = FPR(copy(fs_value));
5342 return img::format("CVT.S.L %s, %s", ft, fs);
5349 * 3 2 1
5350 * 10987654321098765432109876543210
5351 * 001000 x1110000101
5352 * rt -----
5353 * rs -----
5354 * rd -----
5356 std::string NMD::CVT_S_PL(uint64 instruction)
5358 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5359 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5361 std::string ft = FPR(copy(ft_value));
5362 std::string fs = FPR(copy(fs_value));
5364 return img::format("CVT.S.PL %s, %s", ft, fs);
5371 * 3 2 1
5372 * 10987654321098765432109876543210
5373 * 001000 x1110000101
5374 * rt -----
5375 * rs -----
5376 * rd -----
5378 std::string NMD::CVT_S_PU(uint64 instruction)
5380 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5381 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5383 std::string ft = FPR(copy(ft_value));
5384 std::string fs = FPR(copy(fs_value));
5386 return img::format("CVT.S.PU %s, %s", ft, fs);
5393 * 3 2 1
5394 * 10987654321098765432109876543210
5395 * 001000 x1110000101
5396 * rt -----
5397 * rs -----
5398 * rd -----
5400 std::string NMD::CVT_S_W(uint64 instruction)
5402 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5403 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5405 std::string ft = FPR(copy(ft_value));
5406 std::string fs = FPR(copy(fs_value));
5408 return img::format("CVT.S.W %s, %s", ft, fs);
5415 * 3 2 1
5416 * 10987654321098765432109876543210
5417 * 001000 x1110000101
5418 * rt -----
5419 * rs -----
5420 * rd -----
5422 std::string NMD::CVT_W_D(uint64 instruction)
5424 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5425 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5427 std::string ft = FPR(copy(ft_value));
5428 std::string fs = FPR(copy(fs_value));
5430 return img::format("CVT.W.D %s, %s", ft, fs);
5437 * 3 2 1
5438 * 10987654321098765432109876543210
5439 * 001000 x1110000101
5440 * rt -----
5441 * rs -----
5442 * rd -----
5444 std::string NMD::CVT_W_S(uint64 instruction)
5446 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5447 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5449 std::string ft = FPR(copy(ft_value));
5450 std::string fs = FPR(copy(fs_value));
5452 return img::format("CVT.W.S %s, %s", ft, fs);
5459 * 3 2 1
5460 * 10987654321098765432109876543210
5461 * 001000 x1110000101
5462 * rt -----
5463 * rs -----
5464 * rd -----
5466 std::string NMD::DADDIU_48_(uint64 instruction)
5468 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
5469 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
5471 std::string rt = GPR(copy(rt_value));
5472 std::string s = IMMEDIATE(copy(s_value));
5474 return img::format("DADDIU %s, %s", rt, s);
5481 * 3 2 1
5482 * 10987654321098765432109876543210
5483 * 001000 x1110000101
5484 * rt -----
5485 * rs -----
5486 * rd -----
5488 std::string NMD::DADDIU_NEG_(uint64 instruction)
5490 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5491 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
5492 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5494 std::string rt = GPR(copy(rt_value));
5495 std::string rs = GPR(copy(rs_value));
5496 std::string u = IMMEDIATE(neg_copy(u_value));
5498 return img::format("DADDIU %s, %s, %s", rt, rs, u);
5505 * 3 2 1
5506 * 10987654321098765432109876543210
5507 * 001000 x1110000101
5508 * rt -----
5509 * rs -----
5510 * rd -----
5512 std::string NMD::DADDIU_U12_(uint64 instruction)
5514 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5515 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
5516 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5518 std::string rt = GPR(copy(rt_value));
5519 std::string rs = GPR(copy(rs_value));
5520 std::string u = IMMEDIATE(copy(u_value));
5522 return img::format("DADDIU %s, %s, %s", rt, rs, u);
5529 * 3 2 1
5530 * 10987654321098765432109876543210
5531 * 001000 x1110000101
5532 * rt -----
5533 * rs -----
5534 * rd -----
5536 std::string NMD::DADD(uint64 instruction)
5538 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5539 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5540 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5542 std::string rd = GPR(copy(rd_value));
5543 std::string rs = GPR(copy(rs_value));
5544 std::string rt = GPR(copy(rt_value));
5546 return img::format("DADD %s, %s, %s", rd, rs, rt);
5553 * 3 2 1
5554 * 10987654321098765432109876543210
5555 * 001000 x1110000101
5556 * rt -----
5557 * rs -----
5558 * rd -----
5560 std::string NMD::DADDU(uint64 instruction)
5562 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5563 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5564 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5566 std::string rd = GPR(copy(rd_value));
5567 std::string rs = GPR(copy(rs_value));
5568 std::string rt = GPR(copy(rt_value));
5570 return img::format("DADDU %s, %s, %s", rd, rs, rt);
5577 * 3 2 1
5578 * 10987654321098765432109876543210
5579 * 001000 x1110000101
5580 * rt -----
5581 * rs -----
5582 * rd -----
5584 std::string NMD::DCLO(uint64 instruction)
5586 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5587 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5589 std::string rt = GPR(copy(rt_value));
5590 std::string rs = GPR(copy(rs_value));
5592 return img::format("DCLO %s, %s", rt, rs);
5599 * 3 2 1
5600 * 10987654321098765432109876543210
5601 * 001000 x1110000101
5602 * rt -----
5603 * rs -----
5604 * rd -----
5606 std::string NMD::DCLZ(uint64 instruction)
5608 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5609 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5611 std::string rt = GPR(copy(rt_value));
5612 std::string rs = GPR(copy(rs_value));
5614 return img::format("DCLZ %s, %s", rt, rs);
5621 * 3 2 1
5622 * 10987654321098765432109876543210
5623 * 001000 x1110000101
5624 * rt -----
5625 * rs -----
5626 * rd -----
5628 std::string NMD::DDIV(uint64 instruction)
5630 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5631 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5632 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5634 std::string rd = GPR(copy(rd_value));
5635 std::string rs = GPR(copy(rs_value));
5636 std::string rt = GPR(copy(rt_value));
5638 return img::format("DDIV %s, %s, %s", rd, rs, rt);
5645 * 3 2 1
5646 * 10987654321098765432109876543210
5647 * 001000 x1110000101
5648 * rt -----
5649 * rs -----
5650 * rd -----
5652 std::string NMD::DDIVU(uint64 instruction)
5654 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5655 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5656 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5658 std::string rd = GPR(copy(rd_value));
5659 std::string rs = GPR(copy(rs_value));
5660 std::string rt = GPR(copy(rt_value));
5662 return img::format("DDIVU %s, %s, %s", rd, rs, rt);
5669 * 3 2 1
5670 * 10987654321098765432109876543210
5671 * 001000 x1110000101
5672 * rt -----
5673 * rs -----
5674 * rd -----
5676 std::string NMD::DERET(uint64 instruction)
5678 (void)instruction;
5680 return "DERET ";
5687 * 3 2 1
5688 * 10987654321098765432109876543210
5689 * 001000 x1110000101
5690 * rt -----
5691 * rs -----
5692 * rd -----
5694 std::string NMD::DEXTM(uint64 instruction)
5696 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5697 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5698 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5699 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5701 std::string rt = GPR(copy(rt_value));
5702 std::string rs = GPR(copy(rs_value));
5703 std::string lsb = IMMEDIATE(copy(lsb_value));
5704 std::string msbd = IMMEDIATE(encode_msbd_from_size(msbd_value));
5706 return img::format("DEXTM %s, %s, %s, %s", rt, rs, lsb, msbd);
5713 * 3 2 1
5714 * 10987654321098765432109876543210
5715 * 001000 x1110000101
5716 * rt -----
5717 * rs -----
5718 * rd -----
5720 std::string NMD::DEXT(uint64 instruction)
5722 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5723 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5724 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5725 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5727 std::string rt = GPR(copy(rt_value));
5728 std::string rs = GPR(copy(rs_value));
5729 std::string lsb = IMMEDIATE(copy(lsb_value));
5730 std::string msbd = IMMEDIATE(encode_msbd_from_size(msbd_value));
5732 return img::format("DEXT %s, %s, %s, %s", rt, rs, lsb, msbd);
5739 * 3 2 1
5740 * 10987654321098765432109876543210
5741 * 001000 x1110000101
5742 * rt -----
5743 * rs -----
5744 * rd -----
5746 std::string NMD::DEXTU(uint64 instruction)
5748 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5749 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5750 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5751 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5753 std::string rt = GPR(copy(rt_value));
5754 std::string rs = GPR(copy(rs_value));
5755 std::string lsb = IMMEDIATE(copy(lsb_value));
5756 std::string msbd = IMMEDIATE(encode_msbd_from_size(msbd_value));
5758 return img::format("DEXTU %s, %s, %s, %s", rt, rs, lsb, msbd);
5765 * 3 2 1
5766 * 10987654321098765432109876543210
5767 * 001000 x1110000101
5768 * rt -----
5769 * rs -----
5770 * rd -----
5772 std::string NMD::DINSM(uint64 instruction)
5774 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5775 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5776 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5777 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5779 std::string rt = GPR(copy(rt_value));
5780 std::string rs = GPR(copy(rs_value));
5781 std::string pos = IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value));
5782 std::string size = IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value));
5783 /* !!!!!!!!!! - no conversion function */
5785 return img::format("DINSM %s, %s, %s, %s", rt, rs, pos, size);
5786 /* hand edited */
5793 * 3 2 1
5794 * 10987654321098765432109876543210
5795 * 001000 x1110000101
5796 * rt -----
5797 * rs -----
5798 * rd -----
5800 std::string NMD::DINS(uint64 instruction)
5802 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5803 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5804 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5805 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5807 std::string rt = GPR(copy(rt_value));
5808 std::string rs = GPR(copy(rs_value));
5809 std::string pos = IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value));
5810 std::string size = IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value));
5811 /* !!!!!!!!!! - no conversion function */
5813 return img::format("DINS %s, %s, %s, %s", rt, rs, pos, size);
5814 /* hand edited */
5821 * 3 2 1
5822 * 10987654321098765432109876543210
5823 * 001000 x1110000101
5824 * rt -----
5825 * rs -----
5826 * rd -----
5828 std::string NMD::DINSU(uint64 instruction)
5830 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5831 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
5832 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
5833 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5835 std::string rt = GPR(copy(rt_value));
5836 std::string rs = GPR(copy(rs_value));
5837 std::string pos = IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value));
5838 std::string size = IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value));
5839 /* !!!!!!!!!! - no conversion function */
5841 return img::format("DINSU %s, %s, %s, %s", rt, rs, pos, size);
5842 /* hand edited */
5849 * 3 2 1
5850 * 10987654321098765432109876543210
5851 * 001000 x1110000101
5852 * rt -----
5853 * rs -----
5854 * rd -----
5856 std::string NMD::DI(uint64 instruction)
5858 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5860 std::string rt = GPR(copy(rt_value));
5862 return img::format("DI %s", rt);
5869 * 3 2 1
5870 * 10987654321098765432109876543210
5871 * 001000 x1110000101
5872 * rt -----
5873 * rs -----
5874 * rd -----
5876 std::string NMD::DIV(uint64 instruction)
5878 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5879 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5880 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5882 std::string rd = GPR(copy(rd_value));
5883 std::string rs = GPR(copy(rs_value));
5884 std::string rt = GPR(copy(rt_value));
5886 return img::format("DIV %s, %s, %s", rd, rs, rt);
5893 * 3 2 1
5894 * 10987654321098765432109876543210
5895 * 001000 x1110000101
5896 * rt -----
5897 * rs -----
5898 * rd -----
5900 std::string NMD::DIV_D(uint64 instruction)
5902 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5903 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5904 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
5906 std::string fd = FPR(copy(fd_value));
5907 std::string fs = FPR(copy(fs_value));
5908 std::string ft = FPR(copy(ft_value));
5910 return img::format("DIV.D %s, %s, %s", fd, fs, ft);
5917 * 3 2 1
5918 * 10987654321098765432109876543210
5919 * 001000 x1110000101
5920 * rt -----
5921 * rs -----
5922 * rd -----
5924 std::string NMD::DIV_S(uint64 instruction)
5926 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
5927 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
5928 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
5930 std::string fd = FPR(copy(fd_value));
5931 std::string fs = FPR(copy(fs_value));
5932 std::string ft = FPR(copy(ft_value));
5934 return img::format("DIV.S %s, %s, %s", fd, fs, ft);
5941 * 3 2 1
5942 * 10987654321098765432109876543210
5943 * 001000 x1110000101
5944 * rt -----
5945 * rs -----
5946 * rd -----
5948 std::string NMD::DIVU(uint64 instruction)
5950 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5951 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5952 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5954 std::string rd = GPR(copy(rd_value));
5955 std::string rs = GPR(copy(rs_value));
5956 std::string rt = GPR(copy(rt_value));
5958 return img::format("DIVU %s, %s, %s", rd, rs, rt);
5965 * 3 2 1
5966 * 10987654321098765432109876543210
5967 * 001000 x1110000101
5968 * rt -----
5969 * rs -----
5970 * rd -----
5972 std::string NMD::DLSA(uint64 instruction)
5974 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
5975 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
5976 uint64 u2_value = extract_u2_10_9(instruction);
5977 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
5979 std::string rd = GPR(copy(rd_value));
5980 std::string rs = GPR(copy(rs_value));
5981 std::string rt = GPR(copy(rt_value));
5982 std::string u2 = IMMEDIATE(copy(u2_value));
5984 return img::format("DLSA %s, %s, %s, %s", rd, rs, rt, u2);
5991 * 3 2 1
5992 * 10987654321098765432109876543210
5993 * 001000 x1110000101
5994 * rt -----
5995 * rs -----
5996 * rd -----
5998 std::string NMD::DLUI_48_(uint64 instruction)
6000 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
6001 uint64 u_value = extr_uil0il32bs32Fmsb63(instruction);
6003 std::string rt = GPR(copy(rt_value));
6004 std::string u = IMMEDIATE(copy(u_value));
6006 return img::format("DLUI %s, %s", rt, u);
6013 * 3 2 1
6014 * 10987654321098765432109876543210
6015 * 001000 x1110000101
6016 * rt -----
6017 * rs -----
6018 * rd -----
6020 std::string NMD::DMFC0(uint64 instruction)
6022 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6023 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
6024 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
6026 std::string rt = GPR(copy(rt_value));
6027 std::string c0s = CPR(copy(c0s_value));
6028 std::string sel = IMMEDIATE(copy(sel_value));
6030 return img::format("DMFC0 %s, %s, %s", rt, c0s, sel);
6037 * 3 2 1
6038 * 10987654321098765432109876543210
6039 * 001000 x1110000101
6040 * rt -----
6041 * rs -----
6042 * rd -----
6044 std::string NMD::DMFC1(uint64 instruction)
6046 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6047 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
6049 std::string rt = GPR(copy(rt_value));
6050 std::string fs = FPR(copy(fs_value));
6052 return img::format("DMFC1 %s, %s", rt, fs);
6059 * 3 2 1
6060 * 10987654321098765432109876543210
6061 * 001000 x1110000101
6062 * rt -----
6063 * rs -----
6064 * rd -----
6066 std::string NMD::DMFC2(uint64 instruction)
6068 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
6069 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6071 std::string rt = GPR(copy(rt_value));
6072 std::string cs = CPR(copy(cs_value));
6074 return img::format("DMFC2 %s, %s", rt, cs);
6081 * 3 2 1
6082 * 10987654321098765432109876543210
6083 * 001000 x1110000101
6084 * rt -----
6085 * rs -----
6086 * rd -----
6088 std::string NMD::DMFGC0(uint64 instruction)
6090 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6091 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
6092 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
6094 std::string rt = GPR(copy(rt_value));
6095 std::string c0s = CPR(copy(c0s_value));
6096 std::string sel = IMMEDIATE(copy(sel_value));
6098 return img::format("DMFGC0 %s, %s, %s", rt, c0s, sel);
6105 * 3 2 1
6106 * 10987654321098765432109876543210
6107 * 001000 x1110000101
6108 * rt -----
6109 * rs -----
6110 * rd -----
6112 std::string NMD::DMOD(uint64 instruction)
6114 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6115 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6116 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6118 std::string rd = GPR(copy(rd_value));
6119 std::string rs = GPR(copy(rs_value));
6120 std::string rt = GPR(copy(rt_value));
6122 return img::format("DMOD %s, %s, %s", rd, rs, rt);
6129 * 3 2 1
6130 * 10987654321098765432109876543210
6131 * 001000 x1110000101
6132 * rt -----
6133 * rs -----
6134 * rd -----
6136 std::string NMD::DMODU(uint64 instruction)
6138 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6139 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6140 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6142 std::string rd = GPR(copy(rd_value));
6143 std::string rs = GPR(copy(rs_value));
6144 std::string rt = GPR(copy(rt_value));
6146 return img::format("DMODU %s, %s, %s", rd, rs, rt);
6153 * 3 2 1
6154 * 10987654321098765432109876543210
6155 * 001000 x1110000101
6156 * rt -----
6157 * rs -----
6158 * rd -----
6160 std::string NMD::DMTC0(uint64 instruction)
6162 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6163 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
6164 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
6166 std::string rt = GPR(copy(rt_value));
6167 std::string c0s = CPR(copy(c0s_value));
6168 std::string sel = IMMEDIATE(copy(sel_value));
6170 return img::format("DMTC0 %s, %s, %s", rt, c0s, sel);
6177 * 3 2 1
6178 * 10987654321098765432109876543210
6179 * 001000 x1110000101
6180 * rt -----
6181 * rs -----
6182 * rd -----
6184 std::string NMD::DMTC1(uint64 instruction)
6186 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6187 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
6189 std::string rt = GPR(copy(rt_value));
6190 std::string fs = FPR(copy(fs_value));
6192 return img::format("DMTC1 %s, %s", rt, fs);
6199 * 3 2 1
6200 * 10987654321098765432109876543210
6201 * 001000 x1110000101
6202 * rt -----
6203 * rs -----
6204 * rd -----
6206 std::string NMD::DMTC2(uint64 instruction)
6208 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
6209 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6211 std::string rt = GPR(copy(rt_value));
6212 std::string cs = CPR(copy(cs_value));
6214 return img::format("DMTC2 %s, %s", rt, cs);
6221 * 3 2 1
6222 * 10987654321098765432109876543210
6223 * 001000 x1110000101
6224 * rt -----
6225 * rs -----
6226 * rd -----
6228 std::string NMD::DMTGC0(uint64 instruction)
6230 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6231 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
6232 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
6234 std::string rt = GPR(copy(rt_value));
6235 std::string c0s = CPR(copy(c0s_value));
6236 std::string sel = IMMEDIATE(copy(sel_value));
6238 return img::format("DMTGC0 %s, %s, %s", rt, c0s, sel);
6245 * 3 2 1
6246 * 10987654321098765432109876543210
6247 * 001000 x1110000101
6248 * rt -----
6249 * rs -----
6250 * rd -----
6252 std::string NMD::DMT(uint64 instruction)
6254 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6256 std::string rt = GPR(copy(rt_value));
6258 return img::format("DMT %s", rt);
6265 * 3 2 1
6266 * 10987654321098765432109876543210
6267 * 001000 x1110000101
6268 * rt -----
6269 * rs -----
6270 * rd -----
6272 std::string NMD::DMUH(uint64 instruction)
6274 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6275 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6276 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6278 std::string rd = GPR(copy(rd_value));
6279 std::string rs = GPR(copy(rs_value));
6280 std::string rt = GPR(copy(rt_value));
6282 return img::format("DMUH %s, %s, %s", rd, rs, rt);
6289 * 3 2 1
6290 * 10987654321098765432109876543210
6291 * 001000 x1110000101
6292 * rt -----
6293 * rs -----
6294 * rd -----
6296 std::string NMD::DMUHU(uint64 instruction)
6298 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6299 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6300 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6302 std::string rd = GPR(copy(rd_value));
6303 std::string rs = GPR(copy(rs_value));
6304 std::string rt = GPR(copy(rt_value));
6306 return img::format("DMUHU %s, %s, %s", rd, rs, rt);
6313 * 3 2 1
6314 * 10987654321098765432109876543210
6315 * 001000 x1110000101
6316 * rt -----
6317 * rs -----
6318 * rd -----
6320 std::string NMD::DMUL(uint64 instruction)
6322 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6323 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6324 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6326 std::string rd = GPR(copy(rd_value));
6327 std::string rs = GPR(copy(rs_value));
6328 std::string rt = GPR(copy(rt_value));
6330 return img::format("DMUL %s, %s, %s", rd, rs, rt);
6337 * 3 2 1
6338 * 10987654321098765432109876543210
6339 * 001000 x1110000101
6340 * rt -----
6341 * rs -----
6342 * rd -----
6344 std::string NMD::DMULU(uint64 instruction)
6346 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6347 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6348 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6350 std::string rd = GPR(copy(rd_value));
6351 std::string rs = GPR(copy(rs_value));
6352 std::string rt = GPR(copy(rt_value));
6354 return img::format("DMULU %s, %s, %s", rd, rs, rt);
6361 * 3 2 1
6362 * 10987654321098765432109876543210
6363 * 001000 x1110000101
6364 * rt -----
6365 * rs -----
6366 * rd -----
6368 std::string NMD::DPA_W_PH(uint64 instruction)
6370 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6371 uint64 ac_value = extract_ac_13_12(instruction);
6372 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6374 std::string ac = AC(copy(ac_value));
6375 std::string rs = GPR(copy(rs_value));
6376 std::string rt = GPR(copy(rt_value));
6378 return img::format("DPA.W.PH %s, %s, %s", ac, rs, rt);
6385 * 3 2 1
6386 * 10987654321098765432109876543210
6387 * 001000 x1110000101
6388 * rt -----
6389 * rs -----
6390 * rd -----
6392 std::string NMD::DPAQ_SA_L_W(uint64 instruction)
6394 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6395 uint64 ac_value = extract_ac_13_12(instruction);
6396 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6398 std::string ac = AC(copy(ac_value));
6399 std::string rs = GPR(copy(rs_value));
6400 std::string rt = GPR(copy(rt_value));
6402 return img::format("DPAQ_SA.L.W %s, %s, %s", ac, rs, rt);
6409 * 3 2 1
6410 * 10987654321098765432109876543210
6411 * 001000 x1110000101
6412 * rt -----
6413 * rs -----
6414 * rd -----
6416 std::string NMD::DPAQ_S_W_PH(uint64 instruction)
6418 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6419 uint64 ac_value = extract_ac_13_12(instruction);
6420 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6422 std::string ac = AC(copy(ac_value));
6423 std::string rs = GPR(copy(rs_value));
6424 std::string rt = GPR(copy(rt_value));
6426 return img::format("DPAQ_S.W.PH %s, %s, %s", ac, rs, rt);
6433 * 3 2 1
6434 * 10987654321098765432109876543210
6435 * 001000 x1110000101
6436 * rt -----
6437 * rs -----
6438 * rd -----
6440 std::string NMD::DPAQX_SA_W_PH(uint64 instruction)
6442 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6443 uint64 ac_value = extract_ac_13_12(instruction);
6444 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6446 std::string ac = AC(copy(ac_value));
6447 std::string rs = GPR(copy(rs_value));
6448 std::string rt = GPR(copy(rt_value));
6450 return img::format("DPAQX_SA.W.PH %s, %s, %s", ac, rs, rt);
6457 * 3 2 1
6458 * 10987654321098765432109876543210
6459 * 001000 x1110000101
6460 * rt -----
6461 * rs -----
6462 * rd -----
6464 std::string NMD::DPAQX_S_W_PH(uint64 instruction)
6466 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6467 uint64 ac_value = extract_ac_13_12(instruction);
6468 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6470 std::string ac = AC(copy(ac_value));
6471 std::string rs = GPR(copy(rs_value));
6472 std::string rt = GPR(copy(rt_value));
6474 return img::format("DPAQX_S.W.PH %s, %s, %s", ac, rs, rt);
6481 * 3 2 1
6482 * 10987654321098765432109876543210
6483 * 001000 x1110000101
6484 * rt -----
6485 * rs -----
6486 * rd -----
6488 std::string NMD::DPAU_H_QBL(uint64 instruction)
6490 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6491 uint64 ac_value = extract_ac_13_12(instruction);
6492 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6494 std::string ac = AC(copy(ac_value));
6495 std::string rs = GPR(copy(rs_value));
6496 std::string rt = GPR(copy(rt_value));
6498 return img::format("DPAU.H.QBL %s, %s, %s", ac, rs, rt);
6505 * 3 2 1
6506 * 10987654321098765432109876543210
6507 * 001000 x1110000101
6508 * rt -----
6509 * rs -----
6510 * rd -----
6512 std::string NMD::DPAU_H_QBR(uint64 instruction)
6514 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6515 uint64 ac_value = extract_ac_13_12(instruction);
6516 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6518 std::string ac = AC(copy(ac_value));
6519 std::string rs = GPR(copy(rs_value));
6520 std::string rt = GPR(copy(rt_value));
6522 return img::format("DPAU.H.QBR %s, %s, %s", ac, rs, rt);
6529 * 3 2 1
6530 * 10987654321098765432109876543210
6531 * 001000 x1110000101
6532 * rt -----
6533 * rs -----
6534 * rd -----
6536 std::string NMD::DPAX_W_PH(uint64 instruction)
6538 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6539 uint64 ac_value = extract_ac_13_12(instruction);
6540 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6542 std::string ac = AC(copy(ac_value));
6543 std::string rs = GPR(copy(rs_value));
6544 std::string rt = GPR(copy(rt_value));
6546 return img::format("DPAX.W.PH %s, %s, %s", ac, rs, rt);
6553 * 3 2 1
6554 * 10987654321098765432109876543210
6555 * 001000 x1110000101
6556 * rt -----
6557 * rs -----
6558 * rd -----
6560 std::string NMD::DPS_W_PH(uint64 instruction)
6562 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6563 uint64 ac_value = extract_ac_13_12(instruction);
6564 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6566 std::string ac = AC(copy(ac_value));
6567 std::string rs = GPR(copy(rs_value));
6568 std::string rt = GPR(copy(rt_value));
6570 return img::format("DPS.W.PH %s, %s, %s", ac, rs, rt);
6577 * 3 2 1
6578 * 10987654321098765432109876543210
6579 * 001000 x1110000101
6580 * rt -----
6581 * rs -----
6582 * rd -----
6584 std::string NMD::DPSQ_SA_L_W(uint64 instruction)
6586 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6587 uint64 ac_value = extract_ac_13_12(instruction);
6588 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6590 std::string ac = AC(copy(ac_value));
6591 std::string rs = GPR(copy(rs_value));
6592 std::string rt = GPR(copy(rt_value));
6594 return img::format("DPSQ_SA.L.W %s, %s, %s", ac, rs, rt);
6601 * 3 2 1
6602 * 10987654321098765432109876543210
6603 * 001000 x1110000101
6604 * rt -----
6605 * rs -----
6606 * rd -----
6608 std::string NMD::DPSQ_S_W_PH(uint64 instruction)
6610 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6611 uint64 ac_value = extract_ac_13_12(instruction);
6612 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6614 std::string ac = AC(copy(ac_value));
6615 std::string rs = GPR(copy(rs_value));
6616 std::string rt = GPR(copy(rt_value));
6618 return img::format("DPSQ_S.W.PH %s, %s, %s", ac, rs, rt);
6625 * 3 2 1
6626 * 10987654321098765432109876543210
6627 * 001000 x1110000101
6628 * rt -----
6629 * rs -----
6630 * rd -----
6632 std::string NMD::DPSQX_SA_W_PH(uint64 instruction)
6634 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6635 uint64 ac_value = extract_ac_13_12(instruction);
6636 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6638 std::string ac = AC(copy(ac_value));
6639 std::string rs = GPR(copy(rs_value));
6640 std::string rt = GPR(copy(rt_value));
6642 return img::format("DPSQX_SA.W.PH %s, %s, %s", ac, rs, rt);
6649 * 3 2 1
6650 * 10987654321098765432109876543210
6651 * 001000 x1110000101
6652 * rt -----
6653 * rs -----
6654 * rd -----
6656 std::string NMD::DPSQX_S_W_PH(uint64 instruction)
6658 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6659 uint64 ac_value = extract_ac_13_12(instruction);
6660 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6662 std::string ac = AC(copy(ac_value));
6663 std::string rs = GPR(copy(rs_value));
6664 std::string rt = GPR(copy(rt_value));
6666 return img::format("DPSQX_S.W.PH %s, %s, %s", ac, rs, rt);
6673 * 3 2 1
6674 * 10987654321098765432109876543210
6675 * 001000 x1110000101
6676 * rt -----
6677 * rs -----
6678 * rd -----
6680 std::string NMD::DPSU_H_QBL(uint64 instruction)
6682 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6683 uint64 ac_value = extract_ac_13_12(instruction);
6684 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6686 std::string ac = AC(copy(ac_value));
6687 std::string rs = GPR(copy(rs_value));
6688 std::string rt = GPR(copy(rt_value));
6690 return img::format("DPSU.H.QBL %s, %s, %s", ac, rs, rt);
6697 * 3 2 1
6698 * 10987654321098765432109876543210
6699 * 001000 x1110000101
6700 * rt -----
6701 * rs -----
6702 * rd -----
6704 std::string NMD::DPSU_H_QBR(uint64 instruction)
6706 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6707 uint64 ac_value = extract_ac_13_12(instruction);
6708 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6710 std::string ac = AC(copy(ac_value));
6711 std::string rs = GPR(copy(rs_value));
6712 std::string rt = GPR(copy(rt_value));
6714 return img::format("DPSU.H.QBR %s, %s, %s", ac, rs, rt);
6721 * 3 2 1
6722 * 10987654321098765432109876543210
6723 * 001000 x1110000101
6724 * rt -----
6725 * rs -----
6726 * rd -----
6728 std::string NMD::DPSX_W_PH(uint64 instruction)
6730 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6731 uint64 ac_value = extract_ac_13_12(instruction);
6732 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6734 std::string ac = AC(copy(ac_value));
6735 std::string rs = GPR(copy(rs_value));
6736 std::string rt = GPR(copy(rt_value));
6738 return img::format("DPSX.W.PH %s, %s, %s", ac, rs, rt);
6743 * DROTR -
6745 * 3 2 1
6746 * 10987654321098765432109876543210
6747 * 001000 x1110000101
6748 * rt -----
6749 * rs -----
6750 * rd -----
6752 std::string NMD::DROTR(uint64 instruction)
6754 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6755 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6756 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6758 std::string rt = GPR(copy(rt_value));
6759 std::string rs = GPR(copy(rs_value));
6760 std::string shift = IMMEDIATE(copy(shift_value));
6762 return img::format("DROTR %s, %s, %s", rt, rs, shift);
6767 * DROTR[32] -
6769 * 3 2 1
6770 * 10987654321098765432109876543210
6771 * 10o000 1100xxx0110
6772 * rt -----
6773 * rs -----
6774 * shift -----
6776 std::string NMD::DROTR32(uint64 instruction)
6778 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6779 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6780 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6782 std::string rt = GPR(copy(rt_value));
6783 std::string rs = GPR(copy(rs_value));
6784 std::string shift = IMMEDIATE(copy(shift_value));
6786 return img::format("DROTR32 %s, %s, %s", rt, rs, shift);
6793 * 3 2 1
6794 * 10987654321098765432109876543210
6795 * 001000 x1110000101
6796 * rt -----
6797 * rs -----
6798 * rd -----
6800 std::string NMD::DROTRV(uint64 instruction)
6802 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6803 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6804 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6806 std::string rd = GPR(copy(rd_value));
6807 std::string rs = GPR(copy(rs_value));
6808 std::string rt = GPR(copy(rt_value));
6810 return img::format("DROTRV %s, %s, %s", rd, rs, rt);
6817 * 3 2 1
6818 * 10987654321098765432109876543210
6819 * 001000 x1110000101
6820 * rt -----
6821 * rs -----
6822 * rd -----
6824 std::string NMD::DROTX(uint64 instruction)
6826 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6827 uint64 shift_value = extract_shift_5_4_3_2_1_0(instruction);
6828 uint64 shiftx_value = extract_shiftx_11_10_9_8_7_6(instruction);
6829 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6831 std::string rt = GPR(copy(rt_value));
6832 std::string rs = GPR(copy(rs_value));
6833 std::string shift = IMMEDIATE(copy(shift_value));
6834 std::string shiftx = IMMEDIATE(copy(shiftx_value));
6836 return img::format("DROTX %s, %s, %s, %s", rt, rs, shift, shiftx);
6841 * DSLL -
6843 * 3 2 1
6844 * 10987654321098765432109876543210
6845 * 10o000 1100xxx0000
6846 * rt -----
6847 * rs -----
6848 * shift -----
6850 std::string NMD::DSLL(uint64 instruction)
6852 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6853 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6854 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6856 std::string rt = GPR(copy(rt_value));
6857 std::string rs = GPR(copy(rs_value));
6858 std::string shift = IMMEDIATE(copy(shift_value));
6860 return img::format("DSLL %s, %s, %s", rt, rs, shift);
6865 * DSLL[32] -
6867 * 3 2 1
6868 * 10987654321098765432109876543210
6869 * 10o000 1100xxx0000
6870 * rt -----
6871 * rs -----
6872 * shift -----
6874 std::string NMD::DSLL32(uint64 instruction)
6876 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6877 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6878 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6880 std::string rt = GPR(copy(rt_value));
6881 std::string rs = GPR(copy(rs_value));
6882 std::string shift = IMMEDIATE(copy(shift_value));
6884 return img::format("DSLL32 %s, %s, %s", rt, rs, shift);
6891 * 3 2 1
6892 * 10987654321098765432109876543210
6893 * 001000 x1110000101
6894 * rt -----
6895 * rs -----
6896 * rd -----
6898 std::string NMD::DSLLV(uint64 instruction)
6900 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6901 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6902 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6904 std::string rd = GPR(copy(rd_value));
6905 std::string rs = GPR(copy(rs_value));
6906 std::string rt = GPR(copy(rt_value));
6908 return img::format("DSLLV %s, %s, %s", rd, rs, rt);
6913 * DSRA -
6915 * 3 2 1
6916 * 10987654321098765432109876543210
6917 * 10o000 1100xxx0100
6918 * rt -----
6919 * rs -----
6920 * shift -----
6922 std::string NMD::DSRA(uint64 instruction)
6924 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6925 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6926 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6928 std::string rt = GPR(copy(rt_value));
6929 std::string rs = GPR(copy(rs_value));
6930 std::string shift = IMMEDIATE(copy(shift_value));
6932 return img::format("DSRA %s, %s, %s", rt, rs, shift);
6937 * DSRA[32] -
6939 * 3 2 1
6940 * 10987654321098765432109876543210
6941 * 10o000 1100xxx0100
6942 * rt -----
6943 * rs -----
6944 * shift -----
6946 std::string NMD::DSRA32(uint64 instruction)
6948 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6949 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6950 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6952 std::string rt = GPR(copy(rt_value));
6953 std::string rs = GPR(copy(rs_value));
6954 std::string shift = IMMEDIATE(copy(shift_value));
6956 return img::format("DSRA32 %s, %s, %s", rt, rs, shift);
6963 * 3 2 1
6964 * 10987654321098765432109876543210
6965 * 001000 x1110000101
6966 * rt -----
6967 * rs -----
6968 * rd -----
6970 std::string NMD::DSRAV(uint64 instruction)
6972 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6973 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
6974 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
6976 std::string rd = GPR(copy(rd_value));
6977 std::string rs = GPR(copy(rs_value));
6978 std::string rt = GPR(copy(rt_value));
6980 return img::format("DSRAV %s, %s, %s", rd, rs, rt);
6985 * DSRL -
6987 * 3 2 1
6988 * 10987654321098765432109876543210
6989 * 10o000 1100xxx0100
6990 * rt -----
6991 * rs -----
6992 * shift -----
6994 std::string NMD::DSRL(uint64 instruction)
6996 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
6997 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
6998 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7000 std::string rt = GPR(copy(rt_value));
7001 std::string rs = GPR(copy(rs_value));
7002 std::string shift = IMMEDIATE(copy(shift_value));
7004 return img::format("DSRL %s, %s, %s", rt, rs, shift);
7009 * DSRL[32] -
7011 * 3 2 1
7012 * 10987654321098765432109876543210
7013 * 10o000 1100xxx0010
7014 * rt -----
7015 * rs -----
7016 * shift -----
7018 std::string NMD::DSRL32(uint64 instruction)
7020 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7021 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
7022 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7024 std::string rt = GPR(copy(rt_value));
7025 std::string rs = GPR(copy(rs_value));
7026 std::string shift = IMMEDIATE(copy(shift_value));
7028 return img::format("DSRL32 %s, %s, %s", rt, rs, shift);
7035 * 3 2 1
7036 * 10987654321098765432109876543210
7037 * 001000 x1110000101
7038 * rt -----
7039 * rs -----
7040 * rd -----
7042 std::string NMD::DSRLV(uint64 instruction)
7044 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7045 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7046 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7048 std::string rd = GPR(copy(rd_value));
7049 std::string rs = GPR(copy(rs_value));
7050 std::string rt = GPR(copy(rt_value));
7052 return img::format("DSRLV %s, %s, %s", rd, rs, rt);
7059 * 3 2 1
7060 * 10987654321098765432109876543210
7061 * 001000 x1110000101
7062 * rt -----
7063 * rs -----
7064 * rd -----
7066 std::string NMD::DSUB(uint64 instruction)
7068 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7069 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7070 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7072 std::string rd = GPR(copy(rd_value));
7073 std::string rs = GPR(copy(rs_value));
7074 std::string rt = GPR(copy(rt_value));
7076 return img::format("DSUB %s, %s, %s", rd, rs, rt);
7083 * 3 2 1
7084 * 10987654321098765432109876543210
7085 * 001000 x1110000101
7086 * rt -----
7087 * rs -----
7088 * rd -----
7090 std::string NMD::DSUBU(uint64 instruction)
7092 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7093 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7094 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7096 std::string rd = GPR(copy(rd_value));
7097 std::string rs = GPR(copy(rs_value));
7098 std::string rt = GPR(copy(rt_value));
7100 return img::format("DSUBU %s, %s, %s", rd, rs, rt);
7107 * 3 2 1
7108 * 10987654321098765432109876543210
7109 * 001000 x1110000101
7110 * rt -----
7111 * rs -----
7112 * rd -----
7114 std::string NMD::DVPE(uint64 instruction)
7116 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7118 std::string rt = GPR(copy(rt_value));
7120 return img::format("DVPE %s", rt);
7127 * 3 2 1
7128 * 10987654321098765432109876543210
7129 * 001000 x1110000101
7130 * rt -----
7131 * rs -----
7132 * rd -----
7134 std::string NMD::DVP(uint64 instruction)
7136 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7138 std::string rt = GPR(copy(rt_value));
7140 return img::format("DVP %s", rt);
7147 * 3 2 1
7148 * 10987654321098765432109876543210
7149 * 001000 x1110000101
7150 * rt -----
7151 * rs -----
7152 * rd -----
7154 std::string NMD::EHB(uint64 instruction)
7156 (void)instruction;
7158 return "EHB ";
7165 * 3 2 1
7166 * 10987654321098765432109876543210
7167 * 001000 x1110000101
7168 * rt -----
7169 * rs -----
7170 * rd -----
7172 std::string NMD::EI(uint64 instruction)
7174 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7176 std::string rt = GPR(copy(rt_value));
7178 return img::format("EI %s", rt);
7185 * 3 2 1
7186 * 10987654321098765432109876543210
7187 * 001000 x1110000101
7188 * rt -----
7189 * rs -----
7190 * rd -----
7192 std::string NMD::EMT(uint64 instruction)
7194 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7196 std::string rt = GPR(copy(rt_value));
7198 return img::format("EMT %s", rt);
7205 * 3 2 1
7206 * 10987654321098765432109876543210
7207 * 001000 x1110000101
7208 * rt -----
7209 * rs -----
7210 * rd -----
7212 std::string NMD::ERET(uint64 instruction)
7214 (void)instruction;
7216 return "ERET ";
7223 * 3 2 1
7224 * 10987654321098765432109876543210
7225 * 001000 x1110000101
7226 * rt -----
7227 * rs -----
7228 * rd -----
7230 std::string NMD::ERETNC(uint64 instruction)
7232 (void)instruction;
7234 return "ERETNC ";
7241 * 3 2 1
7242 * 10987654321098765432109876543210
7243 * 001000 x1110000101
7244 * rt -----
7245 * rs -----
7246 * rd -----
7248 std::string NMD::EVP(uint64 instruction)
7250 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7252 std::string rt = GPR(copy(rt_value));
7254 return img::format("EVP %s", rt);
7261 * 3 2 1
7262 * 10987654321098765432109876543210
7263 * 001000 x1110000101
7264 * rt -----
7265 * rs -----
7266 * rd -----
7268 std::string NMD::EVPE(uint64 instruction)
7270 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7272 std::string rt = GPR(copy(rt_value));
7274 return img::format("EVPE %s", rt);
7281 * 3 2 1
7282 * 10987654321098765432109876543210
7283 * 001000 x1110000101
7284 * rt -----
7285 * rs -----
7286 * rd -----
7288 std::string NMD::EXT(uint64 instruction)
7290 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7291 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
7292 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
7293 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7295 std::string rt = GPR(copy(rt_value));
7296 std::string rs = GPR(copy(rs_value));
7297 std::string lsb = IMMEDIATE(copy(lsb_value));
7298 std::string msbd = IMMEDIATE(encode_msbd_from_size(msbd_value));
7300 return img::format("EXT %s, %s, %s, %s", rt, rs, lsb, msbd);
7307 * 3 2 1
7308 * 10987654321098765432109876543210
7309 * 001000 x1110000101
7310 * rt -----
7311 * rs -----
7312 * rd -----
7314 std::string NMD::EXTD(uint64 instruction)
7316 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7317 uint64 shift_value = extract_shift_10_9_8_7_6(instruction);
7318 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7319 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7321 std::string rd = GPR(copy(rd_value));
7322 std::string rs = GPR(copy(rs_value));
7323 std::string rt = GPR(copy(rt_value));
7324 std::string shift = IMMEDIATE(copy(shift_value));
7326 return img::format("EXTD %s, %s, %s, %s", rd, rs, rt, shift);
7333 * 3 2 1
7334 * 10987654321098765432109876543210
7335 * 001000 x1110000101
7336 * rt -----
7337 * rs -----
7338 * rd -----
7340 std::string NMD::EXTD32(uint64 instruction)
7342 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7343 uint64 shift_value = extract_shift_10_9_8_7_6(instruction);
7344 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7345 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7347 std::string rd = GPR(copy(rd_value));
7348 std::string rs = GPR(copy(rs_value));
7349 std::string rt = GPR(copy(rt_value));
7350 std::string shift = IMMEDIATE(copy(shift_value));
7352 return img::format("EXTD32 %s, %s, %s, %s", rd, rs, rt, shift);
7359 * 3 2 1
7360 * 10987654321098765432109876543210
7361 * 001000 x1110000101
7362 * rt -----
7363 * rs -----
7364 * rd -----
7366 std::string NMD::EXTPDP(uint64 instruction)
7368 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7369 uint64 ac_value = extract_ac_13_12(instruction);
7370 uint64 size_value = extract_size_20_19_18_17_16(instruction);
7372 std::string rt = GPR(copy(rt_value));
7373 std::string ac = AC(copy(ac_value));
7374 std::string size = IMMEDIATE(copy(size_value));
7376 return img::format("EXTPDP %s, %s, %s", rt, ac, size);
7383 * 3 2 1
7384 * 10987654321098765432109876543210
7385 * 001000 x1110000101
7386 * rt -----
7387 * rs -----
7388 * rd -----
7390 std::string NMD::EXTPDPV(uint64 instruction)
7392 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7393 uint64 ac_value = extract_ac_13_12(instruction);
7394 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7396 std::string rt = GPR(copy(rt_value));
7397 std::string ac = AC(copy(ac_value));
7398 std::string rs = GPR(copy(rs_value));
7400 return img::format("EXTPDPV %s, %s, %s", rt, ac, rs);
7407 * 3 2 1
7408 * 10987654321098765432109876543210
7409 * 001000 x1110000101
7410 * rt -----
7411 * rs -----
7412 * rd -----
7414 std::string NMD::EXTP(uint64 instruction)
7416 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7417 uint64 ac_value = extract_ac_13_12(instruction);
7418 uint64 size_value = extract_size_20_19_18_17_16(instruction);
7420 std::string rt = GPR(copy(rt_value));
7421 std::string ac = AC(copy(ac_value));
7422 std::string size = IMMEDIATE(copy(size_value));
7424 return img::format("EXTP %s, %s, %s", rt, ac, size);
7431 * 3 2 1
7432 * 10987654321098765432109876543210
7433 * 001000 x1110000101
7434 * rt -----
7435 * rs -----
7436 * rd -----
7438 std::string NMD::EXTPV(uint64 instruction)
7440 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7441 uint64 ac_value = extract_ac_13_12(instruction);
7442 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7444 std::string rt = GPR(copy(rt_value));
7445 std::string ac = AC(copy(ac_value));
7446 std::string rs = GPR(copy(rs_value));
7448 return img::format("EXTPV %s, %s, %s", rt, ac, rs);
7455 * 3 2 1
7456 * 10987654321098765432109876543210
7457 * 001000 x1110000101
7458 * rt -----
7459 * rs -----
7460 * rd -----
7462 std::string NMD::EXTR_RS_W(uint64 instruction)
7464 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7465 uint64 shift_value = extract_shift_20_19_18_17_16(instruction);
7466 uint64 ac_value = extract_ac_13_12(instruction);
7468 std::string rt = GPR(copy(rt_value));
7469 std::string ac = AC(copy(ac_value));
7470 std::string shift = IMMEDIATE(copy(shift_value));
7472 return img::format("EXTR_RS.W %s, %s, %s", rt, ac, shift);
7479 * 3 2 1
7480 * 10987654321098765432109876543210
7481 * 001000 x1110000101
7482 * rt -----
7483 * rs -----
7484 * rd -----
7486 std::string NMD::EXTR_R_W(uint64 instruction)
7488 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7489 uint64 shift_value = extract_shift_20_19_18_17_16(instruction);
7490 uint64 ac_value = extract_ac_13_12(instruction);
7492 std::string rt = GPR(copy(rt_value));
7493 std::string ac = AC(copy(ac_value));
7494 std::string shift = IMMEDIATE(copy(shift_value));
7496 return img::format("EXTR_R.W %s, %s, %s", rt, ac, shift);
7503 * 3 2 1
7504 * 10987654321098765432109876543210
7505 * 001000 x1110000101
7506 * rt -----
7507 * rs -----
7508 * rd -----
7510 std::string NMD::EXTR_S_H(uint64 instruction)
7512 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7513 uint64 shift_value = extract_shift_20_19_18_17_16(instruction);
7514 uint64 ac_value = extract_ac_13_12(instruction);
7516 std::string rt = GPR(copy(rt_value));
7517 std::string ac = AC(copy(ac_value));
7518 std::string shift = IMMEDIATE(copy(shift_value));
7520 return img::format("EXTR_S.H %s, %s, %s", rt, ac, shift);
7527 * 3 2 1
7528 * 10987654321098765432109876543210
7529 * 001000 x1110000101
7530 * rt -----
7531 * rs -----
7532 * rd -----
7534 std::string NMD::EXTR_W(uint64 instruction)
7536 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7537 uint64 shift_value = extract_shift_20_19_18_17_16(instruction);
7538 uint64 ac_value = extract_ac_13_12(instruction);
7540 std::string rt = GPR(copy(rt_value));
7541 std::string ac = AC(copy(ac_value));
7542 std::string shift = IMMEDIATE(copy(shift_value));
7544 return img::format("EXTR.W %s, %s, %s", rt, ac, shift);
7551 * 3 2 1
7552 * 10987654321098765432109876543210
7553 * 001000 x1110000101
7554 * rt -----
7555 * rs -----
7556 * rd -----
7558 std::string NMD::EXTRV_RS_W(uint64 instruction)
7560 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7561 uint64 ac_value = extract_ac_13_12(instruction);
7562 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7564 std::string rt = GPR(copy(rt_value));
7565 std::string ac = AC(copy(ac_value));
7566 std::string rs = GPR(copy(rs_value));
7568 return img::format("EXTRV_RS.W %s, %s, %s", rt, ac, rs);
7575 * 3 2 1
7576 * 10987654321098765432109876543210
7577 * 001000 x1110000101
7578 * rt -----
7579 * rs -----
7580 * rd -----
7582 std::string NMD::EXTRV_R_W(uint64 instruction)
7584 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7585 uint64 ac_value = extract_ac_13_12(instruction);
7586 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7588 std::string rt = GPR(copy(rt_value));
7589 std::string ac = AC(copy(ac_value));
7590 std::string rs = GPR(copy(rs_value));
7592 return img::format("EXTRV_R.W %s, %s, %s", rt, ac, rs);
7599 * 3 2 1
7600 * 10987654321098765432109876543210
7601 * 001000 x1110000101
7602 * rt -----
7603 * rs -----
7604 * rd -----
7606 std::string NMD::EXTRV_S_H(uint64 instruction)
7608 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7609 uint64 ac_value = extract_ac_13_12(instruction);
7610 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7612 std::string rt = GPR(copy(rt_value));
7613 std::string ac = AC(copy(ac_value));
7614 std::string rs = GPR(copy(rs_value));
7616 return img::format("EXTRV_S.H %s, %s, %s", rt, ac, rs);
7623 * 3 2 1
7624 * 10987654321098765432109876543210
7625 * 001000 x1110000101
7626 * rt -----
7627 * rs -----
7628 * rd -----
7630 std::string NMD::EXTRV_W(uint64 instruction)
7632 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7633 uint64 ac_value = extract_ac_13_12(instruction);
7634 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7636 std::string rt = GPR(copy(rt_value));
7637 std::string ac = AC(copy(ac_value));
7638 std::string rs = GPR(copy(rs_value));
7640 return img::format("EXTRV.W %s, %s, %s", rt, ac, rs);
7645 * EXTW - Extract Word
7647 * 3 2 1
7648 * 10987654321098765432109876543210
7649 * 001000 011111
7650 * rt -----
7651 * rs -----
7652 * rd -----
7653 * shift -----
7655 std::string NMD::EXTW(uint64 instruction)
7657 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7658 uint64 shift_value = extract_shift_10_9_8_7_6(instruction);
7659 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7660 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7662 std::string rd = GPR(copy(rd_value));
7663 std::string rs = GPR(copy(rs_value));
7664 std::string rt = GPR(copy(rt_value));
7665 std::string shift = IMMEDIATE(copy(shift_value));
7667 return img::format("EXTW %s, %s, %s, %s", rd, rs, rt, shift);
7674 * 3 2 1
7675 * 10987654321098765432109876543210
7676 * 001000 x1110000101
7677 * rt -----
7678 * rs -----
7679 * rd -----
7681 std::string NMD::FLOOR_L_D(uint64 instruction)
7683 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
7684 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
7686 std::string ft = FPR(copy(ft_value));
7687 std::string fs = FPR(copy(fs_value));
7689 return img::format("FLOOR.L.D %s, %s", ft, fs);
7696 * 3 2 1
7697 * 10987654321098765432109876543210
7698 * 001000 x1110000101
7699 * rt -----
7700 * rs -----
7701 * rd -----
7703 std::string NMD::FLOOR_L_S(uint64 instruction)
7705 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
7706 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
7708 std::string ft = FPR(copy(ft_value));
7709 std::string fs = FPR(copy(fs_value));
7711 return img::format("FLOOR.L.S %s, %s", ft, fs);
7718 * 3 2 1
7719 * 10987654321098765432109876543210
7720 * 001000 x1110000101
7721 * rt -----
7722 * rs -----
7723 * rd -----
7725 std::string NMD::FLOOR_W_D(uint64 instruction)
7727 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
7728 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
7730 std::string ft = FPR(copy(ft_value));
7731 std::string fs = FPR(copy(fs_value));
7733 return img::format("FLOOR.W.D %s, %s", ft, fs);
7740 * 3 2 1
7741 * 10987654321098765432109876543210
7742 * 001000 x1110000101
7743 * rt -----
7744 * rs -----
7745 * rd -----
7747 std::string NMD::FLOOR_W_S(uint64 instruction)
7749 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
7750 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
7752 std::string ft = FPR(copy(ft_value));
7753 std::string fs = FPR(copy(fs_value));
7755 return img::format("FLOOR.W.S %s, %s", ft, fs);
7762 * 3 2 1
7763 * 10987654321098765432109876543210
7764 * 001000 x1110000101
7765 * rt -----
7766 * rs -----
7767 * rd -----
7769 std::string NMD::FORK(uint64 instruction)
7771 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7772 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
7773 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7775 std::string rd = GPR(copy(rd_value));
7776 std::string rs = GPR(copy(rs_value));
7777 std::string rt = GPR(copy(rt_value));
7779 return img::format("FORK %s, %s, %s", rd, rs, rt);
7786 * 3 2 1
7787 * 10987654321098765432109876543210
7788 * 001000 x1110000101
7789 * rt -----
7790 * rs -----
7791 * rd -----
7793 std::string NMD::HYPCALL(uint64 instruction)
7795 uint64 code_value = extract_code_17_to_0(instruction);
7797 std::string code = IMMEDIATE(copy(code_value));
7799 return img::format("HYPCALL %s", code);
7806 * 3 2 1
7807 * 10987654321098765432109876543210
7808 * 001000 x1110000101
7809 * rt -----
7810 * rs -----
7811 * rd -----
7813 std::string NMD::HYPCALL_16_(uint64 instruction)
7815 uint64 code_value = extract_code_1_0(instruction);
7817 std::string code = IMMEDIATE(copy(code_value));
7819 return img::format("HYPCALL %s", code);
7826 * 3 2 1
7827 * 10987654321098765432109876543210
7828 * 001000 x1110000101
7829 * rt -----
7830 * rs -----
7831 * rd -----
7833 std::string NMD::INS(uint64 instruction)
7835 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7836 uint64 msbd_value = extract_msbt_10_9_8_7_6(instruction);
7837 uint64 lsb_value = extract_lsb_4_3_2_1_0(instruction);
7838 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7840 std::string rt = GPR(copy(rt_value));
7841 std::string rs = GPR(copy(rs_value));
7842 std::string pos = IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value));
7843 std::string size = IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value));
7844 /* !!!!!!!!!! - no conversion function */
7846 return img::format("INS %s, %s, %s, %s", rt, rs, pos, size);
7847 /* hand edited */
7854 * 3 2 1
7855 * 10987654321098765432109876543210
7856 * 001000 x1110000101
7857 * rt -----
7858 * rs -----
7859 * rd -----
7861 std::string NMD::INSV(uint64 instruction)
7863 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7864 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7866 std::string rt = GPR(copy(rt_value));
7867 std::string rs = GPR(copy(rs_value));
7869 return img::format("INSV %s, %s", rt, rs);
7876 * 3 2 1
7877 * 10987654321098765432109876543210
7878 * 001000 x1110000101
7879 * rt -----
7880 * rs -----
7881 * rd -----
7883 std::string NMD::IRET(uint64 instruction)
7885 (void)instruction;
7887 return "IRET ";
7894 * 3 2 1
7895 * 10987654321098765432109876543210
7896 * 001000 x1110000101
7897 * rt -----
7898 * rs -----
7899 * rd -----
7901 std::string NMD::JALRC_16_(uint64 instruction)
7903 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
7905 std::string rt = GPR(copy(rt_value));
7907 return img::format("JALRC $%d, %s", 31, rt);
7914 * 3 2 1
7915 * 10987654321098765432109876543210
7916 * 001000 x1110000101
7917 * rt -----
7918 * rs -----
7919 * rd -----
7921 std::string NMD::JALRC_32_(uint64 instruction)
7923 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7924 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7926 std::string rt = GPR(copy(rt_value));
7927 std::string rs = GPR(copy(rs_value));
7929 return img::format("JALRC %s, %s", rt, rs);
7936 * 3 2 1
7937 * 10987654321098765432109876543210
7938 * 001000 x1110000101
7939 * rt -----
7940 * rs -----
7941 * rd -----
7943 std::string NMD::JALRC_HB(uint64 instruction)
7945 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
7946 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
7948 std::string rt = GPR(copy(rt_value));
7949 std::string rs = GPR(copy(rs_value));
7951 return img::format("JALRC.HB %s, %s", rt, rs);
7958 * 3 2 1
7959 * 10987654321098765432109876543210
7960 * 001000 x1110000101
7961 * rt -----
7962 * rs -----
7963 * rd -----
7965 std::string NMD::JRC(uint64 instruction)
7967 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
7969 std::string rt = GPR(copy(rt_value));
7971 return img::format("JRC %s", rt);
7978 * 3 2 1
7979 * 10987654321098765432109876543210
7980 * 001000 x1110000101
7981 * rt -----
7982 * rs -----
7983 * rd -----
7985 std::string NMD::LB_16_(uint64 instruction)
7987 uint64 u_value = extract_u_1_0(instruction);
7988 uint64 rt3_value = extract_rt3_9_8_7(instruction);
7989 uint64 rs3_value = extract_rs3_6_5_4(instruction);
7991 std::string rt3 = GPR(encode_gpr3(rt3_value));
7992 std::string u = IMMEDIATE(copy(u_value));
7993 std::string rs3 = GPR(encode_gpr3(rs3_value));
7995 return img::format("LB %s, %s(%s)", rt3, u, rs3);
8002 * 3 2 1
8003 * 10987654321098765432109876543210
8004 * 001000 x1110000101
8005 * rt -----
8006 * rs -----
8007 * rd -----
8009 std::string NMD::LB_GP_(uint64 instruction)
8011 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8012 uint64 u_value = extract_u_17_to_0(instruction);
8014 std::string rt = GPR(copy(rt_value));
8015 std::string u = IMMEDIATE(copy(u_value));
8017 return img::format("LB %s, %s($%d)", rt, u, 28);
8024 * 3 2 1
8025 * 10987654321098765432109876543210
8026 * 001000 x1110000101
8027 * rt -----
8028 * rs -----
8029 * rd -----
8031 std::string NMD::LB_S9_(uint64 instruction)
8033 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8034 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8035 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8037 std::string rt = GPR(copy(rt_value));
8038 std::string s = IMMEDIATE(copy(s_value));
8039 std::string rs = GPR(copy(rs_value));
8041 return img::format("LB %s, %s(%s)", rt, s, rs);
8048 * 3 2 1
8049 * 10987654321098765432109876543210
8050 * 001000 x1110000101
8051 * rt -----
8052 * rs -----
8053 * rd -----
8055 std::string NMD::LB_U12_(uint64 instruction)
8057 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8058 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8059 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8061 std::string rt = GPR(copy(rt_value));
8062 std::string u = IMMEDIATE(copy(u_value));
8063 std::string rs = GPR(copy(rs_value));
8065 return img::format("LB %s, %s(%s)", rt, u, rs);
8072 * 3 2 1
8073 * 10987654321098765432109876543210
8074 * 001000 x1110000101
8075 * rt -----
8076 * rs -----
8077 * rd -----
8079 std::string NMD::LBE(uint64 instruction)
8081 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8082 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8083 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8085 std::string rt = GPR(copy(rt_value));
8086 std::string s = IMMEDIATE(copy(s_value));
8087 std::string rs = GPR(copy(rs_value));
8089 return img::format("LBE %s, %s(%s)", rt, s, rs);
8096 * 3 2 1
8097 * 10987654321098765432109876543210
8098 * 001000 x1110000101
8099 * rt -----
8100 * rs -----
8101 * rd -----
8103 std::string NMD::LBU_16_(uint64 instruction)
8105 uint64 u_value = extract_u_1_0(instruction);
8106 uint64 rt3_value = extract_rt3_9_8_7(instruction);
8107 uint64 rs3_value = extract_rs3_6_5_4(instruction);
8109 std::string rt3 = GPR(encode_gpr3(rt3_value));
8110 std::string u = IMMEDIATE(copy(u_value));
8111 std::string rs3 = GPR(encode_gpr3(rs3_value));
8113 return img::format("LBU %s, %s(%s)", rt3, u, rs3);
8120 * 3 2 1
8121 * 10987654321098765432109876543210
8122 * 001000 x1110000101
8123 * rt -----
8124 * rs -----
8125 * rd -----
8127 std::string NMD::LBU_GP_(uint64 instruction)
8129 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8130 uint64 u_value = extract_u_17_to_0(instruction);
8132 std::string rt = GPR(copy(rt_value));
8133 std::string u = IMMEDIATE(copy(u_value));
8135 return img::format("LBU %s, %s($%d)", rt, u, 28);
8142 * 3 2 1
8143 * 10987654321098765432109876543210
8144 * 001000 x1110000101
8145 * rt -----
8146 * rs -----
8147 * rd -----
8149 std::string NMD::LBU_S9_(uint64 instruction)
8151 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8152 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8153 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8155 std::string rt = GPR(copy(rt_value));
8156 std::string s = IMMEDIATE(copy(s_value));
8157 std::string rs = GPR(copy(rs_value));
8159 return img::format("LBU %s, %s(%s)", rt, s, rs);
8166 * 3 2 1
8167 * 10987654321098765432109876543210
8168 * 001000 x1110000101
8169 * rt -----
8170 * rs -----
8171 * rd -----
8173 std::string NMD::LBU_U12_(uint64 instruction)
8175 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8176 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8177 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8179 std::string rt = GPR(copy(rt_value));
8180 std::string u = IMMEDIATE(copy(u_value));
8181 std::string rs = GPR(copy(rs_value));
8183 return img::format("LBU %s, %s(%s)", rt, u, rs);
8190 * 3 2 1
8191 * 10987654321098765432109876543210
8192 * 001000 x1110000101
8193 * rt -----
8194 * rs -----
8195 * rd -----
8197 std::string NMD::LBUE(uint64 instruction)
8199 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8200 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8201 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8203 std::string rt = GPR(copy(rt_value));
8204 std::string s = IMMEDIATE(copy(s_value));
8205 std::string rs = GPR(copy(rs_value));
8207 return img::format("LBUE %s, %s(%s)", rt, s, rs);
8214 * 3 2 1
8215 * 10987654321098765432109876543210
8216 * 001000 x1110000101
8217 * rt -----
8218 * rs -----
8219 * rd -----
8221 std::string NMD::LBUX(uint64 instruction)
8223 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8224 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8225 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8227 std::string rd = GPR(copy(rd_value));
8228 std::string rs = GPR(copy(rs_value));
8229 std::string rt = GPR(copy(rt_value));
8231 return img::format("LBUX %s, %s(%s)", rd, rs, rt);
8238 * 3 2 1
8239 * 10987654321098765432109876543210
8240 * 001000 x1110000101
8241 * rt -----
8242 * rs -----
8243 * rd -----
8245 std::string NMD::LBX(uint64 instruction)
8247 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8248 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8249 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8251 std::string rd = GPR(copy(rd_value));
8252 std::string rs = GPR(copy(rs_value));
8253 std::string rt = GPR(copy(rt_value));
8255 return img::format("LBX %s, %s(%s)", rd, rs, rt);
8262 * 3 2 1
8263 * 10987654321098765432109876543210
8264 * 001000 x1110000101
8265 * rt -----
8266 * rs -----
8267 * rd -----
8269 std::string NMD::LD_GP_(uint64 instruction)
8271 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8272 uint64 u_value = extr_uil3il3bs18Fmsb20(instruction);
8274 std::string rt = GPR(copy(rt_value));
8275 std::string u = IMMEDIATE(copy(u_value));
8277 return img::format("LD %s, %s($%d)", rt, u, 28);
8284 * 3 2 1
8285 * 10987654321098765432109876543210
8286 * 001000 x1110000101
8287 * rt -----
8288 * rs -----
8289 * rd -----
8291 std::string NMD::LD_S9_(uint64 instruction)
8293 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8294 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8295 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8297 std::string rt = GPR(copy(rt_value));
8298 std::string s = IMMEDIATE(copy(s_value));
8299 std::string rs = GPR(copy(rs_value));
8301 return img::format("LD %s, %s(%s)", rt, s, rs);
8308 * 3 2 1
8309 * 10987654321098765432109876543210
8310 * 001000 x1110000101
8311 * rt -----
8312 * rs -----
8313 * rd -----
8315 std::string NMD::LD_U12_(uint64 instruction)
8317 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8318 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8319 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8321 std::string rt = GPR(copy(rt_value));
8322 std::string u = IMMEDIATE(copy(u_value));
8323 std::string rs = GPR(copy(rs_value));
8325 return img::format("LD %s, %s(%s)", rt, u, rs);
8332 * 3 2 1
8333 * 10987654321098765432109876543210
8334 * 001000 x1110000101
8335 * rt -----
8336 * rs -----
8337 * rd -----
8339 std::string NMD::LDC1_GP_(uint64 instruction)
8341 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
8342 uint64 u_value = extr_uil2il2bs16Fmsb17(instruction);
8344 std::string ft = FPR(copy(ft_value));
8345 std::string u = IMMEDIATE(copy(u_value));
8347 return img::format("LDC1 %s, %s($%d)", ft, u, 28);
8354 * 3 2 1
8355 * 10987654321098765432109876543210
8356 * 001000 x1110000101
8357 * rt -----
8358 * rs -----
8359 * rd -----
8361 std::string NMD::LDC1_S9_(uint64 instruction)
8363 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8364 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
8365 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8367 std::string ft = FPR(copy(ft_value));
8368 std::string s = IMMEDIATE(copy(s_value));
8369 std::string rs = GPR(copy(rs_value));
8371 return img::format("LDC1 %s, %s(%s)", ft, s, rs);
8378 * 3 2 1
8379 * 10987654321098765432109876543210
8380 * 001000 x1110000101
8381 * rt -----
8382 * rs -----
8383 * rd -----
8385 std::string NMD::LDC1_U12_(uint64 instruction)
8387 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
8388 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8389 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8391 std::string ft = FPR(copy(ft_value));
8392 std::string u = IMMEDIATE(copy(u_value));
8393 std::string rs = GPR(copy(rs_value));
8395 return img::format("LDC1 %s, %s(%s)", ft, u, rs);
8402 * 3 2 1
8403 * 10987654321098765432109876543210
8404 * 001000 x1110000101
8405 * rt -----
8406 * rs -----
8407 * rd -----
8409 std::string NMD::LDC1XS(uint64 instruction)
8411 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8412 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
8413 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8415 std::string ft = FPR(copy(ft_value));
8416 std::string rs = GPR(copy(rs_value));
8417 std::string rt = GPR(copy(rt_value));
8419 return img::format("LDC1XS %s, %s(%s)", ft, rs, rt);
8426 * 3 2 1
8427 * 10987654321098765432109876543210
8428 * 001000 x1110000101
8429 * rt -----
8430 * rs -----
8431 * rd -----
8433 std::string NMD::LDC1X(uint64 instruction)
8435 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8436 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
8437 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8439 std::string ft = FPR(copy(ft_value));
8440 std::string rs = GPR(copy(rs_value));
8441 std::string rt = GPR(copy(rt_value));
8443 return img::format("LDC1X %s, %s(%s)", ft, rs, rt);
8450 * 3 2 1
8451 * 10987654321098765432109876543210
8452 * 001000 x1110000101
8453 * rt -----
8454 * rs -----
8455 * rd -----
8457 std::string NMD::LDC2(uint64 instruction)
8459 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8460 uint64 ct_value = extract_ct_25_24_23_22_21(instruction);
8461 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8463 std::string ct = CPR(copy(ct_value));
8464 std::string s = IMMEDIATE(copy(s_value));
8465 std::string rs = GPR(copy(rs_value));
8467 return img::format("LDC2 %s, %s(%s)", ct, s, rs);
8474 * 3 2 1
8475 * 10987654321098765432109876543210
8476 * 001000 x1110000101
8477 * rt -----
8478 * rs -----
8479 * rd -----
8481 std::string NMD::LDM(uint64 instruction)
8483 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8484 uint64 count3_value = extract_count3_14_13_12(instruction);
8485 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8486 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8488 std::string rt = GPR(copy(rt_value));
8489 std::string s = IMMEDIATE(copy(s_value));
8490 std::string rs = GPR(copy(rs_value));
8491 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
8493 return img::format("LDM %s, %s(%s), %s", rt, s, rs, count3);
8500 * 3 2 1
8501 * 10987654321098765432109876543210
8502 * 001000 x1110000101
8503 * rt -----
8504 * rs -----
8505 * rd -----
8507 std::string NMD::LDPC_48_(uint64 instruction)
8509 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
8510 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
8512 std::string rt = GPR(copy(rt_value));
8513 std::string s = ADDRESS(encode_s_from_address(s_value), 6);
8515 return img::format("LDPC %s, %s", rt, s);
8522 * 3 2 1
8523 * 10987654321098765432109876543210
8524 * 001000 x1110000101
8525 * rt -----
8526 * rs -----
8527 * rd -----
8529 std::string NMD::LDX(uint64 instruction)
8531 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8532 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8533 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8535 std::string rd = GPR(copy(rd_value));
8536 std::string rs = GPR(copy(rs_value));
8537 std::string rt = GPR(copy(rt_value));
8539 return img::format("LDX %s, %s(%s)", rd, rs, rt);
8546 * 3 2 1
8547 * 10987654321098765432109876543210
8548 * 001000 x1110000101
8549 * rt -----
8550 * rs -----
8551 * rd -----
8553 std::string NMD::LDXS(uint64 instruction)
8555 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8556 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8557 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8559 std::string rd = GPR(copy(rd_value));
8560 std::string rs = GPR(copy(rs_value));
8561 std::string rt = GPR(copy(rt_value));
8563 return img::format("LDXS %s, %s(%s)", rd, rs, rt);
8570 * 3 2 1
8571 * 10987654321098765432109876543210
8572 * 001000 x1110000101
8573 * rt -----
8574 * rs -----
8575 * rd -----
8577 std::string NMD::LH_16_(uint64 instruction)
8579 uint64 u_value = extr_uil1il1bs2Fmsb2(instruction);
8580 uint64 rt3_value = extract_rt3_9_8_7(instruction);
8581 uint64 rs3_value = extract_rs3_6_5_4(instruction);
8583 std::string rt3 = GPR(encode_gpr3(rt3_value));
8584 std::string u = IMMEDIATE(copy(u_value));
8585 std::string rs3 = GPR(encode_gpr3(rs3_value));
8587 return img::format("LH %s, %s(%s)", rt3, u, rs3);
8594 * 3 2 1
8595 * 10987654321098765432109876543210
8596 * 001000 x1110000101
8597 * rt -----
8598 * rs -----
8599 * rd -----
8601 std::string NMD::LH_GP_(uint64 instruction)
8603 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8604 uint64 u_value = extr_uil1il1bs17Fmsb17(instruction);
8606 std::string rt = GPR(copy(rt_value));
8607 std::string u = IMMEDIATE(copy(u_value));
8609 return img::format("LH %s, %s($%d)", rt, u, 28);
8616 * 3 2 1
8617 * 10987654321098765432109876543210
8618 * 001000 x1110000101
8619 * rt -----
8620 * rs -----
8621 * rd -----
8623 std::string NMD::LH_S9_(uint64 instruction)
8625 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8626 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8627 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8629 std::string rt = GPR(copy(rt_value));
8630 std::string s = IMMEDIATE(copy(s_value));
8631 std::string rs = GPR(copy(rs_value));
8633 return img::format("LH %s, %s(%s)", rt, s, rs);
8640 * 3 2 1
8641 * 10987654321098765432109876543210
8642 * 001000 x1110000101
8643 * rt -----
8644 * rs -----
8645 * rd -----
8647 std::string NMD::LH_U12_(uint64 instruction)
8649 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8650 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8651 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8653 std::string rt = GPR(copy(rt_value));
8654 std::string u = IMMEDIATE(copy(u_value));
8655 std::string rs = GPR(copy(rs_value));
8657 return img::format("LH %s, %s(%s)", rt, u, rs);
8664 * 3 2 1
8665 * 10987654321098765432109876543210
8666 * 001000 x1110000101
8667 * rt -----
8668 * rs -----
8669 * rd -----
8671 std::string NMD::LHE(uint64 instruction)
8673 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8674 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8675 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8677 std::string rt = GPR(copy(rt_value));
8678 std::string s = IMMEDIATE(copy(s_value));
8679 std::string rs = GPR(copy(rs_value));
8681 return img::format("LHE %s, %s(%s)", rt, s, rs);
8688 * 3 2 1
8689 * 10987654321098765432109876543210
8690 * 001000 x1110000101
8691 * rt -----
8692 * rs -----
8693 * rd -----
8695 std::string NMD::LHU_16_(uint64 instruction)
8697 uint64 u_value = extr_uil1il1bs2Fmsb2(instruction);
8698 uint64 rt3_value = extract_rt3_9_8_7(instruction);
8699 uint64 rs3_value = extract_rs3_6_5_4(instruction);
8701 std::string rt3 = GPR(encode_gpr3(rt3_value));
8702 std::string u = IMMEDIATE(copy(u_value));
8703 std::string rs3 = GPR(encode_gpr3(rs3_value));
8705 return img::format("LHU %s, %s(%s)", rt3, u, rs3);
8712 * 3 2 1
8713 * 10987654321098765432109876543210
8714 * 001000 x1110000101
8715 * rt -----
8716 * rs -----
8717 * rd -----
8719 std::string NMD::LHU_GP_(uint64 instruction)
8721 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8722 uint64 u_value = extr_uil1il1bs17Fmsb17(instruction);
8724 std::string rt = GPR(copy(rt_value));
8725 std::string u = IMMEDIATE(copy(u_value));
8727 return img::format("LHU %s, %s($%d)", rt, u, 28);
8734 * 3 2 1
8735 * 10987654321098765432109876543210
8736 * 001000 x1110000101
8737 * rt -----
8738 * rs -----
8739 * rd -----
8741 std::string NMD::LHU_S9_(uint64 instruction)
8743 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8744 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8745 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8747 std::string rt = GPR(copy(rt_value));
8748 std::string s = IMMEDIATE(copy(s_value));
8749 std::string rs = GPR(copy(rs_value));
8751 return img::format("LHU %s, %s(%s)", rt, s, rs);
8758 * 3 2 1
8759 * 10987654321098765432109876543210
8760 * 001000 x1110000101
8761 * rt -----
8762 * rs -----
8763 * rd -----
8765 std::string NMD::LHU_U12_(uint64 instruction)
8767 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8768 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
8769 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8771 std::string rt = GPR(copy(rt_value));
8772 std::string u = IMMEDIATE(copy(u_value));
8773 std::string rs = GPR(copy(rs_value));
8775 return img::format("LHU %s, %s(%s)", rt, u, rs);
8782 * 3 2 1
8783 * 10987654321098765432109876543210
8784 * 001000 x1110000101
8785 * rt -----
8786 * rs -----
8787 * rd -----
8789 std::string NMD::LHUE(uint64 instruction)
8791 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8792 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
8793 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8795 std::string rt = GPR(copy(rt_value));
8796 std::string s = IMMEDIATE(copy(s_value));
8797 std::string rs = GPR(copy(rs_value));
8799 return img::format("LHUE %s, %s(%s)", rt, s, rs);
8806 * 3 2 1
8807 * 10987654321098765432109876543210
8808 * 001000 x1110000101
8809 * rt -----
8810 * rs -----
8811 * rd -----
8813 std::string NMD::LHUX(uint64 instruction)
8815 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8816 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8817 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8819 std::string rd = GPR(copy(rd_value));
8820 std::string rs = GPR(copy(rs_value));
8821 std::string rt = GPR(copy(rt_value));
8823 return img::format("LHUX %s, %s(%s)", rd, rs, rt);
8830 * 3 2 1
8831 * 10987654321098765432109876543210
8832 * 001000 x1110000101
8833 * rt -----
8834 * rs -----
8835 * rd -----
8837 std::string NMD::LHUXS(uint64 instruction)
8839 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8840 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8841 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8843 std::string rd = GPR(copy(rd_value));
8844 std::string rs = GPR(copy(rs_value));
8845 std::string rt = GPR(copy(rt_value));
8847 return img::format("LHUXS %s, %s(%s)", rd, rs, rt);
8854 * 3 2 1
8855 * 10987654321098765432109876543210
8856 * 001000 x1110000101
8857 * rt -----
8858 * rs -----
8859 * rd -----
8861 std::string NMD::LHXS(uint64 instruction)
8863 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8864 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8865 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8867 std::string rd = GPR(copy(rd_value));
8868 std::string rs = GPR(copy(rs_value));
8869 std::string rt = GPR(copy(rt_value));
8871 return img::format("LHXS %s, %s(%s)", rd, rs, rt);
8878 * 3 2 1
8879 * 10987654321098765432109876543210
8880 * 001000 x1110000101
8881 * rt -----
8882 * rs -----
8883 * rd -----
8885 std::string NMD::LHX(uint64 instruction)
8887 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8888 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
8889 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8891 std::string rd = GPR(copy(rd_value));
8892 std::string rs = GPR(copy(rs_value));
8893 std::string rt = GPR(copy(rt_value));
8895 return img::format("LHX %s, %s(%s)", rd, rs, rt);
8902 * 3 2 1
8903 * 10987654321098765432109876543210
8904 * 001000 x1110000101
8905 * rt -----
8906 * rs -----
8907 * rd -----
8909 std::string NMD::LI_16_(uint64 instruction)
8911 uint64 eu_value = extract_eu_6_5_4_3_2_1_0(instruction);
8912 uint64 rt3_value = extract_rt3_9_8_7(instruction);
8914 std::string rt3 = GPR(encode_gpr3(rt3_value));
8915 std::string eu = IMMEDIATE(encode_eu_from_s_li16(eu_value));
8917 return img::format("LI %s, %s", rt3, eu);
8924 * 3 2 1
8925 * 10987654321098765432109876543210
8926 * 001000 x1110000101
8927 * rt -----
8928 * rs -----
8929 * rd -----
8931 std::string NMD::LI_48_(uint64 instruction)
8933 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
8934 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
8936 std::string rt = GPR(copy(rt_value));
8937 std::string s = IMMEDIATE(copy(s_value));
8939 return img::format("LI %s, %s", rt, s);
8946 * 3 2 1
8947 * 10987654321098765432109876543210
8948 * 001000 x1110000101
8949 * rt -----
8950 * rs -----
8951 * rd -----
8953 std::string NMD::LL(uint64 instruction)
8955 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8956 int64 s_value = extr_sil2il2bs6_il15il8bs1Tmsb8(instruction);
8957 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8959 std::string rt = GPR(copy(rt_value));
8960 std::string s = IMMEDIATE(copy(s_value));
8961 std::string rs = GPR(copy(rs_value));
8963 return img::format("LL %s, %s(%s)", rt, s, rs);
8970 * 3 2 1
8971 * 10987654321098765432109876543210
8972 * 001000 x1110000101
8973 * rt -----
8974 * rs -----
8975 * rd -----
8977 std::string NMD::LLD(uint64 instruction)
8979 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
8980 int64 s_value = extr_sil3il3bs5_il15il8bs1Tmsb8(instruction);
8981 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
8983 std::string rt = GPR(copy(rt_value));
8984 std::string s = IMMEDIATE(copy(s_value));
8985 std::string rs = GPR(copy(rs_value));
8987 return img::format("LLD %s, %s(%s)", rt, s, rs);
8994 * 3 2 1
8995 * 10987654321098765432109876543210
8996 * 001000 x1110000101
8997 * rt -----
8998 * rs -----
8999 * rd -----
9001 std::string NMD::LLDP(uint64 instruction)
9003 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9004 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
9005 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9007 std::string rt = GPR(copy(rt_value));
9008 std::string ru = GPR(copy(ru_value));
9009 std::string rs = GPR(copy(rs_value));
9011 return img::format("LLDP %s, %s, (%s)", rt, ru, rs);
9018 * 3 2 1
9019 * 10987654321098765432109876543210
9020 * 001000 x1110000101
9021 * rt -----
9022 * rs -----
9023 * rd -----
9025 std::string NMD::LLE(uint64 instruction)
9027 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9028 int64 s_value = extr_sil2il2bs6_il15il8bs1Tmsb8(instruction);
9029 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9031 std::string rt = GPR(copy(rt_value));
9032 std::string s = IMMEDIATE(copy(s_value));
9033 std::string rs = GPR(copy(rs_value));
9035 return img::format("LLE %s, %s(%s)", rt, s, rs);
9042 * 3 2 1
9043 * 10987654321098765432109876543210
9044 * 001000 x1110000101
9045 * rt -----
9046 * rs -----
9047 * rd -----
9049 std::string NMD::LLWP(uint64 instruction)
9051 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9052 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
9053 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9055 std::string rt = GPR(copy(rt_value));
9056 std::string ru = GPR(copy(ru_value));
9057 std::string rs = GPR(copy(rs_value));
9059 return img::format("LLWP %s, %s, (%s)", rt, ru, rs);
9066 * 3 2 1
9067 * 10987654321098765432109876543210
9068 * 001000 x1110000101
9069 * rt -----
9070 * rs -----
9071 * rd -----
9073 std::string NMD::LLWPE(uint64 instruction)
9075 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9076 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
9077 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9079 std::string rt = GPR(copy(rt_value));
9080 std::string ru = GPR(copy(ru_value));
9081 std::string rs = GPR(copy(rs_value));
9083 return img::format("LLWPE %s, %s, (%s)", rt, ru, rs);
9090 * 3 2 1
9091 * 10987654321098765432109876543210
9092 * 001000 x1110000101
9093 * rt -----
9094 * rs -----
9095 * rd -----
9097 std::string NMD::LSA(uint64 instruction)
9099 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9100 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
9101 uint64 u2_value = extract_u2_10_9(instruction);
9102 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9104 std::string rd = GPR(copy(rd_value));
9105 std::string rs = GPR(copy(rs_value));
9106 std::string rt = GPR(copy(rt_value));
9107 std::string u2 = IMMEDIATE(copy(u2_value));
9109 return img::format("LSA %s, %s, %s, %s", rd, rs, rt, u2);
9116 * 3 2 1
9117 * 10987654321098765432109876543210
9118 * 001000 x1110000101
9119 * rt -----
9120 * rs -----
9121 * rd -----
9123 std::string NMD::LUI(uint64 instruction)
9125 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9126 int64 s_value = extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(instruction);
9128 std::string rt = GPR(copy(rt_value));
9129 std::string s = IMMEDIATE(copy(s_value));
9131 return img::format("LUI %s, %%hi(%s)", rt, s);
9138 * 3 2 1
9139 * 10987654321098765432109876543210
9140 * 001000 x1110000101
9141 * rt -----
9142 * rs -----
9143 * rd -----
9145 std::string NMD::LW_16_(uint64 instruction)
9147 uint64 u_value = extr_uil0il2bs4Fmsb5(instruction);
9148 uint64 rt3_value = extract_rt3_9_8_7(instruction);
9149 uint64 rs3_value = extract_rs3_6_5_4(instruction);
9151 std::string rt3 = GPR(encode_gpr3(rt3_value));
9152 std::string u = IMMEDIATE(copy(u_value));
9153 std::string rs3 = GPR(encode_gpr3(rs3_value));
9155 return img::format("LW %s, %s(%s)", rt3, u, rs3);
9162 * 3 2 1
9163 * 10987654321098765432109876543210
9164 * 001000 x1110000101
9165 * rt -----
9166 * rs -----
9167 * rd -----
9169 std::string NMD::LW_4X4_(uint64 instruction)
9171 uint64 rs4_value = extract_rs4_4_2_1_0(instruction);
9172 uint64 rt4_value = extract_rt4_9_7_6_5(instruction);
9173 uint64 u_value = extr_uil3il3bs1_il8il2bs1Fmsb3(instruction);
9175 std::string rt4 = GPR(encode_gpr4(rt4_value));
9176 std::string u = IMMEDIATE(copy(u_value));
9177 std::string rs4 = GPR(encode_gpr4(rs4_value));
9179 return img::format("LW %s, %s(%s)", rt4, u, rs4);
9186 * 3 2 1
9187 * 10987654321098765432109876543210
9188 * 001000 x1110000101
9189 * rt -----
9190 * rs -----
9191 * rd -----
9193 std::string NMD::LW_GP_(uint64 instruction)
9195 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9196 uint64 u_value = extr_uil2il2bs19Fmsb20(instruction);
9198 std::string rt = GPR(copy(rt_value));
9199 std::string u = IMMEDIATE(copy(u_value));
9201 return img::format("LW %s, %s($%d)", rt, u, 28);
9208 * 3 2 1
9209 * 10987654321098765432109876543210
9210 * 001000 x1110000101
9211 * rt -----
9212 * rs -----
9213 * rd -----
9215 std::string NMD::LW_GP16_(uint64 instruction)
9217 uint64 u_value = extr_uil0il2bs7Fmsb8(instruction);
9218 uint64 rt3_value = extract_rt3_9_8_7(instruction);
9220 std::string rt3 = GPR(encode_gpr3(rt3_value));
9221 std::string u = IMMEDIATE(copy(u_value));
9223 return img::format("LW %s, %s($%d)", rt3, u, 28);
9230 * 3 2 1
9231 * 10987654321098765432109876543210
9232 * 001000 x1110000101
9233 * rt -----
9234 * rs -----
9235 * rd -----
9237 std::string NMD::LW_S9_(uint64 instruction)
9239 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9240 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9241 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9243 std::string rt = GPR(copy(rt_value));
9244 std::string s = IMMEDIATE(copy(s_value));
9245 std::string rs = GPR(copy(rs_value));
9247 return img::format("LW %s, %s(%s)", rt, s, rs);
9254 * 3 2 1
9255 * 10987654321098765432109876543210
9256 * 001000 x1110000101
9257 * rt -----
9258 * rs -----
9259 * rd -----
9261 std::string NMD::LW_SP_(uint64 instruction)
9263 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
9264 uint64 u_value = extr_uil0il2bs5Fmsb6(instruction);
9266 std::string rt = GPR(copy(rt_value));
9267 std::string u = IMMEDIATE(copy(u_value));
9269 return img::format("LW %s, %s($%d)", rt, u, 29);
9276 * 3 2 1
9277 * 10987654321098765432109876543210
9278 * 001000 x1110000101
9279 * rt -----
9280 * rs -----
9281 * rd -----
9283 std::string NMD::LW_U12_(uint64 instruction)
9285 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9286 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
9287 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9289 std::string rt = GPR(copy(rt_value));
9290 std::string u = IMMEDIATE(copy(u_value));
9291 std::string rs = GPR(copy(rs_value));
9293 return img::format("LW %s, %s(%s)", rt, u, rs);
9300 * 3 2 1
9301 * 10987654321098765432109876543210
9302 * 001000 x1110000101
9303 * rt -----
9304 * rs -----
9305 * rd -----
9307 std::string NMD::LWC1_GP_(uint64 instruction)
9309 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9310 uint64 u_value = extr_uil2il2bs16Fmsb17(instruction);
9312 std::string ft = FPR(copy(ft_value));
9313 std::string u = IMMEDIATE(copy(u_value));
9315 return img::format("LWC1 %s, %s($%d)", ft, u, 28);
9322 * 3 2 1
9323 * 10987654321098765432109876543210
9324 * 001000 x1110000101
9325 * rt -----
9326 * rs -----
9327 * rd -----
9329 std::string NMD::LWC1_S9_(uint64 instruction)
9331 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9332 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9333 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9335 std::string ft = FPR(copy(ft_value));
9336 std::string s = IMMEDIATE(copy(s_value));
9337 std::string rs = GPR(copy(rs_value));
9339 return img::format("LWC1 %s, %s(%s)", ft, s, rs);
9346 * 3 2 1
9347 * 10987654321098765432109876543210
9348 * 001000 x1110000101
9349 * rt -----
9350 * rs -----
9351 * rd -----
9353 std::string NMD::LWC1_U12_(uint64 instruction)
9355 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9356 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
9357 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9359 std::string ft = FPR(copy(ft_value));
9360 std::string u = IMMEDIATE(copy(u_value));
9361 std::string rs = GPR(copy(rs_value));
9363 return img::format("LWC1 %s, %s(%s)", ft, u, rs);
9370 * 3 2 1
9371 * 10987654321098765432109876543210
9372 * 001000 x1110000101
9373 * rt -----
9374 * rs -----
9375 * rd -----
9377 std::string NMD::LWC1X(uint64 instruction)
9379 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9380 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
9381 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9383 std::string ft = FPR(copy(ft_value));
9384 std::string rs = GPR(copy(rs_value));
9385 std::string rt = GPR(copy(rt_value));
9387 return img::format("LWC1X %s, %s(%s)", ft, rs, rt);
9394 * 3 2 1
9395 * 10987654321098765432109876543210
9396 * 001000 x1110000101
9397 * rt -----
9398 * rs -----
9399 * rd -----
9401 std::string NMD::LWC1XS(uint64 instruction)
9403 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9404 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
9405 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9407 std::string ft = FPR(copy(ft_value));
9408 std::string rs = GPR(copy(rs_value));
9409 std::string rt = GPR(copy(rt_value));
9411 return img::format("LWC1XS %s, %s(%s)", ft, rs, rt);
9418 * 3 2 1
9419 * 10987654321098765432109876543210
9420 * 001000 x1110000101
9421 * rt -----
9422 * rs -----
9423 * rd -----
9425 std::string NMD::LWC2(uint64 instruction)
9427 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9428 uint64 ct_value = extract_ct_25_24_23_22_21(instruction);
9429 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9431 std::string ct = CPR(copy(ct_value));
9432 std::string s = IMMEDIATE(copy(s_value));
9433 std::string rs = GPR(copy(rs_value));
9435 return img::format("LWC2 %s, %s(%s)", ct, s, rs);
9442 * 3 2 1
9443 * 10987654321098765432109876543210
9444 * 001000 x1110000101
9445 * rt -----
9446 * rs -----
9447 * rd -----
9449 std::string NMD::LWE(uint64 instruction)
9451 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9452 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9453 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9455 std::string rt = GPR(copy(rt_value));
9456 std::string s = IMMEDIATE(copy(s_value));
9457 std::string rs = GPR(copy(rs_value));
9459 return img::format("LWE %s, %s(%s)", rt, s, rs);
9466 * 3 2 1
9467 * 10987654321098765432109876543210
9468 * 001000 x1110000101
9469 * rt -----
9470 * rs -----
9471 * rd -----
9473 std::string NMD::LWM(uint64 instruction)
9475 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9476 uint64 count3_value = extract_count3_14_13_12(instruction);
9477 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9478 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9480 std::string rt = GPR(copy(rt_value));
9481 std::string s = IMMEDIATE(copy(s_value));
9482 std::string rs = GPR(copy(rs_value));
9483 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
9485 return img::format("LWM %s, %s(%s), %s", rt, s, rs, count3);
9492 * 3 2 1
9493 * 10987654321098765432109876543210
9494 * 001000 x1110000101
9495 * rt -----
9496 * rs -----
9497 * rd -----
9499 std::string NMD::LWPC_48_(uint64 instruction)
9501 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
9502 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
9504 std::string rt = GPR(copy(rt_value));
9505 std::string s = ADDRESS(encode_s_from_address(s_value), 6);
9507 return img::format("LWPC %s, %s", rt, s);
9514 * 3 2 1
9515 * 10987654321098765432109876543210
9516 * 001000 x1110000101
9517 * rt -----
9518 * rs -----
9519 * rd -----
9521 std::string NMD::LWU_GP_(uint64 instruction)
9523 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9524 uint64 u_value = extr_uil2il2bs16Fmsb17(instruction);
9526 std::string rt = GPR(copy(rt_value));
9527 std::string u = IMMEDIATE(copy(u_value));
9529 return img::format("LWU %s, %s($%d)", rt, u, 28);
9536 * 3 2 1
9537 * 10987654321098765432109876543210
9538 * 001000 x1110000101
9539 * rt -----
9540 * rs -----
9541 * rd -----
9543 std::string NMD::LWU_S9_(uint64 instruction)
9545 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9546 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
9547 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9549 std::string rt = GPR(copy(rt_value));
9550 std::string s = IMMEDIATE(copy(s_value));
9551 std::string rs = GPR(copy(rs_value));
9553 return img::format("LWU %s, %s(%s)", rt, s, rs);
9560 * 3 2 1
9561 * 10987654321098765432109876543210
9562 * 001000 x1110000101
9563 * rt -----
9564 * rs -----
9565 * rd -----
9567 std::string NMD::LWU_U12_(uint64 instruction)
9569 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9570 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
9571 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9573 std::string rt = GPR(copy(rt_value));
9574 std::string u = IMMEDIATE(copy(u_value));
9575 std::string rs = GPR(copy(rs_value));
9577 return img::format("LWU %s, %s(%s)", rt, u, rs);
9584 * 3 2 1
9585 * 10987654321098765432109876543210
9586 * 001000 x1110000101
9587 * rt -----
9588 * rs -----
9589 * rd -----
9591 std::string NMD::LWUX(uint64 instruction)
9593 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9594 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
9595 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9597 std::string rd = GPR(copy(rd_value));
9598 std::string rs = GPR(copy(rs_value));
9599 std::string rt = GPR(copy(rt_value));
9601 return img::format("LWUX %s, %s(%s)", rd, rs, rt);
9608 * 3 2 1
9609 * 10987654321098765432109876543210
9610 * 001000 x1110000101
9611 * rt -----
9612 * rs -----
9613 * rd -----
9615 std::string NMD::LWUXS(uint64 instruction)
9617 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9618 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
9619 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9621 std::string rd = GPR(copy(rd_value));
9622 std::string rs = GPR(copy(rs_value));
9623 std::string rt = GPR(copy(rt_value));
9625 return img::format("LWUXS %s, %s(%s)", rd, rs, rt);
9632 * 3 2 1
9633 * 10987654321098765432109876543210
9634 * 001000 x1110000101
9635 * rt -----
9636 * rs -----
9637 * rd -----
9639 std::string NMD::LWX(uint64 instruction)
9641 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9642 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
9643 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9645 std::string rd = GPR(copy(rd_value));
9646 std::string rs = GPR(copy(rs_value));
9647 std::string rt = GPR(copy(rt_value));
9649 return img::format("LWX %s, %s(%s)", rd, rs, rt);
9656 * 3 2 1
9657 * 10987654321098765432109876543210
9658 * 001000 x1110000101
9659 * rt -----
9660 * rs -----
9661 * rd -----
9663 std::string NMD::LWXS_16_(uint64 instruction)
9665 uint64 rd3_value = extract_rd3_3_2_1(instruction);
9666 uint64 rt3_value = extract_rt3_9_8_7(instruction);
9667 uint64 rs3_value = extract_rs3_6_5_4(instruction);
9669 std::string rd3 = GPR(encode_gpr3(rd3_value));
9670 std::string rs3 = GPR(encode_gpr3(rs3_value));
9671 std::string rt3 = IMMEDIATE(encode_gpr3(rt3_value));
9673 return img::format("LWXS %s, %s(%s)", rd3, rs3, rt3);
9680 * 3 2 1
9681 * 10987654321098765432109876543210
9682 * 001000 x1110000101
9683 * rt -----
9684 * rs -----
9685 * rd -----
9687 std::string NMD::LWXS_32_(uint64 instruction)
9689 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9690 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
9691 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9693 std::string rd = GPR(copy(rd_value));
9694 std::string rs = GPR(copy(rs_value));
9695 std::string rt = GPR(copy(rt_value));
9697 return img::format("LWXS %s, %s(%s)", rd, rs, rt);
9704 * 3 2 1
9705 * 10987654321098765432109876543210
9706 * 001000 x1110000101
9707 * rt -----
9708 * rs -----
9709 * rd -----
9711 std::string NMD::MADD_DSP_(uint64 instruction)
9713 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9714 uint64 ac_value = extract_ac_13_12(instruction);
9715 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9717 std::string ac = AC(copy(ac_value));
9718 std::string rs = GPR(copy(rs_value));
9719 std::string rt = GPR(copy(rt_value));
9721 return img::format("MADD %s, %s, %s", ac, rs, rt);
9728 * 3 2 1
9729 * 10987654321098765432109876543210
9730 * 001000 x1110000101
9731 * rt -----
9732 * rs -----
9733 * rd -----
9735 std::string NMD::MADDF_D(uint64 instruction)
9737 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9738 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9739 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9741 std::string fd = FPR(copy(fd_value));
9742 std::string fs = FPR(copy(fs_value));
9743 std::string ft = FPR(copy(ft_value));
9745 return img::format("MADDF.D %s, %s, %s", fd, fs, ft);
9752 * 3 2 1
9753 * 10987654321098765432109876543210
9754 * 001000 x1110000101
9755 * rt -----
9756 * rs -----
9757 * rd -----
9759 std::string NMD::MADDF_S(uint64 instruction)
9761 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9762 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9763 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9765 std::string fd = FPR(copy(fd_value));
9766 std::string fs = FPR(copy(fs_value));
9767 std::string ft = FPR(copy(ft_value));
9769 return img::format("MADDF.S %s, %s, %s", fd, fs, ft);
9776 * 3 2 1
9777 * 10987654321098765432109876543210
9778 * 001000 x1110000101
9779 * rt -----
9780 * rs -----
9781 * rd -----
9783 std::string NMD::MADDU_DSP_(uint64 instruction)
9785 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9786 uint64 ac_value = extract_ac_13_12(instruction);
9787 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9789 std::string ac = AC(copy(ac_value));
9790 std::string rs = GPR(copy(rs_value));
9791 std::string rt = GPR(copy(rt_value));
9793 return img::format("MADDU %s, %s, %s", ac, rs, rt);
9800 * 3 2 1
9801 * 10987654321098765432109876543210
9802 * 001000 x1110000101
9803 * rt -----
9804 * rs -----
9805 * rd -----
9807 std::string NMD::MAQ_S_W_PHL(uint64 instruction)
9809 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9810 uint64 ac_value = extract_ac_13_12(instruction);
9811 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9813 std::string ac = AC(copy(ac_value));
9814 std::string rs = GPR(copy(rs_value));
9815 std::string rt = GPR(copy(rt_value));
9817 return img::format("MAQ_S.W.PHL %s, %s, %s", ac, rs, rt);
9824 * 3 2 1
9825 * 10987654321098765432109876543210
9826 * 001000 x1110000101
9827 * rt -----
9828 * rs -----
9829 * rd -----
9831 std::string NMD::MAQ_S_W_PHR(uint64 instruction)
9833 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9834 uint64 ac_value = extract_ac_13_12(instruction);
9835 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9837 std::string ac = AC(copy(ac_value));
9838 std::string rs = GPR(copy(rs_value));
9839 std::string rt = GPR(copy(rt_value));
9841 return img::format("MAQ_S.W.PHR %s, %s, %s", ac, rs, rt);
9848 * 3 2 1
9849 * 10987654321098765432109876543210
9850 * 001000 x1110000101
9851 * rt -----
9852 * rs -----
9853 * rd -----
9855 std::string NMD::MAQ_SA_W_PHL(uint64 instruction)
9857 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9858 uint64 ac_value = extract_ac_13_12(instruction);
9859 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9861 std::string ac = AC(copy(ac_value));
9862 std::string rs = GPR(copy(rs_value));
9863 std::string rt = GPR(copy(rt_value));
9865 return img::format("MAQ_SA.W.PHL %s, %s, %s", ac, rs, rt);
9872 * 3 2 1
9873 * 10987654321098765432109876543210
9874 * 001000 x1110000101
9875 * rt -----
9876 * rs -----
9877 * rd -----
9879 std::string NMD::MAQ_SA_W_PHR(uint64 instruction)
9881 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
9882 uint64 ac_value = extract_ac_13_12(instruction);
9883 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
9885 std::string ac = AC(copy(ac_value));
9886 std::string rs = GPR(copy(rs_value));
9887 std::string rt = GPR(copy(rt_value));
9889 return img::format("MAQ_SA.W.PHR %s, %s, %s", ac, rs, rt);
9896 * 3 2 1
9897 * 10987654321098765432109876543210
9898 * 001000 x1110000101
9899 * rt -----
9900 * rs -----
9901 * rd -----
9903 std::string NMD::MAX_D(uint64 instruction)
9905 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9906 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9907 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9909 std::string fd = FPR(copy(fd_value));
9910 std::string fs = FPR(copy(fs_value));
9911 std::string ft = FPR(copy(ft_value));
9913 return img::format("MAX.D %s, %s, %s", fd, fs, ft);
9920 * 3 2 1
9921 * 10987654321098765432109876543210
9922 * 001000 x1110000101
9923 * rt -----
9924 * rs -----
9925 * rd -----
9927 std::string NMD::MAX_S(uint64 instruction)
9929 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9930 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9931 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9933 std::string fd = FPR(copy(fd_value));
9934 std::string fs = FPR(copy(fs_value));
9935 std::string ft = FPR(copy(ft_value));
9937 return img::format("MAX.S %s, %s, %s", fd, fs, ft);
9944 * 3 2 1
9945 * 10987654321098765432109876543210
9946 * 001000 x1110000101
9947 * rt -----
9948 * rs -----
9949 * rd -----
9951 std::string NMD::MAXA_D(uint64 instruction)
9953 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9954 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9955 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9957 std::string fd = FPR(copy(fd_value));
9958 std::string fs = FPR(copy(fs_value));
9959 std::string ft = FPR(copy(ft_value));
9961 return img::format("MAXA.D %s, %s, %s", fd, fs, ft);
9968 * 3 2 1
9969 * 10987654321098765432109876543210
9970 * 001000 x1110000101
9971 * rt -----
9972 * rs -----
9973 * rd -----
9975 std::string NMD::MAXA_S(uint64 instruction)
9977 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
9978 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
9979 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
9981 std::string fd = FPR(copy(fd_value));
9982 std::string fs = FPR(copy(fs_value));
9983 std::string ft = FPR(copy(ft_value));
9985 return img::format("MAXA.S %s, %s, %s", fd, fs, ft);
9992 * 3 2 1
9993 * 10987654321098765432109876543210
9994 * 001000 x1110000101
9995 * rt -----
9996 * rs -----
9997 * rd -----
9999 std::string NMD::MFC0(uint64 instruction)
10001 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10002 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10003 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10005 std::string rt = GPR(copy(rt_value));
10006 std::string c0s = CPR(copy(c0s_value));
10007 std::string sel = IMMEDIATE(copy(sel_value));
10009 return img::format("MFC0 %s, %s, %s", rt, c0s, sel);
10016 * 3 2 1
10017 * 10987654321098765432109876543210
10018 * 001000 x1110000101
10019 * rt -----
10020 * rs -----
10021 * rd -----
10023 std::string NMD::MFC1(uint64 instruction)
10025 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10026 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10028 std::string rt = GPR(copy(rt_value));
10029 std::string fs = FPR(copy(fs_value));
10031 return img::format("MFC1 %s, %s", rt, fs);
10038 * 3 2 1
10039 * 10987654321098765432109876543210
10040 * 001000 x1110000101
10041 * rt -----
10042 * rs -----
10043 * rd -----
10045 std::string NMD::MFC2(uint64 instruction)
10047 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
10048 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10050 std::string rt = GPR(copy(rt_value));
10051 std::string cs = CPR(copy(cs_value));
10053 return img::format("MFC2 %s, %s", rt, cs);
10060 * 3 2 1
10061 * 10987654321098765432109876543210
10062 * 001000 x1110000101
10063 * rt -----
10064 * rs -----
10065 * rd -----
10067 std::string NMD::MFGC0(uint64 instruction)
10069 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10070 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10071 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10073 std::string rt = GPR(copy(rt_value));
10074 std::string c0s = CPR(copy(c0s_value));
10075 std::string sel = IMMEDIATE(copy(sel_value));
10077 return img::format("MFGC0 %s, %s, %s", rt, c0s, sel);
10084 * 3 2 1
10085 * 10987654321098765432109876543210
10086 * 001000 x1110000101
10087 * rt -----
10088 * rs -----
10089 * rd -----
10091 std::string NMD::MFHC0(uint64 instruction)
10093 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10094 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10095 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10097 std::string rt = GPR(copy(rt_value));
10098 std::string c0s = CPR(copy(c0s_value));
10099 std::string sel = IMMEDIATE(copy(sel_value));
10101 return img::format("MFHC0 %s, %s, %s", rt, c0s, sel);
10108 * 3 2 1
10109 * 10987654321098765432109876543210
10110 * 001000 x1110000101
10111 * rt -----
10112 * rs -----
10113 * rd -----
10115 std::string NMD::MFHC1(uint64 instruction)
10117 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10118 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10120 std::string rt = GPR(copy(rt_value));
10121 std::string fs = FPR(copy(fs_value));
10123 return img::format("MFHC1 %s, %s", rt, fs);
10130 * 3 2 1
10131 * 10987654321098765432109876543210
10132 * 001000 x1110000101
10133 * rt -----
10134 * rs -----
10135 * rd -----
10137 std::string NMD::MFHC2(uint64 instruction)
10139 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
10140 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10142 std::string rt = GPR(copy(rt_value));
10143 std::string cs = CPR(copy(cs_value));
10145 return img::format("MFHC2 %s, %s", rt, cs);
10152 * 3 2 1
10153 * 10987654321098765432109876543210
10154 * 001000 x1110000101
10155 * rt -----
10156 * rs -----
10157 * rd -----
10159 std::string NMD::MFHGC0(uint64 instruction)
10161 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10162 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10163 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10165 std::string rt = GPR(copy(rt_value));
10166 std::string c0s = CPR(copy(c0s_value));
10167 std::string sel = IMMEDIATE(copy(sel_value));
10169 return img::format("MFHGC0 %s, %s, %s", rt, c0s, sel);
10176 * 3 2 1
10177 * 10987654321098765432109876543210
10178 * 001000 x1110000101
10179 * rt -----
10180 * rs -----
10181 * rd -----
10183 std::string NMD::MFHI_DSP_(uint64 instruction)
10185 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10186 uint64 ac_value = extract_ac_13_12(instruction);
10188 std::string rt = GPR(copy(rt_value));
10189 std::string ac = AC(copy(ac_value));
10191 return img::format("MFHI %s, %s", rt, ac);
10198 * 3 2 1
10199 * 10987654321098765432109876543210
10200 * 001000 x1110000101
10201 * rt -----
10202 * rs -----
10203 * rd -----
10205 std::string NMD::MFHTR(uint64 instruction)
10207 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10208 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10209 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10210 uint64 u_value = extract_u_10(instruction);
10212 std::string rt = GPR(copy(rt_value));
10213 std::string c0s = IMMEDIATE(copy(c0s_value));
10214 std::string u = IMMEDIATE(copy(u_value));
10215 std::string sel = IMMEDIATE(copy(sel_value));
10217 return img::format("MFHTR %s, %s, %s, %s", rt, c0s, u, sel);
10224 * 3 2 1
10225 * 10987654321098765432109876543210
10226 * 001000 x1110000101
10227 * rt -----
10228 * rs -----
10229 * rd -----
10231 std::string NMD::MFLO_DSP_(uint64 instruction)
10233 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10234 uint64 ac_value = extract_ac_13_12(instruction);
10236 std::string rt = GPR(copy(rt_value));
10237 std::string ac = AC(copy(ac_value));
10239 return img::format("MFLO %s, %s", rt, ac);
10246 * 3 2 1
10247 * 10987654321098765432109876543210
10248 * 001000 x1110000101
10249 * rt -----
10250 * rs -----
10251 * rd -----
10253 std::string NMD::MFTR(uint64 instruction)
10255 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10256 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10257 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10258 uint64 u_value = extract_u_10(instruction);
10260 std::string rt = GPR(copy(rt_value));
10261 std::string c0s = IMMEDIATE(copy(c0s_value));
10262 std::string u = IMMEDIATE(copy(u_value));
10263 std::string sel = IMMEDIATE(copy(sel_value));
10265 return img::format("MFTR %s, %s, %s, %s", rt, c0s, u, sel);
10272 * 3 2 1
10273 * 10987654321098765432109876543210
10274 * 001000 x1110000101
10275 * rt -----
10276 * rs -----
10277 * rd -----
10279 std::string NMD::MIN_D(uint64 instruction)
10281 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10282 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10283 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10285 std::string fd = FPR(copy(fd_value));
10286 std::string fs = FPR(copy(fs_value));
10287 std::string ft = FPR(copy(ft_value));
10289 return img::format("MIN.D %s, %s, %s", fd, fs, ft);
10296 * 3 2 1
10297 * 10987654321098765432109876543210
10298 * 001000 x1110000101
10299 * rt -----
10300 * rs -----
10301 * rd -----
10303 std::string NMD::MIN_S(uint64 instruction)
10305 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10306 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10307 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10309 std::string fd = FPR(copy(fd_value));
10310 std::string fs = FPR(copy(fs_value));
10311 std::string ft = FPR(copy(ft_value));
10313 return img::format("MIN.S %s, %s, %s", fd, fs, ft);
10320 * 3 2 1
10321 * 10987654321098765432109876543210
10322 * 001000 x1110000101
10323 * rt -----
10324 * rs -----
10325 * rd -----
10327 std::string NMD::MINA_D(uint64 instruction)
10329 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10330 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10331 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10333 std::string fd = FPR(copy(fd_value));
10334 std::string fs = FPR(copy(fs_value));
10335 std::string ft = FPR(copy(ft_value));
10337 return img::format("MINA.D %s, %s, %s", fd, fs, ft);
10344 * 3 2 1
10345 * 10987654321098765432109876543210
10346 * 001000 x1110000101
10347 * rt -----
10348 * rs -----
10349 * rd -----
10351 std::string NMD::MINA_S(uint64 instruction)
10353 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10354 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10355 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10357 std::string fd = FPR(copy(fd_value));
10358 std::string fs = FPR(copy(fs_value));
10359 std::string ft = FPR(copy(ft_value));
10361 return img::format("MINA.S %s, %s, %s", fd, fs, ft);
10368 * 3 2 1
10369 * 10987654321098765432109876543210
10370 * 001000 x1110000101
10371 * rt -----
10372 * rs -----
10373 * rd -----
10375 std::string NMD::MOD(uint64 instruction)
10377 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10378 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
10379 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10381 std::string rd = GPR(copy(rd_value));
10382 std::string rs = GPR(copy(rs_value));
10383 std::string rt = GPR(copy(rt_value));
10385 return img::format("MOD %s, %s, %s", rd, rs, rt);
10392 * 3 2 1
10393 * 10987654321098765432109876543210
10394 * 001000 x1110000101
10395 * rt -----
10396 * rs -----
10397 * rd -----
10399 std::string NMD::MODSUB(uint64 instruction)
10401 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10402 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
10403 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10405 std::string rd = GPR(copy(rd_value));
10406 std::string rs = GPR(copy(rs_value));
10407 std::string rt = GPR(copy(rt_value));
10409 return img::format("MODSUB %s, %s, %s", rd, rs, rt);
10416 * 3 2 1
10417 * 10987654321098765432109876543210
10418 * 001000 x1110000101
10419 * rt -----
10420 * rs -----
10421 * rd -----
10423 std::string NMD::MODU(uint64 instruction)
10425 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10426 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
10427 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10429 std::string rd = GPR(copy(rd_value));
10430 std::string rs = GPR(copy(rs_value));
10431 std::string rt = GPR(copy(rt_value));
10433 return img::format("MODU %s, %s, %s", rd, rs, rt);
10440 * 3 2 1
10441 * 10987654321098765432109876543210
10442 * 001000 x1110000101
10443 * rt -----
10444 * rs -----
10445 * rd -----
10447 std::string NMD::MOV_D(uint64 instruction)
10449 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10450 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10452 std::string ft = FPR(copy(ft_value));
10453 std::string fs = FPR(copy(fs_value));
10455 return img::format("MOV.D %s, %s", ft, fs);
10462 * 3 2 1
10463 * 10987654321098765432109876543210
10464 * 001000 x1110000101
10465 * rt -----
10466 * rs -----
10467 * rd -----
10469 std::string NMD::MOV_S(uint64 instruction)
10471 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10472 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10474 std::string ft = FPR(copy(ft_value));
10475 std::string fs = FPR(copy(fs_value));
10477 return img::format("MOV.S %s, %s", ft, fs);
10484 * 3 2 1
10485 * 10987654321098765432109876543210
10486 * 001000 x1110000101
10487 * rt -----
10488 * rs -----
10489 * rd -----
10491 std::string NMD::MOVE_BALC(uint64 instruction)
10493 uint64 rd1_value = extract_rdl_25_24(instruction);
10494 int64 s_value = extr_sil0il21bs1_il1il1bs20Tmsb21(instruction);
10495 uint64 rtz4_value = extract_rtz4_27_26_25_23_22_21(instruction);
10497 std::string rd1 = GPR(encode_rd1_from_rd(rd1_value));
10498 std::string rtz4 = GPR(encode_gpr4_zero(rtz4_value));
10499 std::string s = ADDRESS(encode_s_from_address(s_value), 4);
10501 return img::format("MOVE.BALC %s, %s, %s", rd1, rtz4, s);
10508 * 3 2 1
10509 * 10987654321098765432109876543210
10510 * 001000 x1110000101
10511 * rt -----
10512 * rs -----
10513 * rd -----
10515 std::string NMD::MOVEP(uint64 instruction)
10517 uint64 rsz4_value = extract_rsz4_4_2_1_0(instruction);
10518 uint64 rtz4_value = extract_rtz4_9_7_6_5(instruction);
10519 uint64 rd2_value = extract_rd2_3_8(instruction);
10521 std::string rd2 = GPR(encode_rd2_reg1(rd2_value));
10522 std::string re2 = GPR(encode_rd2_reg2(rd2_value));
10523 /* !!!!!!!!!! - no conversion function */
10524 std::string rsz4 = GPR(encode_gpr4_zero(rsz4_value));
10525 std::string rtz4 = GPR(encode_gpr4_zero(rtz4_value));
10527 return img::format("MOVEP %s, %s, %s, %s", rd2, re2, rsz4, rtz4);
10528 /* hand edited */
10535 * 3 2 1
10536 * 10987654321098765432109876543210
10537 * 001000 x1110000101
10538 * rt -----
10539 * rs -----
10540 * rd -----
10542 std::string NMD::MOVEP_REV_(uint64 instruction)
10544 uint64 rs4_value = extract_rs4_4_2_1_0(instruction);
10545 uint64 rt4_value = extract_rt4_9_7_6_5(instruction);
10546 uint64 rd2_value = extract_rd2_3_8(instruction);
10548 std::string rs4 = GPR(encode_gpr4(rs4_value));
10549 std::string rt4 = GPR(encode_gpr4(rt4_value));
10550 std::string rd2 = GPR(encode_rd2_reg1(rd2_value));
10551 std::string rs2 = GPR(encode_rd2_reg2(rd2_value));
10552 /* !!!!!!!!!! - no conversion function */
10554 return img::format("MOVEP %s, %s, %s, %s", rs4, rt4, rd2, rs2);
10555 /* hand edited */
10560 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10562 * 3 2 1
10563 * 10987654321098765432109876543210
10564 * 001000 00010001101
10565 * rt -----
10566 * rs -----
10567 * rd -----
10569 std::string NMD::MOVE(uint64 instruction)
10571 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
10572 uint64 rs_value = extract_rs_4_3_2_1_0(instruction);
10574 std::string rt = GPR(copy(rt_value));
10575 std::string rs = GPR(copy(rs_value));
10577 return img::format("MOVE %s, %s", rt, rs);
10582 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10584 * 3 2 1
10585 * 10987654321098765432109876543210
10586 * 001000 00010001101
10587 * rt -----
10588 * rs -----
10589 * rd -----
10591 std::string NMD::MOVN(uint64 instruction)
10593 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10594 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
10595 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10597 std::string rd = GPR(copy(rd_value));
10598 std::string rs = GPR(copy(rs_value));
10599 std::string rt = GPR(copy(rt_value));
10601 return img::format("MOVN %s, %s, %s", rd, rs, rt);
10606 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10608 * 3 2 1
10609 * 10987654321098765432109876543210
10610 * 001000 00010001101
10611 * rt -----
10612 * rs -----
10613 * rd -----
10615 std::string NMD::MOVZ(uint64 instruction)
10617 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10618 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
10619 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10621 std::string rd = GPR(copy(rd_value));
10622 std::string rs = GPR(copy(rs_value));
10623 std::string rt = GPR(copy(rt_value));
10625 return img::format("MOVZ %s, %s, %s", rd, rs, rt);
10630 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10632 * 3 2 1
10633 * 10987654321098765432109876543210
10634 * 001000 00010001101
10635 * rt -----
10636 * rs -----
10637 * rd -----
10639 std::string NMD::MSUB_DSP_(uint64 instruction)
10641 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10642 uint64 ac_value = extract_ac_13_12(instruction);
10643 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10645 std::string ac = AC(copy(ac_value));
10646 std::string rs = GPR(copy(rs_value));
10647 std::string rt = GPR(copy(rt_value));
10649 return img::format("MSUB %s, %s, %s", ac, rs, rt);
10654 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10656 * 3 2 1
10657 * 10987654321098765432109876543210
10658 * 001000 00010001101
10659 * rt -----
10660 * rs -----
10661 * rd -----
10663 std::string NMD::MSUBF_D(uint64 instruction)
10665 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10666 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10667 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10669 std::string fd = FPR(copy(fd_value));
10670 std::string fs = FPR(copy(fs_value));
10671 std::string ft = FPR(copy(ft_value));
10673 return img::format("MSUBF.D %s, %s, %s", fd, fs, ft);
10678 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10680 * 3 2 1
10681 * 10987654321098765432109876543210
10682 * 001000 00010001101
10683 * rt -----
10684 * rs -----
10685 * rd -----
10687 std::string NMD::MSUBF_S(uint64 instruction)
10689 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10690 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
10691 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
10693 std::string fd = FPR(copy(fd_value));
10694 std::string fs = FPR(copy(fs_value));
10695 std::string ft = FPR(copy(ft_value));
10697 return img::format("MSUBF.S %s, %s, %s", fd, fs, ft);
10702 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10704 * 3 2 1
10705 * 10987654321098765432109876543210
10706 * 001000 00010001101
10707 * rt -----
10708 * rs -----
10709 * rd -----
10711 std::string NMD::MSUBU_DSP_(uint64 instruction)
10713 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10714 uint64 ac_value = extract_ac_13_12(instruction);
10715 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10717 std::string ac = AC(copy(ac_value));
10718 std::string rs = GPR(copy(rs_value));
10719 std::string rt = GPR(copy(rt_value));
10721 return img::format("MSUBU %s, %s, %s", ac, rs, rt);
10726 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10728 * 3 2 1
10729 * 10987654321098765432109876543210
10730 * 001000 00010001101
10731 * rt -----
10732 * rs -----
10733 * rd -----
10735 std::string NMD::MTC0(uint64 instruction)
10737 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10738 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10739 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10741 std::string rt = GPR(copy(rt_value));
10742 std::string c0s = CPR(copy(c0s_value));
10743 std::string sel = IMMEDIATE(copy(sel_value));
10745 return img::format("MTC0 %s, %s, %s", rt, c0s, sel);
10750 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10752 * 3 2 1
10753 * 10987654321098765432109876543210
10754 * 001000 00010001101
10755 * rt -----
10756 * rs -----
10757 * rd -----
10759 std::string NMD::MTC1(uint64 instruction)
10761 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10762 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10764 std::string rt = GPR(copy(rt_value));
10765 std::string fs = FPR(copy(fs_value));
10767 return img::format("MTC1 %s, %s", rt, fs);
10772 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10774 * 3 2 1
10775 * 10987654321098765432109876543210
10776 * 001000 00010001101
10777 * rt -----
10778 * rs -----
10779 * rd -----
10781 std::string NMD::MTC2(uint64 instruction)
10783 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
10784 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10786 std::string rt = GPR(copy(rt_value));
10787 std::string cs = CPR(copy(cs_value));
10789 return img::format("MTC2 %s, %s", rt, cs);
10794 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10796 * 3 2 1
10797 * 10987654321098765432109876543210
10798 * 001000 00010001101
10799 * rt -----
10800 * rs -----
10801 * rd -----
10803 std::string NMD::MTGC0(uint64 instruction)
10805 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10806 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10807 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10809 std::string rt = GPR(copy(rt_value));
10810 std::string c0s = CPR(copy(c0s_value));
10811 std::string sel = IMMEDIATE(copy(sel_value));
10813 return img::format("MTGC0 %s, %s, %s", rt, c0s, sel);
10818 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10820 * 3 2 1
10821 * 10987654321098765432109876543210
10822 * 001000 00010001101
10823 * rt -----
10824 * rs -----
10825 * rd -----
10827 std::string NMD::MTHC0(uint64 instruction)
10829 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10830 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10831 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10833 std::string rt = GPR(copy(rt_value));
10834 std::string c0s = CPR(copy(c0s_value));
10835 std::string sel = IMMEDIATE(copy(sel_value));
10837 return img::format("MTHC0 %s, %s, %s", rt, c0s, sel);
10842 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10844 * 3 2 1
10845 * 10987654321098765432109876543210
10846 * 001000 00010001101
10847 * rt -----
10848 * rs -----
10849 * rd -----
10851 std::string NMD::MTHC1(uint64 instruction)
10853 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10854 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
10856 std::string rt = GPR(copy(rt_value));
10857 std::string fs = FPR(copy(fs_value));
10859 return img::format("MTHC1 %s, %s", rt, fs);
10864 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10866 * 3 2 1
10867 * 10987654321098765432109876543210
10868 * 001000 00010001101
10869 * rt -----
10870 * rs -----
10871 * rd -----
10873 std::string NMD::MTHC2(uint64 instruction)
10875 uint64 cs_value = extract_cs_20_19_18_17_16(instruction);
10876 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10878 std::string rt = GPR(copy(rt_value));
10879 std::string cs = CPR(copy(cs_value));
10881 return img::format("MTHC2 %s, %s", rt, cs);
10886 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10888 * 3 2 1
10889 * 10987654321098765432109876543210
10890 * 001000 00010001101
10891 * rt -----
10892 * rs -----
10893 * rd -----
10895 std::string NMD::MTHGC0(uint64 instruction)
10897 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10898 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10899 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10901 std::string rt = GPR(copy(rt_value));
10902 std::string c0s = CPR(copy(c0s_value));
10903 std::string sel = IMMEDIATE(copy(sel_value));
10905 return img::format("MTHGC0 %s, %s, %s", rt, c0s, sel);
10910 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10912 * 3 2 1
10913 * 10987654321098765432109876543210
10914 * 001000 00010001101
10915 * rt -----
10916 * rs -----
10917 * rd -----
10919 std::string NMD::MTHI_DSP_(uint64 instruction)
10921 uint64 ac_value = extract_ac_13_12(instruction);
10922 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10924 std::string rs = GPR(copy(rs_value));
10925 std::string ac = AC(copy(ac_value));
10927 return img::format("MTHI %s, %s", rs, ac);
10932 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10934 * 3 2 1
10935 * 10987654321098765432109876543210
10936 * 001000 00010001101
10937 * rt -----
10938 * rs -----
10939 * rd -----
10941 std::string NMD::MTHLIP(uint64 instruction)
10943 uint64 ac_value = extract_ac_13_12(instruction);
10944 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10946 std::string rs = GPR(copy(rs_value));
10947 std::string ac = AC(copy(ac_value));
10949 return img::format("MTHLIP %s, %s", rs, ac);
10954 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10956 * 3 2 1
10957 * 10987654321098765432109876543210
10958 * 001000 00010001101
10959 * rt -----
10960 * rs -----
10961 * rd -----
10963 std::string NMD::MTHTR(uint64 instruction)
10965 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
10966 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
10967 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
10968 uint64 u_value = extract_u_10(instruction);
10970 std::string rt = GPR(copy(rt_value));
10971 std::string c0s = IMMEDIATE(copy(c0s_value));
10972 std::string u = IMMEDIATE(copy(u_value));
10973 std::string sel = IMMEDIATE(copy(sel_value));
10975 return img::format("MTHTR %s, %s, %s, %s", rt, c0s, u, sel);
10980 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10982 * 3 2 1
10983 * 10987654321098765432109876543210
10984 * 001000 00010001101
10985 * rt -----
10986 * rs -----
10987 * rd -----
10989 std::string NMD::MTLO_DSP_(uint64 instruction)
10991 uint64 ac_value = extract_ac_13_12(instruction);
10992 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
10994 std::string rs = GPR(copy(rs_value));
10995 std::string ac = AC(copy(ac_value));
10997 return img::format("MTLO %s, %s", rs, ac);
11002 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11004 * 3 2 1
11005 * 10987654321098765432109876543210
11006 * 001000 00010001101
11007 * rt -----
11008 * rs -----
11009 * rd -----
11011 std::string NMD::MTTR(uint64 instruction)
11013 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11014 uint64 c0s_value = extract_c0s_20_19_18_17_16(instruction);
11015 uint64 sel_value = extract_sel_15_14_13_12_11(instruction);
11016 uint64 u_value = extract_u_10(instruction);
11018 std::string rt = GPR(copy(rt_value));
11019 std::string c0s = IMMEDIATE(copy(c0s_value));
11020 std::string u = IMMEDIATE(copy(u_value));
11021 std::string sel = IMMEDIATE(copy(sel_value));
11023 return img::format("MTTR %s, %s, %s, %s", rt, c0s, u, sel);
11028 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11030 * 3 2 1
11031 * 10987654321098765432109876543210
11032 * 001000 00010001101
11033 * rt -----
11034 * rs -----
11035 * rd -----
11037 std::string NMD::MUH(uint64 instruction)
11039 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11040 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11041 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11043 std::string rd = GPR(copy(rd_value));
11044 std::string rs = GPR(copy(rs_value));
11045 std::string rt = GPR(copy(rt_value));
11047 return img::format("MUH %s, %s, %s", rd, rs, rt);
11052 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11054 * 3 2 1
11055 * 10987654321098765432109876543210
11056 * 001000 00010001101
11057 * rt -----
11058 * rs -----
11059 * rd -----
11061 std::string NMD::MUHU(uint64 instruction)
11063 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11064 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11065 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11067 std::string rd = GPR(copy(rd_value));
11068 std::string rs = GPR(copy(rs_value));
11069 std::string rt = GPR(copy(rt_value));
11071 return img::format("MUHU %s, %s, %s", rd, rs, rt);
11076 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11078 * 3 2 1
11079 * 10987654321098765432109876543210
11080 * 001000 00010001101
11081 * rt -----
11082 * rs -----
11083 * rd -----
11085 std::string NMD::MUL_32_(uint64 instruction)
11087 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11088 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11089 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11091 std::string rd = GPR(copy(rd_value));
11092 std::string rs = GPR(copy(rs_value));
11093 std::string rt = GPR(copy(rt_value));
11095 return img::format("MUL %s, %s, %s", rd, rs, rt);
11100 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11102 * 3 2 1
11103 * 10987654321098765432109876543210
11104 * 001000 00010001101
11105 * rt -----
11106 * rs -----
11107 * rd -----
11109 std::string NMD::MUL_4X4_(uint64 instruction)
11111 uint64 rs4_value = extract_rs4_4_2_1_0(instruction);
11112 uint64 rt4_value = extract_rt4_9_7_6_5(instruction);
11114 std::string rs4 = GPR(encode_gpr4(rs4_value));
11115 std::string rt4 = GPR(encode_gpr4(rt4_value));
11117 return img::format("MUL %s, %s", rs4, rt4);
11122 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11124 * 3 2 1
11125 * 10987654321098765432109876543210
11126 * 001000 00010001101
11127 * rt -----
11128 * rs -----
11129 * rd -----
11131 std::string NMD::MUL_D(uint64 instruction)
11133 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
11134 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
11135 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
11137 std::string fd = FPR(copy(fd_value));
11138 std::string fs = FPR(copy(fs_value));
11139 std::string ft = FPR(copy(ft_value));
11141 return img::format("MUL.D %s, %s, %s", fd, fs, ft);
11146 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11148 * 3 2 1
11149 * 10987654321098765432109876543210
11150 * 001000 00010001101
11151 * rt -----
11152 * rs -----
11153 * rd -----
11155 std::string NMD::MUL_PH(uint64 instruction)
11157 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11158 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11159 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11161 std::string rd = GPR(copy(rd_value));
11162 std::string rs = GPR(copy(rs_value));
11163 std::string rt = GPR(copy(rt_value));
11165 return img::format("MUL.PH %s, %s, %s", rd, rs, rt);
11170 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11172 * 3 2 1
11173 * 10987654321098765432109876543210
11174 * 001000 00010001101
11175 * rt -----
11176 * rs -----
11177 * rd -----
11179 std::string NMD::MUL_S_PH(uint64 instruction)
11181 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11182 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11183 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11185 std::string rd = GPR(copy(rd_value));
11186 std::string rs = GPR(copy(rs_value));
11187 std::string rt = GPR(copy(rt_value));
11189 return img::format("MUL_S.PH %s, %s, %s", rd, rs, rt);
11194 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11196 * 3 2 1
11197 * 10987654321098765432109876543210
11198 * 001000 00010001101
11199 * rt -----
11200 * rs -----
11201 * rd -----
11203 std::string NMD::MUL_S(uint64 instruction)
11205 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
11206 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
11207 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
11209 std::string fd = FPR(copy(fd_value));
11210 std::string fs = FPR(copy(fs_value));
11211 std::string ft = FPR(copy(ft_value));
11213 return img::format("MUL.S %s, %s, %s", fd, fs, ft);
11218 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11220 * 3 2 1
11221 * 10987654321098765432109876543210
11222 * 001000 00010001101
11223 * rt -----
11224 * rs -----
11225 * rd -----
11227 std::string NMD::MULEQ_S_W_PHL(uint64 instruction)
11229 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11230 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11231 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11233 std::string rd = GPR(copy(rd_value));
11234 std::string rs = GPR(copy(rs_value));
11235 std::string rt = GPR(copy(rt_value));
11237 return img::format("MULEQ_S.W.PHL %s, %s, %s", rd, rs, rt);
11242 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11244 * 3 2 1
11245 * 10987654321098765432109876543210
11246 * 001000 00010001101
11247 * rt -----
11248 * rs -----
11249 * rd -----
11251 std::string NMD::MULEQ_S_W_PHR(uint64 instruction)
11253 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11254 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11255 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11257 std::string rd = GPR(copy(rd_value));
11258 std::string rs = GPR(copy(rs_value));
11259 std::string rt = GPR(copy(rt_value));
11261 return img::format("MULEQ_S.W.PHR %s, %s, %s", rd, rs, rt);
11266 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11268 * 3 2 1
11269 * 10987654321098765432109876543210
11270 * 001000 00010001101
11271 * rt -----
11272 * rs -----
11273 * rd -----
11275 std::string NMD::MULEU_S_PH_QBL(uint64 instruction)
11277 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11278 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11279 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11281 std::string rd = GPR(copy(rd_value));
11282 std::string rs = GPR(copy(rs_value));
11283 std::string rt = GPR(copy(rt_value));
11285 return img::format("MULEU_S.PH.QBL %s, %s, %s", rd, rs, rt);
11290 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11292 * 3 2 1
11293 * 10987654321098765432109876543210
11294 * 001000 00010001101
11295 * rt -----
11296 * rs -----
11297 * rd -----
11299 std::string NMD::MULEU_S_PH_QBR(uint64 instruction)
11301 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11302 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11303 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11305 std::string rd = GPR(copy(rd_value));
11306 std::string rs = GPR(copy(rs_value));
11307 std::string rt = GPR(copy(rt_value));
11309 return img::format("MULEU_S.PH.QBR %s, %s, %s", rd, rs, rt);
11314 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11316 * 3 2 1
11317 * 10987654321098765432109876543210
11318 * 001000 00010001101
11319 * rt -----
11320 * rs -----
11321 * rd -----
11323 std::string NMD::MULQ_RS_PH(uint64 instruction)
11325 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11326 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11327 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11329 std::string rd = GPR(copy(rd_value));
11330 std::string rs = GPR(copy(rs_value));
11331 std::string rt = GPR(copy(rt_value));
11333 return img::format("MULQ_RS.PH %s, %s, %s", rd, rs, rt);
11338 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11340 * 3 2 1
11341 * 10987654321098765432109876543210
11342 * 001000 00010001101
11343 * rt -----
11344 * rs -----
11345 * rd -----
11347 std::string NMD::MULQ_RS_W(uint64 instruction)
11349 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11350 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11351 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11353 std::string rd = GPR(copy(rd_value));
11354 std::string rs = GPR(copy(rs_value));
11355 std::string rt = GPR(copy(rt_value));
11357 return img::format("MULQ_RS.W %s, %s, %s", rd, rs, rt);
11362 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11364 * 3 2 1
11365 * 10987654321098765432109876543210
11366 * 001000 00010001101
11367 * rt -----
11368 * rs -----
11369 * rd -----
11371 std::string NMD::MULQ_S_PH(uint64 instruction)
11373 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11374 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11375 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11377 std::string rd = GPR(copy(rd_value));
11378 std::string rs = GPR(copy(rs_value));
11379 std::string rt = GPR(copy(rt_value));
11381 return img::format("MULQ_S.PH %s, %s, %s", rd, rs, rt);
11386 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11388 * 3 2 1
11389 * 10987654321098765432109876543210
11390 * 001000 00010001101
11391 * rt -----
11392 * rs -----
11393 * rd -----
11395 std::string NMD::MULQ_S_W(uint64 instruction)
11397 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11398 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11399 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11401 std::string rd = GPR(copy(rd_value));
11402 std::string rs = GPR(copy(rs_value));
11403 std::string rt = GPR(copy(rt_value));
11405 return img::format("MULQ_S.W %s, %s, %s", rd, rs, rt);
11410 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11412 * 3 2 1
11413 * 10987654321098765432109876543210
11414 * 001000 00010001101
11415 * rt -----
11416 * rs -----
11417 * rd -----
11419 std::string NMD::MULSA_W_PH(uint64 instruction)
11421 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11422 uint64 ac_value = extract_ac_13_12(instruction);
11423 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11425 std::string ac = AC(copy(ac_value));
11426 std::string rs = GPR(copy(rs_value));
11427 std::string rt = GPR(copy(rt_value));
11429 return img::format("MULSA.W.PH %s, %s, %s", ac, rs, rt);
11434 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11436 * 3 2 1
11437 * 10987654321098765432109876543210
11438 * 001000 00010001101
11439 * rt -----
11440 * rs -----
11441 * rd -----
11443 std::string NMD::MULSAQ_S_W_PH(uint64 instruction)
11445 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11446 uint64 ac_value = extract_ac_13_12(instruction);
11447 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11449 std::string ac = AC(copy(ac_value));
11450 std::string rs = GPR(copy(rs_value));
11451 std::string rt = GPR(copy(rt_value));
11453 return img::format("MULSAQ_S.W.PH %s, %s, %s", ac, rs, rt);
11458 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11460 * 3 2 1
11461 * 10987654321098765432109876543210
11462 * 001000 00010001101
11463 * rt -----
11464 * rs -----
11465 * rd -----
11467 std::string NMD::MULT_DSP_(uint64 instruction)
11469 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11470 uint64 ac_value = extract_ac_13_12(instruction);
11471 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11473 std::string ac = AC(copy(ac_value));
11474 std::string rs = GPR(copy(rs_value));
11475 std::string rt = GPR(copy(rt_value));
11477 return img::format("MULT %s, %s, %s", ac, rs, rt);
11482 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11484 * 3 2 1
11485 * 10987654321098765432109876543210
11486 * 001000 00010001101
11487 * rt -----
11488 * rs -----
11489 * rd -----
11491 std::string NMD::MULTU_DSP_(uint64 instruction)
11493 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11494 uint64 ac_value = extract_ac_13_12(instruction);
11495 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11497 std::string ac = AC(copy(ac_value));
11498 std::string rs = GPR(copy(rs_value));
11499 std::string rt = GPR(copy(rt_value));
11501 return img::format("MULTU %s, %s, %s", ac, rs, rt);
11506 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11508 * 3 2 1
11509 * 10987654321098765432109876543210
11510 * 001000 00010001101
11511 * rt -----
11512 * rs -----
11513 * rd -----
11515 std::string NMD::MULU(uint64 instruction)
11517 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11518 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11519 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11521 std::string rd = GPR(copy(rd_value));
11522 std::string rs = GPR(copy(rs_value));
11523 std::string rt = GPR(copy(rt_value));
11525 return img::format("MULU %s, %s, %s", rd, rs, rt);
11530 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11532 * 3 2 1
11533 * 10987654321098765432109876543210
11534 * 001000 00010001101
11535 * rt -----
11536 * rs -----
11537 * rd -----
11539 std::string NMD::NEG_D(uint64 instruction)
11541 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
11542 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
11544 std::string ft = FPR(copy(ft_value));
11545 std::string fs = FPR(copy(fs_value));
11547 return img::format("NEG.D %s, %s", ft, fs);
11552 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11554 * 3 2 1
11555 * 10987654321098765432109876543210
11556 * 001000 00010001101
11557 * rt -----
11558 * rs -----
11559 * rd -----
11561 std::string NMD::NEG_S(uint64 instruction)
11563 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
11564 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
11566 std::string ft = FPR(copy(ft_value));
11567 std::string fs = FPR(copy(fs_value));
11569 return img::format("NEG.S %s, %s", ft, fs);
11574 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11576 * 3 2 1
11577 * 10987654321098765432109876543210
11578 * 001000 00010001101
11579 * rt -----
11580 * rs -----
11581 * rd -----
11583 std::string NMD::NOP_16_(uint64 instruction)
11585 (void)instruction;
11587 return "NOP ";
11592 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11594 * 3 2 1
11595 * 10987654321098765432109876543210
11596 * 001000 00010001101
11597 * rt -----
11598 * rs -----
11599 * rd -----
11601 std::string NMD::NOP_32_(uint64 instruction)
11603 (void)instruction;
11605 return "NOP ";
11610 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11612 * 3 2 1
11613 * 10987654321098765432109876543210
11614 * 001000 00010001101
11615 * rt -----
11616 * rs -----
11617 * rd -----
11619 std::string NMD::NOR(uint64 instruction)
11621 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11622 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11623 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11625 std::string rd = GPR(copy(rd_value));
11626 std::string rs = GPR(copy(rs_value));
11627 std::string rt = GPR(copy(rt_value));
11629 return img::format("NOR %s, %s, %s", rd, rs, rt);
11634 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11636 * 3 2 1
11637 * 10987654321098765432109876543210
11638 * 001000 00010001101
11639 * rt -----
11640 * rs -----
11641 * rd -----
11643 std::string NMD::NOT_16_(uint64 instruction)
11645 uint64 rt3_value = extract_rt3_9_8_7(instruction);
11646 uint64 rs3_value = extract_rs3_6_5_4(instruction);
11648 std::string rt3 = GPR(encode_gpr3(rt3_value));
11649 std::string rs3 = GPR(encode_gpr3(rs3_value));
11651 return img::format("NOT %s, %s", rt3, rs3);
11656 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11658 * 3 2 1
11659 * 10987654321098765432109876543210
11660 * 001000 00010001101
11661 * rt -----
11662 * rs -----
11663 * rd -----
11665 std::string NMD::OR_16_(uint64 instruction)
11667 uint64 rt3_value = extract_rt3_9_8_7(instruction);
11668 uint64 rs3_value = extract_rs3_6_5_4(instruction);
11670 std::string rs3 = GPR(encode_gpr3(rs3_value));
11671 std::string rt3 = GPR(encode_gpr3(rt3_value));
11673 return img::format("OR %s, %s", rs3, rt3);
11678 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11680 * 3 2 1
11681 * 10987654321098765432109876543210
11682 * 001000 00010001101
11683 * rt -----
11684 * rs -----
11685 * rd -----
11687 std::string NMD::OR_32_(uint64 instruction)
11689 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11690 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11691 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11693 std::string rd = GPR(copy(rd_value));
11694 std::string rs = GPR(copy(rs_value));
11695 std::string rt = GPR(copy(rt_value));
11697 return img::format("OR %s, %s, %s", rd, rs, rt);
11702 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11704 * 3 2 1
11705 * 10987654321098765432109876543210
11706 * 001000 00010001101
11707 * rt -----
11708 * rs -----
11709 * rd -----
11711 std::string NMD::ORI(uint64 instruction)
11713 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11714 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
11715 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11717 std::string rt = GPR(copy(rt_value));
11718 std::string rs = GPR(copy(rs_value));
11719 std::string u = IMMEDIATE(copy(u_value));
11721 return img::format("ORI %s, %s, %s", rt, rs, u);
11726 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11728 * 3 2 1
11729 * 10987654321098765432109876543210
11730 * 001000 00010001101
11731 * rt -----
11732 * rs -----
11733 * rd -----
11735 std::string NMD::PACKRL_PH(uint64 instruction)
11737 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11738 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11739 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11741 std::string rd = GPR(copy(rd_value));
11742 std::string rs = GPR(copy(rs_value));
11743 std::string rt = GPR(copy(rt_value));
11745 return img::format("PACKRL.PH %s, %s, %s", rd, rs, rt);
11750 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11752 * 3 2 1
11753 * 10987654321098765432109876543210
11754 * 001000 00010001101
11755 * rt -----
11756 * rs -----
11757 * rd -----
11759 std::string NMD::PAUSE(uint64 instruction)
11761 (void)instruction;
11763 return "PAUSE ";
11768 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11770 * 3 2 1
11771 * 10987654321098765432109876543210
11772 * 001000 00010001101
11773 * rt -----
11774 * rs -----
11775 * rd -----
11777 std::string NMD::PICK_PH(uint64 instruction)
11779 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11780 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11781 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11783 std::string rd = GPR(copy(rd_value));
11784 std::string rs = GPR(copy(rs_value));
11785 std::string rt = GPR(copy(rt_value));
11787 return img::format("PICK.PH %s, %s, %s", rd, rs, rt);
11792 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11794 * 3 2 1
11795 * 10987654321098765432109876543210
11796 * 001000 00010001101
11797 * rt -----
11798 * rs -----
11799 * rd -----
11801 std::string NMD::PICK_QB(uint64 instruction)
11803 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11804 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
11805 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11807 std::string rd = GPR(copy(rd_value));
11808 std::string rs = GPR(copy(rs_value));
11809 std::string rt = GPR(copy(rt_value));
11811 return img::format("PICK.QB %s, %s, %s", rd, rs, rt);
11816 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11818 * 3 2 1
11819 * 10987654321098765432109876543210
11820 * 001000 00010001101
11821 * rt -----
11822 * rs -----
11823 * rd -----
11825 std::string NMD::PRECEQ_W_PHL(uint64 instruction)
11827 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11828 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11830 std::string rt = GPR(copy(rt_value));
11831 std::string rs = GPR(copy(rs_value));
11833 return img::format("PRECEQ.W.PHL %s, %s", rt, rs);
11838 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11840 * 3 2 1
11841 * 10987654321098765432109876543210
11842 * 001000 00010001101
11843 * rt -----
11844 * rs -----
11845 * rd -----
11847 std::string NMD::PRECEQ_W_PHR(uint64 instruction)
11849 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11850 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11852 std::string rt = GPR(copy(rt_value));
11853 std::string rs = GPR(copy(rs_value));
11855 return img::format("PRECEQ.W.PHR %s, %s", rt, rs);
11860 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11862 * 3 2 1
11863 * 10987654321098765432109876543210
11864 * 001000 00010001101
11865 * rt -----
11866 * rs -----
11867 * rd -----
11869 std::string NMD::PRECEQU_PH_QBLA(uint64 instruction)
11871 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11872 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11874 std::string rt = GPR(copy(rt_value));
11875 std::string rs = GPR(copy(rs_value));
11877 return img::format("PRECEQU.PH.QBLA %s, %s", rt, rs);
11882 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11884 * 3 2 1
11885 * 10987654321098765432109876543210
11886 * 001000 00010001101
11887 * rt -----
11888 * rs -----
11889 * rd -----
11891 std::string NMD::PRECEQU_PH_QBL(uint64 instruction)
11893 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11894 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11896 std::string rt = GPR(copy(rt_value));
11897 std::string rs = GPR(copy(rs_value));
11899 return img::format("PRECEQU.PH.QBL %s, %s", rt, rs);
11904 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11906 * 3 2 1
11907 * 10987654321098765432109876543210
11908 * 001000 00010001101
11909 * rt -----
11910 * rs -----
11911 * rd -----
11913 std::string NMD::PRECEQU_PH_QBRA(uint64 instruction)
11915 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11916 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11918 std::string rt = GPR(copy(rt_value));
11919 std::string rs = GPR(copy(rs_value));
11921 return img::format("PRECEQU.PH.QBRA %s, %s", rt, rs);
11926 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11928 * 3 2 1
11929 * 10987654321098765432109876543210
11930 * 001000 00010001101
11931 * rt -----
11932 * rs -----
11933 * rd -----
11935 std::string NMD::PRECEQU_PH_QBR(uint64 instruction)
11937 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11938 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11940 std::string rt = GPR(copy(rt_value));
11941 std::string rs = GPR(copy(rs_value));
11943 return img::format("PRECEQU.PH.QBR %s, %s", rt, rs);
11948 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11950 * 3 2 1
11951 * 10987654321098765432109876543210
11952 * 001000 00010001101
11953 * rt -----
11954 * rs -----
11955 * rd -----
11957 std::string NMD::PRECEU_PH_QBLA(uint64 instruction)
11959 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11960 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11962 std::string rt = GPR(copy(rt_value));
11963 std::string rs = GPR(copy(rs_value));
11965 return img::format("PRECEU.PH.QBLA %s, %s", rt, rs);
11970 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11972 * 3 2 1
11973 * 10987654321098765432109876543210
11974 * 001000 00010001101
11975 * rt -----
11976 * rs -----
11977 * rd -----
11979 std::string NMD::PRECEU_PH_QBL(uint64 instruction)
11981 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
11982 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
11984 std::string rt = GPR(copy(rt_value));
11985 std::string rs = GPR(copy(rs_value));
11987 return img::format("PRECEU.PH.QBL %s, %s", rt, rs);
11992 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11994 * 3 2 1
11995 * 10987654321098765432109876543210
11996 * 001000 00010001101
11997 * rt -----
11998 * rs -----
11999 * rd -----
12001 std::string NMD::PRECEU_PH_QBRA(uint64 instruction)
12003 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12004 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12006 std::string rt = GPR(copy(rt_value));
12007 std::string rs = GPR(copy(rs_value));
12009 return img::format("PRECEU.PH.QBRA %s, %s", rt, rs);
12014 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12016 * 3 2 1
12017 * 10987654321098765432109876543210
12018 * 001000 00010001101
12019 * rt -----
12020 * rs -----
12021 * rd -----
12023 std::string NMD::PRECEU_PH_QBR(uint64 instruction)
12025 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12026 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12028 std::string rt = GPR(copy(rt_value));
12029 std::string rs = GPR(copy(rs_value));
12031 return img::format("PRECEU.PH.QBR %s, %s", rt, rs);
12036 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12038 * 3 2 1
12039 * 10987654321098765432109876543210
12040 * 001000 00010001101
12041 * rt -----
12042 * rs -----
12043 * rd -----
12045 std::string NMD::PRECR_QB_PH(uint64 instruction)
12047 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12048 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12049 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12051 std::string rd = GPR(copy(rd_value));
12052 std::string rs = GPR(copy(rs_value));
12053 std::string rt = GPR(copy(rt_value));
12055 return img::format("PRECR.QB.PH %s, %s, %s", rd, rs, rt);
12062 * 3 2 1
12063 * 10987654321098765432109876543210
12064 * 001000 x1110000101
12065 * rt -----
12066 * rs -----
12067 * rd -----
12069 std::string NMD::PRECR_SRA_PH_W(uint64 instruction)
12071 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12072 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
12073 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12075 std::string rt = GPR(copy(rt_value));
12076 std::string rs = GPR(copy(rs_value));
12077 std::string sa = IMMEDIATE(copy(sa_value));
12079 return img::format("PRECR_SRA.PH.W %s, %s, %s", rt, rs, sa);
12086 * 3 2 1
12087 * 10987654321098765432109876543210
12088 * 001000 x1110000101
12089 * rt -----
12090 * rs -----
12091 * rd -----
12093 std::string NMD::PRECR_SRA_R_PH_W(uint64 instruction)
12095 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12096 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
12097 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12099 std::string rt = GPR(copy(rt_value));
12100 std::string rs = GPR(copy(rs_value));
12101 std::string sa = IMMEDIATE(copy(sa_value));
12103 return img::format("PRECR_SRA_R.PH.W %s, %s, %s", rt, rs, sa);
12110 * 3 2 1
12111 * 10987654321098765432109876543210
12112 * 001000 x1110000101
12113 * rt -----
12114 * rs -----
12115 * rd -----
12117 std::string NMD::PRECRQ_PH_W(uint64 instruction)
12119 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12120 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12121 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12123 std::string rd = GPR(copy(rd_value));
12124 std::string rs = GPR(copy(rs_value));
12125 std::string rt = GPR(copy(rt_value));
12127 return img::format("PRECRQ.PH.W %s, %s, %s", rd, rs, rt);
12134 * 3 2 1
12135 * 10987654321098765432109876543210
12136 * 001000 x1110000101
12137 * rt -----
12138 * rs -----
12139 * rd -----
12141 std::string NMD::PRECRQ_QB_PH(uint64 instruction)
12143 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12144 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12145 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12147 std::string rd = GPR(copy(rd_value));
12148 std::string rs = GPR(copy(rs_value));
12149 std::string rt = GPR(copy(rt_value));
12151 return img::format("PRECRQ.QB.PH %s, %s, %s", rd, rs, rt);
12158 * 3 2 1
12159 * 10987654321098765432109876543210
12160 * 001000 x1110000101
12161 * rt -----
12162 * rs -----
12163 * rd -----
12165 std::string NMD::PRECRQ_RS_PH_W(uint64 instruction)
12167 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12168 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12169 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12171 std::string rd = GPR(copy(rd_value));
12172 std::string rs = GPR(copy(rs_value));
12173 std::string rt = GPR(copy(rt_value));
12175 return img::format("PRECRQ_RS.PH.W %s, %s, %s", rd, rs, rt);
12182 * 3 2 1
12183 * 10987654321098765432109876543210
12184 * 001000 x1110000101
12185 * rt -----
12186 * rs -----
12187 * rd -----
12189 std::string NMD::PRECRQU_S_QB_PH(uint64 instruction)
12191 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12192 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12193 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12195 std::string rd = GPR(copy(rd_value));
12196 std::string rs = GPR(copy(rs_value));
12197 std::string rt = GPR(copy(rt_value));
12199 return img::format("PRECRQU_S.QB.PH %s, %s, %s", rd, rs, rt);
12206 * 3 2 1
12207 * 10987654321098765432109876543210
12208 * 001000 x1110000101
12209 * rt -----
12210 * rs -----
12211 * rd -----
12213 std::string NMD::PREF_S9_(uint64 instruction)
12215 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
12216 uint64 hint_value = extract_hint_25_24_23_22_21(instruction);
12217 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12219 std::string hint = IMMEDIATE(copy(hint_value));
12220 std::string s = IMMEDIATE(copy(s_value));
12221 std::string rs = GPR(copy(rs_value));
12223 return img::format("PREF %s, %s(%s)", hint, s, rs);
12230 * 3 2 1
12231 * 10987654321098765432109876543210
12232 * 001000 x1110000101
12233 * rt -----
12234 * rs -----
12235 * rd -----
12237 std::string NMD::PREF_U12_(uint64 instruction)
12239 uint64 hint_value = extract_hint_25_24_23_22_21(instruction);
12240 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
12241 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12243 std::string hint = IMMEDIATE(copy(hint_value));
12244 std::string u = IMMEDIATE(copy(u_value));
12245 std::string rs = GPR(copy(rs_value));
12247 return img::format("PREF %s, %s(%s)", hint, u, rs);
12254 * 3 2 1
12255 * 10987654321098765432109876543210
12256 * 001000 x1110000101
12257 * rt -----
12258 * rs -----
12259 * rd -----
12261 std::string NMD::PREFE(uint64 instruction)
12263 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
12264 uint64 hint_value = extract_hint_25_24_23_22_21(instruction);
12265 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12267 std::string hint = IMMEDIATE(copy(hint_value));
12268 std::string s = IMMEDIATE(copy(s_value));
12269 std::string rs = GPR(copy(rs_value));
12271 return img::format("PREFE %s, %s(%s)", hint, s, rs);
12278 * 3 2 1
12279 * 10987654321098765432109876543210
12280 * 001000 x1110000101
12281 * rt -----
12282 * rs -----
12283 * rd -----
12285 std::string NMD::PREPEND(uint64 instruction)
12287 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12288 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
12289 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12291 std::string rt = GPR(copy(rt_value));
12292 std::string rs = GPR(copy(rs_value));
12293 std::string sa = IMMEDIATE(copy(sa_value));
12295 return img::format("PREPEND %s, %s, %s", rt, rs, sa);
12302 * 3 2 1
12303 * 10987654321098765432109876543210
12304 * 001000 x1110000101
12305 * rt -----
12306 * rs -----
12307 * rd -----
12309 std::string NMD::RADDU_W_QB(uint64 instruction)
12311 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12312 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12314 std::string rt = GPR(copy(rt_value));
12315 std::string rs = GPR(copy(rs_value));
12317 return img::format("RADDU.W.QB %s, %s", rt, rs);
12324 * 3 2 1
12325 * 10987654321098765432109876543210
12326 * 001000 x1110000101
12327 * rt -----
12328 * rs -----
12329 * rd -----
12331 std::string NMD::RDDSP(uint64 instruction)
12333 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12334 uint64 mask_value = extract_mask_20_19_18_17_16_15_14(instruction);
12336 std::string rt = GPR(copy(rt_value));
12337 std::string mask = IMMEDIATE(copy(mask_value));
12339 return img::format("RDDSP %s, %s", rt, mask);
12346 * 3 2 1
12347 * 10987654321098765432109876543210
12348 * 001000 x1110000101
12349 * rt -----
12350 * rs -----
12351 * rd -----
12353 std::string NMD::RDHWR(uint64 instruction)
12355 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12356 uint64 hs_value = extract_hs_20_19_18_17_16(instruction);
12357 uint64 sel_value = extract_sel_13_12_11(instruction);
12359 std::string rt = GPR(copy(rt_value));
12360 std::string hs = CPR(copy(hs_value));
12361 std::string sel = IMMEDIATE(copy(sel_value));
12363 return img::format("RDHWR %s, %s, %s", rt, hs, sel);
12370 * 3 2 1
12371 * 10987654321098765432109876543210
12372 * 001000 x1110000101
12373 * rt -----
12374 * rs -----
12375 * rd -----
12377 std::string NMD::RDPGPR(uint64 instruction)
12379 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12380 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12382 std::string rt = GPR(copy(rt_value));
12383 std::string rs = GPR(copy(rs_value));
12385 return img::format("RDPGPR %s, %s", rt, rs);
12392 * 3 2 1
12393 * 10987654321098765432109876543210
12394 * 001000 x1110000101
12395 * rt -----
12396 * rs -----
12397 * rd -----
12399 std::string NMD::RECIP_D(uint64 instruction)
12401 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12402 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12404 std::string ft = FPR(copy(ft_value));
12405 std::string fs = FPR(copy(fs_value));
12407 return img::format("RECIP.D %s, %s", ft, fs);
12414 * 3 2 1
12415 * 10987654321098765432109876543210
12416 * 001000 x1110000101
12417 * rt -----
12418 * rs -----
12419 * rd -----
12421 std::string NMD::RECIP_S(uint64 instruction)
12423 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12424 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12426 std::string ft = FPR(copy(ft_value));
12427 std::string fs = FPR(copy(fs_value));
12429 return img::format("RECIP.S %s, %s", ft, fs);
12436 * 3 2 1
12437 * 10987654321098765432109876543210
12438 * 001000 x1110000101
12439 * rt -----
12440 * rs -----
12441 * rd -----
12443 std::string NMD::REPL_PH(uint64 instruction)
12445 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12446 int64 s_value = extr_sil11il0bs10Tmsb9(instruction);
12448 std::string rt = GPR(copy(rt_value));
12449 std::string s = IMMEDIATE(copy(s_value));
12451 return img::format("REPL.PH %s, %s", rt, s);
12458 * 3 2 1
12459 * 10987654321098765432109876543210
12460 * 001000 x1110000101
12461 * rt -----
12462 * rs -----
12463 * rd -----
12465 std::string NMD::REPL_QB(uint64 instruction)
12467 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12468 uint64 u_value = extract_u_20_19_18_17_16_15_14_13(instruction);
12470 std::string rt = GPR(copy(rt_value));
12471 std::string u = IMMEDIATE(copy(u_value));
12473 return img::format("REPL.QB %s, %s", rt, u);
12480 * 3 2 1
12481 * 10987654321098765432109876543210
12482 * 001000 x1110000101
12483 * rt -----
12484 * rs -----
12485 * rd -----
12487 std::string NMD::REPLV_PH(uint64 instruction)
12489 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12490 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12492 std::string rt = GPR(copy(rt_value));
12493 std::string rs = GPR(copy(rs_value));
12495 return img::format("REPLV.PH %s, %s", rt, rs);
12502 * 3 2 1
12503 * 10987654321098765432109876543210
12504 * 001000 x1110000101
12505 * rt -----
12506 * rs -----
12507 * rd -----
12509 std::string NMD::REPLV_QB(uint64 instruction)
12511 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12512 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12514 std::string rt = GPR(copy(rt_value));
12515 std::string rs = GPR(copy(rs_value));
12517 return img::format("REPLV.QB %s, %s", rt, rs);
12524 * 3 2 1
12525 * 10987654321098765432109876543210
12526 * 001000 x1110000101
12527 * rt -----
12528 * rs -----
12529 * rd -----
12531 std::string NMD::RESTORE_32_(uint64 instruction)
12533 uint64 count_value = extract_count_19_18_17_16(instruction);
12534 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12535 uint64 u_value = extr_uil3il3bs9Fmsb11(instruction);
12536 uint64 gp_value = extract_gp_2(instruction);
12538 std::string u = IMMEDIATE(copy(u_value));
12539 return img::format("RESTORE %s%s", u,
12540 save_restore_list(rt_value, count_value, gp_value));
12547 * 3 2 1
12548 * 10987654321098765432109876543210
12549 * 001000 x1110000101
12550 * rt -----
12551 * rs -----
12552 * rd -----
12554 std::string NMD::RESTORE_JRC_16_(uint64 instruction)
12556 uint64 count_value = extract_count_3_2_1_0(instruction);
12557 uint64 rt1_value = extract_rtl_11(instruction);
12558 uint64 u_value = extr_uil4il4bs4Fmsb7(instruction);
12560 std::string u = IMMEDIATE(copy(u_value));
12561 return img::format("RESTORE.JRC %s%s", u,
12562 save_restore_list(encode_rt1_from_rt(rt1_value), count_value, 0));
12569 * 3 2 1
12570 * 10987654321098765432109876543210
12571 * 001000 x1110000101
12572 * rt -----
12573 * rs -----
12574 * rd -----
12576 std::string NMD::RESTORE_JRC_32_(uint64 instruction)
12578 uint64 count_value = extract_count_19_18_17_16(instruction);
12579 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12580 uint64 u_value = extr_uil3il3bs9Fmsb11(instruction);
12581 uint64 gp_value = extract_gp_2(instruction);
12583 std::string u = IMMEDIATE(copy(u_value));
12584 return img::format("RESTORE.JRC %s%s", u,
12585 save_restore_list(rt_value, count_value, gp_value));
12592 * 3 2 1
12593 * 10987654321098765432109876543210
12594 * 001000 x1110000101
12595 * rt -----
12596 * rs -----
12597 * rd -----
12599 std::string NMD::RESTOREF(uint64 instruction)
12601 uint64 count_value = extract_count_19_18_17_16(instruction);
12602 uint64 u_value = extr_uil3il3bs9Fmsb11(instruction);
12604 std::string u = IMMEDIATE(copy(u_value));
12605 std::string count = IMMEDIATE(copy(count_value));
12607 return img::format("RESTOREF %s, %s", u, count);
12614 * 3 2 1
12615 * 10987654321098765432109876543210
12616 * 001000 x1110000101
12617 * rt -----
12618 * rs -----
12619 * rd -----
12621 std::string NMD::RINT_D(uint64 instruction)
12623 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12624 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12626 std::string ft = FPR(copy(ft_value));
12627 std::string fs = FPR(copy(fs_value));
12629 return img::format("RINT.D %s, %s", ft, fs);
12636 * 3 2 1
12637 * 10987654321098765432109876543210
12638 * 001000 x1110000101
12639 * rt -----
12640 * rs -----
12641 * rd -----
12643 std::string NMD::RINT_S(uint64 instruction)
12645 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12646 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12648 std::string ft = FPR(copy(ft_value));
12649 std::string fs = FPR(copy(fs_value));
12651 return img::format("RINT.S %s, %s", ft, fs);
12658 * 3 2 1
12659 * 10987654321098765432109876543210
12660 * 001000 x1110000101
12661 * rt -----
12662 * rs -----
12663 * rd -----
12665 std::string NMD::ROTR(uint64 instruction)
12667 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12668 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
12669 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12671 std::string rt = GPR(copy(rt_value));
12672 std::string rs = GPR(copy(rs_value));
12673 std::string shift = IMMEDIATE(copy(shift_value));
12675 return img::format("ROTR %s, %s, %s", rt, rs, shift);
12682 * 3 2 1
12683 * 10987654321098765432109876543210
12684 * 001000 x1110000101
12685 * rt -----
12686 * rs -----
12687 * rd -----
12689 std::string NMD::ROTRV(uint64 instruction)
12691 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12692 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
12693 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12695 std::string rd = GPR(copy(rd_value));
12696 std::string rs = GPR(copy(rs_value));
12697 std::string rt = GPR(copy(rt_value));
12699 return img::format("ROTRV %s, %s, %s", rd, rs, rt);
12706 * 3 2 1
12707 * 10987654321098765432109876543210
12708 * 001000 x1110000101
12709 * rt -----
12710 * rs -----
12711 * rd -----
12713 std::string NMD::ROTX(uint64 instruction)
12715 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12716 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
12717 uint64 shiftx_value = extr_shiftxil7il1bs4Fmsb4(instruction);
12718 uint64 stripe_value = extract_stripe_6(instruction);
12719 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12721 std::string rt = GPR(copy(rt_value));
12722 std::string rs = GPR(copy(rs_value));
12723 std::string shift = IMMEDIATE(copy(shift_value));
12724 std::string shiftx = IMMEDIATE(copy(shiftx_value));
12725 std::string stripe = IMMEDIATE(copy(stripe_value));
12727 return img::format("ROTX %s, %s, %s, %s, %s",
12728 rt, rs, shift, shiftx, stripe);
12735 * 3 2 1
12736 * 10987654321098765432109876543210
12737 * 001000 x1110000101
12738 * rt -----
12739 * rs -----
12740 * rd -----
12742 std::string NMD::ROUND_L_D(uint64 instruction)
12744 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12745 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12747 std::string ft = FPR(copy(ft_value));
12748 std::string fs = FPR(copy(fs_value));
12750 return img::format("ROUND.L.D %s, %s", ft, fs);
12757 * 3 2 1
12758 * 10987654321098765432109876543210
12759 * 001000 x1110000101
12760 * rt -----
12761 * rs -----
12762 * rd -----
12764 std::string NMD::ROUND_L_S(uint64 instruction)
12766 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12767 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12769 std::string ft = FPR(copy(ft_value));
12770 std::string fs = FPR(copy(fs_value));
12772 return img::format("ROUND.L.S %s, %s", ft, fs);
12779 * 3 2 1
12780 * 10987654321098765432109876543210
12781 * 001000 x1110000101
12782 * rt -----
12783 * rs -----
12784 * rd -----
12786 std::string NMD::ROUND_W_D(uint64 instruction)
12788 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12789 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12791 std::string ft = FPR(copy(ft_value));
12792 std::string fs = FPR(copy(fs_value));
12794 return img::format("ROUND.W.D %s, %s", ft, fs);
12801 * 3 2 1
12802 * 10987654321098765432109876543210
12803 * 001000 x1110000101
12804 * rt -----
12805 * rs -----
12806 * rd -----
12808 std::string NMD::ROUND_W_S(uint64 instruction)
12810 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12811 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12813 std::string ft = FPR(copy(ft_value));
12814 std::string fs = FPR(copy(fs_value));
12816 return img::format("ROUND.W.S %s, %s", ft, fs);
12823 * 3 2 1
12824 * 10987654321098765432109876543210
12825 * 001000 x1110000101
12826 * rt -----
12827 * rs -----
12828 * rd -----
12830 std::string NMD::RSQRT_D(uint64 instruction)
12832 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12833 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12835 std::string ft = FPR(copy(ft_value));
12836 std::string fs = FPR(copy(fs_value));
12838 return img::format("RSQRT.D %s, %s", ft, fs);
12845 * 3 2 1
12846 * 10987654321098765432109876543210
12847 * 001000 x1110000101
12848 * rt -----
12849 * rs -----
12850 * rd -----
12852 std::string NMD::RSQRT_S(uint64 instruction)
12854 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
12855 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
12857 std::string ft = FPR(copy(ft_value));
12858 std::string fs = FPR(copy(fs_value));
12860 return img::format("RSQRT.S %s, %s", ft, fs);
12867 * 3 2 1
12868 * 10987654321098765432109876543210
12869 * 001000 01001001101
12870 * rt -----
12871 * rs -----
12872 * rd -----
12874 std::string NMD::SAVE_16_(uint64 instruction)
12876 uint64 count_value = extract_count_3_2_1_0(instruction);
12877 uint64 rt1_value = extract_rtl_11(instruction);
12878 uint64 u_value = extr_uil4il4bs4Fmsb7(instruction);
12880 std::string u = IMMEDIATE(copy(u_value));
12881 return img::format("SAVE %s%s", u,
12882 save_restore_list(encode_rt1_from_rt(rt1_value), count_value, 0));
12889 * 3 2 1
12890 * 10987654321098765432109876543210
12891 * 001000 01001001101
12892 * rt -----
12893 * rs -----
12894 * rd -----
12896 std::string NMD::SAVE_32_(uint64 instruction)
12898 uint64 count_value = extract_count_19_18_17_16(instruction);
12899 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12900 uint64 u_value = extr_uil3il3bs9Fmsb11(instruction);
12901 uint64 gp_value = extract_gp_2(instruction);
12903 std::string u = IMMEDIATE(copy(u_value));
12904 return img::format("SAVE %s%s", u,
12905 save_restore_list(rt_value, count_value, gp_value));
12912 * 3 2 1
12913 * 10987654321098765432109876543210
12914 * 001000 01001001101
12915 * rt -----
12916 * rs -----
12917 * rd -----
12919 std::string NMD::SAVEF(uint64 instruction)
12921 uint64 count_value = extract_count_19_18_17_16(instruction);
12922 uint64 u_value = extr_uil3il3bs9Fmsb11(instruction);
12924 std::string u = IMMEDIATE(copy(u_value));
12925 std::string count = IMMEDIATE(copy(count_value));
12927 return img::format("SAVEF %s, %s", u, count);
12934 * 3 2 1
12935 * 10987654321098765432109876543210
12936 * 001000 01001001101
12937 * rt -----
12938 * rs -----
12939 * rd -----
12941 std::string NMD::SB_16_(uint64 instruction)
12943 uint64 rtz3_value = extract_rtz3_9_8_7(instruction);
12944 uint64 u_value = extract_u_1_0(instruction);
12945 uint64 rs3_value = extract_rs3_6_5_4(instruction);
12947 std::string rtz3 = GPR(encode_gpr3_store(rtz3_value));
12948 std::string u = IMMEDIATE(copy(u_value));
12949 std::string rs3 = GPR(encode_gpr3(rs3_value));
12951 return img::format("SB %s, %s(%s)", rtz3, u, rs3);
12958 * 3 2 1
12959 * 10987654321098765432109876543210
12960 * 001000 01001001101
12961 * rt -----
12962 * rs -----
12963 * rd -----
12965 std::string NMD::SB_GP_(uint64 instruction)
12967 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12968 uint64 u_value = extract_u_17_to_0(instruction);
12970 std::string rt = GPR(copy(rt_value));
12971 std::string u = IMMEDIATE(copy(u_value));
12973 return img::format("SB %s, %s($%d)", rt, u, 28);
12980 * 3 2 1
12981 * 10987654321098765432109876543210
12982 * 001000 01001001101
12983 * rt -----
12984 * rs -----
12985 * rd -----
12987 std::string NMD::SB_S9_(uint64 instruction)
12989 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
12990 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
12991 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
12993 std::string rt = GPR(copy(rt_value));
12994 std::string s = IMMEDIATE(copy(s_value));
12995 std::string rs = GPR(copy(rs_value));
12997 return img::format("SB %s, %s(%s)", rt, s, rs);
13004 * 3 2 1
13005 * 10987654321098765432109876543210
13006 * 001000 01001001101
13007 * rt -----
13008 * rs -----
13009 * rd -----
13011 std::string NMD::SB_U12_(uint64 instruction)
13013 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13014 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
13015 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13017 std::string rt = GPR(copy(rt_value));
13018 std::string u = IMMEDIATE(copy(u_value));
13019 std::string rs = GPR(copy(rs_value));
13021 return img::format("SB %s, %s(%s)", rt, u, rs);
13028 * 3 2 1
13029 * 10987654321098765432109876543210
13030 * 001000 01001001101
13031 * rt -----
13032 * rs -----
13033 * rd -----
13035 std::string NMD::SBE(uint64 instruction)
13037 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13038 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13039 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13041 std::string rt = GPR(copy(rt_value));
13042 std::string s = IMMEDIATE(copy(s_value));
13043 std::string rs = GPR(copy(rs_value));
13045 return img::format("SBE %s, %s(%s)", rt, s, rs);
13052 * 3 2 1
13053 * 10987654321098765432109876543210
13054 * 001000 01001001101
13055 * rt -----
13056 * rs -----
13057 * rd -----
13059 std::string NMD::SBX(uint64 instruction)
13061 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13062 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
13063 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13065 std::string rd = GPR(copy(rd_value));
13066 std::string rs = GPR(copy(rs_value));
13067 std::string rt = GPR(copy(rt_value));
13069 return img::format("SBX %s, %s(%s)", rd, rs, rt);
13076 * 3 2 1
13077 * 10987654321098765432109876543210
13078 * 001000 01001001101
13079 * rt -----
13080 * rs -----
13081 * rd -----
13083 std::string NMD::SC(uint64 instruction)
13085 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13086 int64 s_value = extr_sil2il2bs6_il15il8bs1Tmsb8(instruction);
13087 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13089 std::string rt = GPR(copy(rt_value));
13090 std::string s = IMMEDIATE(copy(s_value));
13091 std::string rs = GPR(copy(rs_value));
13093 return img::format("SC %s, %s(%s)", rt, s, rs);
13100 * 3 2 1
13101 * 10987654321098765432109876543210
13102 * 001000 01001001101
13103 * rt -----
13104 * rs -----
13105 * rd -----
13107 std::string NMD::SCD(uint64 instruction)
13109 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13110 int64 s_value = extr_sil3il3bs5_il15il8bs1Tmsb8(instruction);
13111 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13113 std::string rt = GPR(copy(rt_value));
13114 std::string s = IMMEDIATE(copy(s_value));
13115 std::string rs = GPR(copy(rs_value));
13117 return img::format("SCD %s, %s(%s)", rt, s, rs);
13124 * 3 2 1
13125 * 10987654321098765432109876543210
13126 * 001000 01001001101
13127 * rt -----
13128 * rs -----
13129 * rd -----
13131 std::string NMD::SCDP(uint64 instruction)
13133 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13134 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
13135 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13137 std::string rt = GPR(copy(rt_value));
13138 std::string ru = GPR(copy(ru_value));
13139 std::string rs = GPR(copy(rs_value));
13141 return img::format("SCDP %s, %s, (%s)", rt, ru, rs);
13148 * 3 2 1
13149 * 10987654321098765432109876543210
13150 * 001000 01001001101
13151 * rt -----
13152 * rs -----
13153 * rd -----
13155 std::string NMD::SCE(uint64 instruction)
13157 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13158 int64 s_value = extr_sil2il2bs6_il15il8bs1Tmsb8(instruction);
13159 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13161 std::string rt = GPR(copy(rt_value));
13162 std::string s = IMMEDIATE(copy(s_value));
13163 std::string rs = GPR(copy(rs_value));
13165 return img::format("SCE %s, %s(%s)", rt, s, rs);
13172 * 3 2 1
13173 * 10987654321098765432109876543210
13174 * 001000 01001001101
13175 * rt -----
13176 * rs -----
13177 * rd -----
13179 std::string NMD::SCWP(uint64 instruction)
13181 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13182 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
13183 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13185 std::string rt = GPR(copy(rt_value));
13186 std::string ru = GPR(copy(ru_value));
13187 std::string rs = GPR(copy(rs_value));
13189 return img::format("SCWP %s, %s, (%s)", rt, ru, rs);
13196 * 3 2 1
13197 * 10987654321098765432109876543210
13198 * 001000 01001001101
13199 * rt -----
13200 * rs -----
13201 * rd -----
13203 std::string NMD::SCWPE(uint64 instruction)
13205 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13206 uint64 ru_value = extract_ru_7_6_5_4_3(instruction);
13207 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13209 std::string rt = GPR(copy(rt_value));
13210 std::string ru = GPR(copy(ru_value));
13211 std::string rs = GPR(copy(rs_value));
13213 return img::format("SCWPE %s, %s, (%s)", rt, ru, rs);
13220 * 3 2 1
13221 * 10987654321098765432109876543210
13222 * 001000 01001001101
13223 * rt -----
13224 * rs -----
13225 * rd -----
13227 std::string NMD::SD_GP_(uint64 instruction)
13229 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13230 uint64 u_value = extr_uil3il3bs18Fmsb20(instruction);
13232 std::string rt = GPR(copy(rt_value));
13233 std::string u = IMMEDIATE(copy(u_value));
13235 return img::format("SD %s, %s($%d)", rt, u, 28);
13242 * 3 2 1
13243 * 10987654321098765432109876543210
13244 * 001000 01001001101
13245 * rt -----
13246 * rs -----
13247 * rd -----
13249 std::string NMD::SD_S9_(uint64 instruction)
13251 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13252 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13253 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13255 std::string rt = GPR(copy(rt_value));
13256 std::string s = IMMEDIATE(copy(s_value));
13257 std::string rs = GPR(copy(rs_value));
13259 return img::format("SD %s, %s(%s)", rt, s, rs);
13266 * 3 2 1
13267 * 10987654321098765432109876543210
13268 * 001000 01001001101
13269 * rt -----
13270 * rs -----
13271 * rd -----
13273 std::string NMD::SD_U12_(uint64 instruction)
13275 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13276 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
13277 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13279 std::string rt = GPR(copy(rt_value));
13280 std::string u = IMMEDIATE(copy(u_value));
13281 std::string rs = GPR(copy(rs_value));
13283 return img::format("SD %s, %s(%s)", rt, u, rs);
13290 * 3 2 1
13291 * 10987654321098765432109876543210
13292 * 001000 01001001101
13293 * rt -----
13294 * rs -----
13295 * rd -----
13297 std::string NMD::SDBBP_16_(uint64 instruction)
13299 uint64 code_value = extract_code_2_1_0(instruction);
13301 std::string code = IMMEDIATE(copy(code_value));
13303 return img::format("SDBBP %s", code);
13310 * 3 2 1
13311 * 10987654321098765432109876543210
13312 * 001000 01001001101
13313 * rt -----
13314 * rs -----
13315 * rd -----
13317 std::string NMD::SDBBP_32_(uint64 instruction)
13319 uint64 code_value = extract_code_18_to_0(instruction);
13321 std::string code = IMMEDIATE(copy(code_value));
13323 return img::format("SDBBP %s", code);
13330 * 3 2 1
13331 * 10987654321098765432109876543210
13332 * 001000 01001001101
13333 * rt -----
13334 * rs -----
13335 * rd -----
13337 std::string NMD::SDC1_GP_(uint64 instruction)
13339 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13340 uint64 u_value = extr_uil2il2bs16Fmsb17(instruction);
13342 std::string ft = FPR(copy(ft_value));
13343 std::string u = IMMEDIATE(copy(u_value));
13345 return img::format("SDC1 %s, %s($%d)", ft, u, 28);
13352 * 3 2 1
13353 * 10987654321098765432109876543210
13354 * 001000 01001001101
13355 * rt -----
13356 * rs -----
13357 * rd -----
13359 std::string NMD::SDC1_S9_(uint64 instruction)
13361 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13362 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13363 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13365 std::string ft = FPR(copy(ft_value));
13366 std::string s = IMMEDIATE(copy(s_value));
13367 std::string rs = GPR(copy(rs_value));
13369 return img::format("SDC1 %s, %s(%s)", ft, s, rs);
13376 * 3 2 1
13377 * 10987654321098765432109876543210
13378 * 001000 01001001101
13379 * rt -----
13380 * rs -----
13381 * rd -----
13383 std::string NMD::SDC1_U12_(uint64 instruction)
13385 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13386 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
13387 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13389 std::string ft = FPR(copy(ft_value));
13390 std::string u = IMMEDIATE(copy(u_value));
13391 std::string rs = GPR(copy(rs_value));
13393 return img::format("SDC1 %s, %s(%s)", ft, u, rs);
13400 * 3 2 1
13401 * 10987654321098765432109876543210
13402 * 001000 01001001101
13403 * rt -----
13404 * rs -----
13405 * rd -----
13407 std::string NMD::SDC1X(uint64 instruction)
13409 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13410 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
13411 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13413 std::string ft = FPR(copy(ft_value));
13414 std::string rs = GPR(copy(rs_value));
13415 std::string rt = GPR(copy(rt_value));
13417 return img::format("SDC1X %s, %s(%s)", ft, rs, rt);
13424 * 3 2 1
13425 * 10987654321098765432109876543210
13426 * 001000 01001001101
13427 * rt -----
13428 * rs -----
13429 * rd -----
13431 std::string NMD::SDC1XS(uint64 instruction)
13433 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13434 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
13435 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13437 std::string ft = FPR(copy(ft_value));
13438 std::string rs = GPR(copy(rs_value));
13439 std::string rt = GPR(copy(rt_value));
13441 return img::format("SDC1XS %s, %s(%s)", ft, rs, rt);
13448 * 3 2 1
13449 * 10987654321098765432109876543210
13450 * 001000 01001001101
13451 * rt -----
13452 * rs -----
13453 * rd -----
13455 std::string NMD::SDC2(uint64 instruction)
13457 uint64 cs_value = extract_cs_25_24_23_22_21(instruction);
13458 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13459 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13461 std::string cs = CPR(copy(cs_value));
13462 std::string s = IMMEDIATE(copy(s_value));
13463 std::string rs = GPR(copy(rs_value));
13465 return img::format("SDC2 %s, %s(%s)", cs, s, rs);
13472 * 3 2 1
13473 * 10987654321098765432109876543210
13474 * 001000 01001001101
13475 * rt -----
13476 * rs -----
13477 * rd -----
13479 std::string NMD::SDM(uint64 instruction)
13481 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13482 uint64 count3_value = extract_count3_14_13_12(instruction);
13483 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13484 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13486 std::string rt = GPR(copy(rt_value));
13487 std::string s = IMMEDIATE(copy(s_value));
13488 std::string rs = GPR(copy(rs_value));
13489 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
13491 return img::format("SDM %s, %s(%s), %s", rt, s, rs, count3);
13498 * 3 2 1
13499 * 10987654321098765432109876543210
13500 * 001000 01001001101
13501 * rt -----
13502 * rs -----
13503 * rd -----
13505 std::string NMD::SDPC_48_(uint64 instruction)
13507 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
13508 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
13510 std::string rt = GPR(copy(rt_value));
13511 std::string s = ADDRESS(encode_s_from_address(s_value), 6);
13513 return img::format("SDPC %s, %s", rt, s);
13520 * 3 2 1
13521 * 10987654321098765432109876543210
13522 * 001000 01001001101
13523 * rt -----
13524 * rs -----
13525 * rd -----
13527 std::string NMD::SDXS(uint64 instruction)
13529 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13530 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
13531 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13533 std::string rd = GPR(copy(rd_value));
13534 std::string rs = GPR(copy(rs_value));
13535 std::string rt = GPR(copy(rt_value));
13537 return img::format("SDXS %s, %s(%s)", rd, rs, rt);
13544 * 3 2 1
13545 * 10987654321098765432109876543210
13546 * 001000 01001001101
13547 * rt -----
13548 * rs -----
13549 * rd -----
13551 std::string NMD::SDX(uint64 instruction)
13553 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13554 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
13555 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13557 std::string rd = GPR(copy(rd_value));
13558 std::string rs = GPR(copy(rs_value));
13559 std::string rt = GPR(copy(rt_value));
13561 return img::format("SDX %s, %s(%s)", rd, rs, rt);
13568 * 3 2 1
13569 * 10987654321098765432109876543210
13570 * 001000 01001001101
13571 * rt -----
13572 * rs -----
13573 * rd -----
13575 std::string NMD::SEB(uint64 instruction)
13577 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13578 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13580 std::string rt = GPR(copy(rt_value));
13581 std::string rs = GPR(copy(rs_value));
13583 return img::format("SEB %s, %s", rt, rs);
13590 * 3 2 1
13591 * 10987654321098765432109876543210
13592 * 001000 01001001101
13593 * rt -----
13594 * rs -----
13595 * rd -----
13597 std::string NMD::SEH(uint64 instruction)
13599 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13600 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13602 std::string rt = GPR(copy(rt_value));
13603 std::string rs = GPR(copy(rs_value));
13605 return img::format("SEH %s, %s", rt, rs);
13612 * 3 2 1
13613 * 10987654321098765432109876543210
13614 * 001000 01001001101
13615 * rt -----
13616 * rs -----
13617 * rd -----
13619 std::string NMD::SEL_D(uint64 instruction)
13621 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13622 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13623 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13625 std::string fd = FPR(copy(fd_value));
13626 std::string fs = FPR(copy(fs_value));
13627 std::string ft = FPR(copy(ft_value));
13629 return img::format("SEL.D %s, %s, %s", fd, fs, ft);
13636 * 3 2 1
13637 * 10987654321098765432109876543210
13638 * 001000 01001001101
13639 * rt -----
13640 * rs -----
13641 * rd -----
13643 std::string NMD::SEL_S(uint64 instruction)
13645 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13646 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13647 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13649 std::string fd = FPR(copy(fd_value));
13650 std::string fs = FPR(copy(fs_value));
13651 std::string ft = FPR(copy(ft_value));
13653 return img::format("SEL.S %s, %s, %s", fd, fs, ft);
13660 * 3 2 1
13661 * 10987654321098765432109876543210
13662 * 001000 01001001101
13663 * rt -----
13664 * rs -----
13665 * rd -----
13667 std::string NMD::SELEQZ_D(uint64 instruction)
13669 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13670 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13671 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13673 std::string fd = FPR(copy(fd_value));
13674 std::string fs = FPR(copy(fs_value));
13675 std::string ft = FPR(copy(ft_value));
13677 return img::format("SELEQZ.D %s, %s, %s", fd, fs, ft);
13684 * 3 2 1
13685 * 10987654321098765432109876543210
13686 * 001000 01001001101
13687 * rt -----
13688 * rs -----
13689 * rd -----
13691 std::string NMD::SELEQZ_S(uint64 instruction)
13693 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13694 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13695 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13697 std::string fd = FPR(copy(fd_value));
13698 std::string fs = FPR(copy(fs_value));
13699 std::string ft = FPR(copy(ft_value));
13701 return img::format("SELEQZ.S %s, %s, %s", fd, fs, ft);
13708 * 3 2 1
13709 * 10987654321098765432109876543210
13710 * 001000 01001001101
13711 * rt -----
13712 * rs -----
13713 * rd -----
13715 std::string NMD::SELNEZ_D(uint64 instruction)
13717 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13718 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13719 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13721 std::string fd = FPR(copy(fd_value));
13722 std::string fs = FPR(copy(fs_value));
13723 std::string ft = FPR(copy(ft_value));
13725 return img::format("SELNEZ.D %s, %s, %s", fd, fs, ft);
13732 * 3 2 1
13733 * 10987654321098765432109876543210
13734 * 001000 01001001101
13735 * rt -----
13736 * rs -----
13737 * rd -----
13739 std::string NMD::SELNEZ_S(uint64 instruction)
13741 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
13742 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
13743 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
13745 std::string fd = FPR(copy(fd_value));
13746 std::string fs = FPR(copy(fs_value));
13747 std::string ft = FPR(copy(ft_value));
13749 return img::format("SELNEZ.S %s, %s, %s", fd, fs, ft);
13756 * 3 2 1
13757 * 10987654321098765432109876543210
13758 * 001000 01001001101
13759 * rt -----
13760 * rs -----
13761 * rd -----
13763 std::string NMD::SEQI(uint64 instruction)
13765 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13766 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
13767 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13769 std::string rt = GPR(copy(rt_value));
13770 std::string rs = GPR(copy(rs_value));
13771 std::string u = IMMEDIATE(copy(u_value));
13773 return img::format("SEQI %s, %s, %s", rt, rs, u);
13780 * 3 2 1
13781 * 10987654321098765432109876543210
13782 * 001000 01001001101
13783 * rt -----
13784 * rs -----
13785 * rd -----
13787 std::string NMD::SH_16_(uint64 instruction)
13789 uint64 rtz3_value = extract_rtz3_9_8_7(instruction);
13790 uint64 u_value = extr_uil1il1bs2Fmsb2(instruction);
13791 uint64 rs3_value = extract_rs3_6_5_4(instruction);
13793 std::string rtz3 = GPR(encode_gpr3_store(rtz3_value));
13794 std::string u = IMMEDIATE(copy(u_value));
13795 std::string rs3 = GPR(encode_gpr3(rs3_value));
13797 return img::format("SH %s, %s(%s)", rtz3, u, rs3);
13804 * 3 2 1
13805 * 10987654321098765432109876543210
13806 * 001000 01001001101
13807 * rt -----
13808 * rs -----
13809 * rd -----
13811 std::string NMD::SH_GP_(uint64 instruction)
13813 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13814 uint64 u_value = extr_uil1il1bs17Fmsb17(instruction);
13816 std::string rt = GPR(copy(rt_value));
13817 std::string u = IMMEDIATE(copy(u_value));
13819 return img::format("SH %s, %s($%d)", rt, u, 28);
13826 * 3 2 1
13827 * 10987654321098765432109876543210
13828 * 001000 01001001101
13829 * rt -----
13830 * rs -----
13831 * rd -----
13833 std::string NMD::SH_S9_(uint64 instruction)
13835 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13836 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13837 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13839 std::string rt = GPR(copy(rt_value));
13840 std::string s = IMMEDIATE(copy(s_value));
13841 std::string rs = GPR(copy(rs_value));
13843 return img::format("SH %s, %s(%s)", rt, s, rs);
13850 * 3 2 1
13851 * 10987654321098765432109876543210
13852 * 001000 01001001101
13853 * rt -----
13854 * rs -----
13855 * rd -----
13857 std::string NMD::SH_U12_(uint64 instruction)
13859 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13860 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
13861 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13863 std::string rt = GPR(copy(rt_value));
13864 std::string u = IMMEDIATE(copy(u_value));
13865 std::string rs = GPR(copy(rs_value));
13867 return img::format("SH %s, %s(%s)", rt, u, rs);
13874 * 3 2 1
13875 * 10987654321098765432109876543210
13876 * 001000 01001001101
13877 * rt -----
13878 * rs -----
13879 * rd -----
13881 std::string NMD::SHE(uint64 instruction)
13883 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13884 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
13885 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13887 std::string rt = GPR(copy(rt_value));
13888 std::string s = IMMEDIATE(copy(s_value));
13889 std::string rs = GPR(copy(rs_value));
13891 return img::format("SHE %s, %s(%s)", rt, s, rs);
13896 * SHILO ac, shift - Shift an Accumulator Value Leaving the Result in the Same
13897 * Accumulator
13899 * 3 2 1
13900 * 10987654321098765432109876543210
13901 * 001000xxxx xxxx0000011101
13902 * shift ------
13903 * ac --
13905 std::string NMD::SHILO(uint64 instruction)
13907 int64 shift_value = extract_shift_21_20_19_18_17_16(instruction);
13908 uint64 ac_value = extract_ac_13_12(instruction);
13910 std::string shift = IMMEDIATE(copy(shift_value));
13911 std::string ac = AC(copy(ac_value));
13913 return img::format("SHILO %s, %s", ac, shift);
13918 * SHILOV ac, rs - Variable Shift of Accumulator Value Leaving the Result in
13919 * the Same Accumulator
13921 * 3 2 1
13922 * 10987654321098765432109876543210
13923 * 001000xxxxx 01001001111111
13924 * rs -----
13925 * ac --
13927 std::string NMD::SHILOV(uint64 instruction)
13929 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13930 uint64 ac_value = extract_ac_13_12(instruction);
13932 std::string rs = GPR(copy(rs_value));
13933 std::string ac = AC(copy(ac_value));
13935 return img::format("SHILOV %s, %s", ac, rs);
13940 * SHLL.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords
13942 * 3 2 1
13943 * 10987654321098765432109876543210
13944 * 001000 001110110101
13945 * rt -----
13946 * rs -----
13947 * sa ----
13949 std::string NMD::SHLL_PH(uint64 instruction)
13951 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13952 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13953 uint64 sa_value = extract_sa_15_14_13_12(instruction);
13955 std::string rt = GPR(copy(rt_value));
13956 std::string rs = GPR(copy(rs_value));
13957 std::string sa = IMMEDIATE(copy(sa_value));
13959 return img::format("SHLL.PH %s, %s, %s", rt, rs, sa);
13964 * SHLL.QB rt, rs, sa - Shift Left Logical Vector Quad Bytes
13966 * 3 2 1
13967 * 10987654321098765432109876543210
13968 * 001000 0100001111111
13969 * rt -----
13970 * rs -----
13971 * sa ---
13973 std::string NMD::SHLL_QB(uint64 instruction)
13975 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
13976 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
13977 uint64 sa_value = extract_sa_15_14_13(instruction);
13979 std::string rt = GPR(copy(rt_value));
13980 std::string rs = GPR(copy(rs_value));
13981 std::string sa = IMMEDIATE(copy(sa_value));
13983 return img::format("SHLL.QB %s, %s, %s", rt, rs, sa);
13988 * SHLL_S.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords (saturated)
13990 * 3 2 1
13991 * 10987654321098765432109876543210
13992 * 001000 001110110101
13993 * rt -----
13994 * rs -----
13995 * sa ----
13997 std::string NMD::SHLL_S_PH(uint64 instruction)
13999 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14000 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14001 uint64 sa_value = extract_sa_15_14_13_12(instruction);
14003 std::string rt = GPR(copy(rt_value));
14004 std::string rs = GPR(copy(rs_value));
14005 std::string sa = IMMEDIATE(copy(sa_value));
14007 return img::format("SHLL_S.PH %s, %s, %s", rt, rs, sa);
14014 * 3 2 1
14015 * 10987654321098765432109876543210
14016 * 001000 01001001101
14017 * rt -----
14018 * rs -----
14019 * rd -----
14021 std::string NMD::SHLL_S_W(uint64 instruction)
14023 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14024 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
14025 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14027 std::string rt = GPR(copy(rt_value));
14028 std::string rs = GPR(copy(rs_value));
14029 std::string sa = IMMEDIATE(copy(sa_value));
14031 return img::format("SHLL_S.W %s, %s, %s", rt, rs, sa);
14038 * 3 2 1
14039 * 10987654321098765432109876543210
14040 * 001000 01001001101
14041 * rt -----
14042 * rs -----
14043 * rd -----
14045 std::string NMD::SHLLV_PH(uint64 instruction)
14047 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14048 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14049 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14051 std::string rd = GPR(copy(rd_value));
14052 std::string rt = GPR(copy(rt_value));
14053 std::string rs = GPR(copy(rs_value));
14055 return img::format("SHLLV.PH %s, %s, %s", rd, rt, rs);
14062 * 3 2 1
14063 * 10987654321098765432109876543210
14064 * 001000 01001001101
14065 * rt -----
14066 * rs -----
14067 * rd -----
14069 std::string NMD::SHLLV_QB(uint64 instruction)
14071 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14072 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14073 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14075 std::string rd = GPR(copy(rd_value));
14076 std::string rt = GPR(copy(rt_value));
14077 std::string rs = GPR(copy(rs_value));
14079 return img::format("SHLLV.QB %s, %s, %s", rd, rt, rs);
14086 * 3 2 1
14087 * 10987654321098765432109876543210
14088 * 001000 01001001101
14089 * rt -----
14090 * rs -----
14091 * rd -----
14093 std::string NMD::SHLLV_S_PH(uint64 instruction)
14095 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14096 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14097 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14099 std::string rd = GPR(copy(rd_value));
14100 std::string rt = GPR(copy(rt_value));
14101 std::string rs = GPR(copy(rs_value));
14103 return img::format("SHLLV_S.PH %s, %s, %s", rd, rt, rs);
14110 * 3 2 1
14111 * 10987654321098765432109876543210
14112 * 001000 01001001101
14113 * rt -----
14114 * rs -----
14115 * rd -----
14117 std::string NMD::SHLLV_S_W(uint64 instruction)
14119 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14120 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14121 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14123 std::string rd = GPR(copy(rd_value));
14124 std::string rt = GPR(copy(rt_value));
14125 std::string rs = GPR(copy(rs_value));
14127 return img::format("SHLLV_S.W %s, %s, %s", rd, rt, rs);
14134 * 3 2 1
14135 * 10987654321098765432109876543210
14136 * 001000 01001001101
14137 * rt -----
14138 * rs -----
14139 * rd -----
14141 std::string NMD::SHRA_PH(uint64 instruction)
14143 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14144 uint64 sa_value = extract_sa_15_14_13_12(instruction);
14145 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14147 std::string rt = GPR(copy(rt_value));
14148 std::string rs = GPR(copy(rs_value));
14149 std::string sa = IMMEDIATE(copy(sa_value));
14151 return img::format("SHRA.PH %s, %s, %s", rt, rs, sa);
14158 * 3 2 1
14159 * 10987654321098765432109876543210
14160 * 001000 01001001101
14161 * rt -----
14162 * rs -----
14163 * rd -----
14165 std::string NMD::SHRA_QB(uint64 instruction)
14167 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14168 uint64 sa_value = extract_sa_15_14_13(instruction);
14169 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14171 std::string rt = GPR(copy(rt_value));
14172 std::string rs = GPR(copy(rs_value));
14173 std::string sa = IMMEDIATE(copy(sa_value));
14175 return img::format("SHRA.QB %s, %s, %s", rt, rs, sa);
14182 * 3 2 1
14183 * 10987654321098765432109876543210
14184 * 001000 01001001101
14185 * rt -----
14186 * rs -----
14187 * rd -----
14189 std::string NMD::SHRA_R_PH(uint64 instruction)
14191 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14192 uint64 sa_value = extract_sa_15_14_13_12(instruction);
14193 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14195 std::string rt = GPR(copy(rt_value));
14196 std::string rs = GPR(copy(rs_value));
14197 std::string sa = IMMEDIATE(copy(sa_value));
14199 return img::format("SHRA_R.PH %s, %s, %s", rt, rs, sa);
14206 * 3 2 1
14207 * 10987654321098765432109876543210
14208 * 001000 01001001101
14209 * rt -----
14210 * rs -----
14211 * rd -----
14213 std::string NMD::SHRA_R_QB(uint64 instruction)
14215 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14216 uint64 sa_value = extract_sa_15_14_13(instruction);
14217 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14219 std::string rt = GPR(copy(rt_value));
14220 std::string rs = GPR(copy(rs_value));
14221 std::string sa = IMMEDIATE(copy(sa_value));
14223 return img::format("SHRA_R.QB %s, %s, %s", rt, rs, sa);
14230 * 3 2 1
14231 * 10987654321098765432109876543210
14232 * 001000 01001001101
14233 * rt -----
14234 * rs -----
14235 * rd -----
14237 std::string NMD::SHRA_R_W(uint64 instruction)
14239 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14240 uint64 sa_value = extract_sa_15_14_13_12_11(instruction);
14241 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14243 std::string rt = GPR(copy(rt_value));
14244 std::string rs = GPR(copy(rs_value));
14245 std::string sa = IMMEDIATE(copy(sa_value));
14247 return img::format("SHRA_R.W %s, %s, %s", rt, rs, sa);
14254 * 3 2 1
14255 * 10987654321098765432109876543210
14256 * 001000 01001001101
14257 * rt -----
14258 * rs -----
14259 * rd -----
14261 std::string NMD::SHRAV_PH(uint64 instruction)
14263 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14264 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14265 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14267 std::string rd = GPR(copy(rd_value));
14268 std::string rt = GPR(copy(rt_value));
14269 std::string rs = GPR(copy(rs_value));
14271 return img::format("SHRAV.PH %s, %s, %s", rd, rt, rs);
14278 * 3 2 1
14279 * 10987654321098765432109876543210
14280 * 001000 01001001101
14281 * rt -----
14282 * rs -----
14283 * rd -----
14285 std::string NMD::SHRAV_QB(uint64 instruction)
14287 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14288 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14289 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14291 std::string rd = GPR(copy(rd_value));
14292 std::string rt = GPR(copy(rt_value));
14293 std::string rs = GPR(copy(rs_value));
14295 return img::format("SHRAV.QB %s, %s, %s", rd, rt, rs);
14302 * 3 2 1
14303 * 10987654321098765432109876543210
14304 * 001000 01001001101
14305 * rt -----
14306 * rs -----
14307 * rd -----
14309 std::string NMD::SHRAV_R_PH(uint64 instruction)
14311 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14312 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14313 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14315 std::string rd = GPR(copy(rd_value));
14316 std::string rt = GPR(copy(rt_value));
14317 std::string rs = GPR(copy(rs_value));
14319 return img::format("SHRAV_R.PH %s, %s, %s", rd, rt, rs);
14326 * 3 2 1
14327 * 10987654321098765432109876543210
14328 * 001000 01001001101
14329 * rt -----
14330 * rs -----
14331 * rd -----
14333 std::string NMD::SHRAV_R_QB(uint64 instruction)
14335 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14336 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14337 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14339 std::string rd = GPR(copy(rd_value));
14340 std::string rt = GPR(copy(rt_value));
14341 std::string rs = GPR(copy(rs_value));
14343 return img::format("SHRAV_R.QB %s, %s, %s", rd, rt, rs);
14350 * 3 2 1
14351 * 10987654321098765432109876543210
14352 * 001000 01001001101
14353 * rt -----
14354 * rs -----
14355 * rd -----
14357 std::string NMD::SHRAV_R_W(uint64 instruction)
14359 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14360 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14361 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14363 std::string rd = GPR(copy(rd_value));
14364 std::string rt = GPR(copy(rt_value));
14365 std::string rs = GPR(copy(rs_value));
14367 return img::format("SHRAV_R.W %s, %s, %s", rd, rt, rs);
14374 * 3 2 1
14375 * 10987654321098765432109876543210
14376 * 001000 01001001101
14377 * rt -----
14378 * rs -----
14379 * rd -----
14381 std::string NMD::SHRL_PH(uint64 instruction)
14383 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14384 uint64 sa_value = extract_sa_15_14_13_12(instruction);
14385 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14387 std::string rt = GPR(copy(rt_value));
14388 std::string rs = GPR(copy(rs_value));
14389 std::string sa = IMMEDIATE(copy(sa_value));
14391 return img::format("SHRL.PH %s, %s, %s", rt, rs, sa);
14398 * 3 2 1
14399 * 10987654321098765432109876543210
14400 * 001000 01001001101
14401 * rt -----
14402 * rs -----
14403 * rd -----
14405 std::string NMD::SHRL_QB(uint64 instruction)
14407 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14408 uint64 sa_value = extract_sa_15_14_13(instruction);
14409 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14411 std::string rt = GPR(copy(rt_value));
14412 std::string rs = GPR(copy(rs_value));
14413 std::string sa = IMMEDIATE(copy(sa_value));
14415 return img::format("SHRL.QB %s, %s, %s", rt, rs, sa);
14422 * 3 2 1
14423 * 10987654321098765432109876543210
14424 * 001000 01001001101
14425 * rt -----
14426 * rs -----
14427 * rd -----
14429 std::string NMD::SHRLV_PH(uint64 instruction)
14431 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14432 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14433 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14435 std::string rd = GPR(copy(rd_value));
14436 std::string rt = GPR(copy(rt_value));
14437 std::string rs = GPR(copy(rs_value));
14439 return img::format("SHRLV.PH %s, %s, %s", rd, rt, rs);
14446 * 3 2 1
14447 * 10987654321098765432109876543210
14448 * 001000 01001001101
14449 * rt -----
14450 * rs -----
14451 * rd -----
14453 std::string NMD::SHRLV_QB(uint64 instruction)
14455 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14456 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14457 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14459 std::string rd = GPR(copy(rd_value));
14460 std::string rt = GPR(copy(rt_value));
14461 std::string rs = GPR(copy(rs_value));
14463 return img::format("SHRLV.QB %s, %s, %s", rd, rt, rs);
14470 * 3 2 1
14471 * 10987654321098765432109876543210
14472 * 001000 01001001101
14473 * rt -----
14474 * rs -----
14475 * rd -----
14477 std::string NMD::SHX(uint64 instruction)
14479 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14480 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14481 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14483 std::string rd = GPR(copy(rd_value));
14484 std::string rs = GPR(copy(rs_value));
14485 std::string rt = GPR(copy(rt_value));
14487 return img::format("SHX %s, %s(%s)", rd, rs, rt);
14494 * 3 2 1
14495 * 10987654321098765432109876543210
14496 * 001000 01001001101
14497 * rt -----
14498 * rs -----
14499 * rd -----
14501 std::string NMD::SHXS(uint64 instruction)
14503 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14504 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14505 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14507 std::string rd = GPR(copy(rd_value));
14508 std::string rs = GPR(copy(rs_value));
14509 std::string rt = GPR(copy(rt_value));
14511 return img::format("SHXS %s, %s(%s)", rd, rs, rt);
14518 * 3 2 1
14519 * 10987654321098765432109876543210
14520 * 001000 01001001101
14521 * rt -----
14522 * rs -----
14523 * rd -----
14525 std::string NMD::SIGRIE(uint64 instruction)
14527 uint64 code_value = extract_code_18_to_0(instruction);
14529 std::string code = IMMEDIATE(copy(code_value));
14531 return img::format("SIGRIE %s", code);
14538 * 3 2 1
14539 * 10987654321098765432109876543210
14540 * 001000 01001001101
14541 * rt -----
14542 * rs -----
14543 * rd -----
14545 std::string NMD::SLL_16_(uint64 instruction)
14547 uint64 shift3_value = extract_shift3_2_1_0(instruction);
14548 uint64 rt3_value = extract_rt3_9_8_7(instruction);
14549 uint64 rs3_value = extract_rs3_6_5_4(instruction);
14551 std::string rt3 = GPR(encode_gpr3(rt3_value));
14552 std::string rs3 = GPR(encode_gpr3(rs3_value));
14553 std::string shift3 = IMMEDIATE(encode_shift3_from_shift(shift3_value));
14555 return img::format("SLL %s, %s, %s", rt3, rs3, shift3);
14562 * 3 2 1
14563 * 10987654321098765432109876543210
14564 * 001000 01001001101
14565 * rt -----
14566 * rs -----
14567 * rd -----
14569 std::string NMD::SLL_32_(uint64 instruction)
14571 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14572 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
14573 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14575 std::string rt = GPR(copy(rt_value));
14576 std::string rs = GPR(copy(rs_value));
14577 std::string shift = IMMEDIATE(copy(shift_value));
14579 return img::format("SLL %s, %s, %s", rt, rs, shift);
14586 * 3 2 1
14587 * 10987654321098765432109876543210
14588 * 001000 01001001101
14589 * rt -----
14590 * rs -----
14591 * rd -----
14593 std::string NMD::SLLV(uint64 instruction)
14595 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14596 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14597 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14599 std::string rd = GPR(copy(rd_value));
14600 std::string rs = GPR(copy(rs_value));
14601 std::string rt = GPR(copy(rt_value));
14603 return img::format("SLLV %s, %s, %s", rd, rs, rt);
14610 * 3 2 1
14611 * 10987654321098765432109876543210
14612 * 001000 01001001101
14613 * rt -----
14614 * rs -----
14615 * rd -----
14617 std::string NMD::SLT(uint64 instruction)
14619 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14620 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14621 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14623 std::string rd = GPR(copy(rd_value));
14624 std::string rs = GPR(copy(rs_value));
14625 std::string rt = GPR(copy(rt_value));
14627 return img::format("SLT %s, %s, %s", rd, rs, rt);
14634 * 3 2 1
14635 * 10987654321098765432109876543210
14636 * 001000 01001001101
14637 * rt -----
14638 * rs -----
14639 * rd -----
14641 std::string NMD::SLTI(uint64 instruction)
14643 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14644 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
14645 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14647 std::string rt = GPR(copy(rt_value));
14648 std::string rs = GPR(copy(rs_value));
14649 std::string u = IMMEDIATE(copy(u_value));
14651 return img::format("SLTI %s, %s, %s", rt, rs, u);
14658 * 3 2 1
14659 * 10987654321098765432109876543210
14660 * 001000 01001001101
14661 * rt -----
14662 * rs -----
14663 * rd -----
14665 std::string NMD::SLTIU(uint64 instruction)
14667 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14668 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
14669 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14671 std::string rt = GPR(copy(rt_value));
14672 std::string rs = GPR(copy(rs_value));
14673 std::string u = IMMEDIATE(copy(u_value));
14675 return img::format("SLTIU %s, %s, %s", rt, rs, u);
14682 * 3 2 1
14683 * 10987654321098765432109876543210
14684 * 001000 01001001101
14685 * rt -----
14686 * rs -----
14687 * rd -----
14689 std::string NMD::SLTU(uint64 instruction)
14691 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14692 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14693 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14695 std::string rd = GPR(copy(rd_value));
14696 std::string rs = GPR(copy(rs_value));
14697 std::string rt = GPR(copy(rt_value));
14699 return img::format("SLTU %s, %s, %s", rd, rs, rt);
14706 * 3 2 1
14707 * 10987654321098765432109876543210
14708 * 001000 01001001101
14709 * rt -----
14710 * rs -----
14711 * rd -----
14713 std::string NMD::SOV(uint64 instruction)
14715 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14716 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14717 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14719 std::string rd = GPR(copy(rd_value));
14720 std::string rs = GPR(copy(rs_value));
14721 std::string rt = GPR(copy(rt_value));
14723 return img::format("SOV %s, %s, %s", rd, rs, rt);
14730 * 3 2 1
14731 * 10987654321098765432109876543210
14732 * 001000 01001001101
14733 * rt -----
14734 * rs -----
14735 * rd -----
14737 std::string NMD::SPECIAL2(uint64 instruction)
14739 uint64 op_value = extract_op_25_to_3(instruction);
14741 std::string op = IMMEDIATE(copy(op_value));
14743 return img::format("SPECIAL2 %s", op);
14750 * 3 2 1
14751 * 10987654321098765432109876543210
14752 * 001000 01001001101
14753 * rt -----
14754 * rs -----
14755 * rd -----
14757 std::string NMD::SQRT_D(uint64 instruction)
14759 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
14760 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
14762 std::string ft = FPR(copy(ft_value));
14763 std::string fs = FPR(copy(fs_value));
14765 return img::format("SQRT.D %s, %s", ft, fs);
14772 * 3 2 1
14773 * 10987654321098765432109876543210
14774 * 001000 01001001101
14775 * rt -----
14776 * rs -----
14777 * rd -----
14779 std::string NMD::SQRT_S(uint64 instruction)
14781 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
14782 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
14784 std::string ft = FPR(copy(ft_value));
14785 std::string fs = FPR(copy(fs_value));
14787 return img::format("SQRT.S %s, %s", ft, fs);
14792 * SRA rd, rt, sa - Shift Word Right Arithmetic
14794 * 3 2 1
14795 * 10987654321098765432109876543210
14796 * 00000000000 000011
14797 * rt -----
14798 * rd -----
14799 * sa -----
14801 std::string NMD::SRA(uint64 instruction)
14803 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14804 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14805 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
14807 std::string rt = GPR(copy(rt_value));
14808 std::string rs = GPR(copy(rs_value));
14809 std::string shift = IMMEDIATE(copy(shift_value));
14811 return img::format("SRA %s, %s, %s", rt, rs, shift);
14816 * SRAV rd, rt, rs - Shift Word Right Arithmetic Variable
14818 * 3 2 1
14819 * 10987654321098765432109876543210
14820 * 001000 00000000111
14821 * rs -----
14822 * rt -----
14823 * rd -----
14825 std::string NMD::SRAV(uint64 instruction)
14827 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14828 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14829 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14831 std::string rd = GPR(copy(rd_value));
14832 std::string rs = GPR(copy(rs_value));
14833 std::string rt = GPR(copy(rt_value));
14835 return img::format("SRAV %s, %s, %s", rd, rs, rt);
14842 * 3 2 1
14843 * 10987654321098765432109876543210
14844 * 001000 00000000111
14845 * rs -----
14846 * rt -----
14847 * rd -----
14849 std::string NMD::SRL_16_(uint64 instruction)
14851 uint64 shift3_value = extract_shift3_2_1_0(instruction);
14852 uint64 rt3_value = extract_rt3_9_8_7(instruction);
14853 uint64 rs3_value = extract_rs3_6_5_4(instruction);
14855 std::string rt3 = GPR(encode_gpr3(rt3_value));
14856 std::string rs3 = GPR(encode_gpr3(rs3_value));
14857 std::string shift3 = IMMEDIATE(encode_shift3_from_shift(shift3_value));
14859 return img::format("SRL %s, %s, %s", rt3, rs3, shift3);
14866 * 3 2 1
14867 * 10987654321098765432109876543210
14868 * 001000 01001001101
14869 * rt -----
14870 * rs -----
14871 * rd -----
14873 std::string NMD::SRL_32_(uint64 instruction)
14875 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14876 uint64 shift_value = extract_shift_4_3_2_1_0(instruction);
14877 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14879 std::string rt = GPR(copy(rt_value));
14880 std::string rs = GPR(copy(rs_value));
14881 std::string shift = IMMEDIATE(copy(shift_value));
14883 return img::format("SRL %s, %s, %s", rt, rs, shift);
14890 * 3 2 1
14891 * 10987654321098765432109876543210
14892 * 001000 01001001101
14893 * rt -----
14894 * rs -----
14895 * rd -----
14897 std::string NMD::SRLV(uint64 instruction)
14899 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14900 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14901 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14903 std::string rd = GPR(copy(rd_value));
14904 std::string rs = GPR(copy(rs_value));
14905 std::string rt = GPR(copy(rt_value));
14907 return img::format("SRLV %s, %s, %s", rd, rs, rt);
14914 * 3 2 1
14915 * 10987654321098765432109876543210
14916 * 001000 01001001101
14917 * rt -----
14918 * rs -----
14919 * rd -----
14921 std::string NMD::SUB(uint64 instruction)
14923 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14924 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14925 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14927 std::string rd = GPR(copy(rd_value));
14928 std::string rs = GPR(copy(rs_value));
14929 std::string rt = GPR(copy(rt_value));
14931 return img::format("SUB %s, %s, %s", rd, rs, rt);
14938 * 3 2 1
14939 * 10987654321098765432109876543210
14940 * 001000 01001001101
14941 * rt -----
14942 * rs -----
14943 * rd -----
14945 std::string NMD::SUB_D(uint64 instruction)
14947 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
14948 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
14949 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
14951 std::string fd = FPR(copy(fd_value));
14952 std::string fs = FPR(copy(fs_value));
14953 std::string ft = FPR(copy(ft_value));
14955 return img::format("SUB.D %s, %s, %s", fd, fs, ft);
14962 * 3 2 1
14963 * 10987654321098765432109876543210
14964 * 001000 01001001101
14965 * rt -----
14966 * rs -----
14967 * rd -----
14969 std::string NMD::SUB_S(uint64 instruction)
14971 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
14972 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
14973 uint64 fd_value = extract_fd_10_9_8_7_6(instruction);
14975 std::string fd = FPR(copy(fd_value));
14976 std::string fs = FPR(copy(fs_value));
14977 std::string ft = FPR(copy(ft_value));
14979 return img::format("SUB.S %s, %s, %s", fd, fs, ft);
14986 * 3 2 1
14987 * 10987654321098765432109876543210
14988 * 001000 01001001101
14989 * rt -----
14990 * rs -----
14991 * rd -----
14993 std::string NMD::SUBQ_PH(uint64 instruction)
14995 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
14996 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
14997 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
14999 std::string rd = GPR(copy(rd_value));
15000 std::string rs = GPR(copy(rs_value));
15001 std::string rt = GPR(copy(rt_value));
15003 return img::format("SUBQ.PH %s, %s, %s", rd, rs, rt);
15008 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15009 * to Halve Results
15011 * 3 2 1
15012 * 10987654321098765432109876543210
15013 * 001000 01001001101
15014 * rt -----
15015 * rs -----
15016 * rd -----
15018 std::string NMD::SUBQ_S_PH(uint64 instruction)
15020 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15021 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15022 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15024 std::string rd = GPR(copy(rd_value));
15025 std::string rs = GPR(copy(rs_value));
15026 std::string rt = GPR(copy(rt_value));
15028 return img::format("SUBQ_S.PH %s, %s, %s", rd, rs, rt);
15033 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15034 * to Halve Results
15036 * 3 2 1
15037 * 10987654321098765432109876543210
15038 * 001000 01001001101
15039 * rt -----
15040 * rs -----
15041 * rd -----
15043 std::string NMD::SUBQ_S_W(uint64 instruction)
15045 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15046 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15047 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15049 std::string rd = GPR(copy(rd_value));
15050 std::string rs = GPR(copy(rs_value));
15051 std::string rt = GPR(copy(rt_value));
15053 return img::format("SUBQ_S.W %s, %s, %s", rd, rs, rt);
15058 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15059 * to Halve Results
15061 * 3 2 1
15062 * 10987654321098765432109876543210
15063 * 001000 01001001101
15064 * rt -----
15065 * rs -----
15066 * rd -----
15068 std::string NMD::SUBQH_PH(uint64 instruction)
15070 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15071 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15072 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15074 std::string rd = GPR(copy(rd_value));
15075 std::string rs = GPR(copy(rs_value));
15076 std::string rt = GPR(copy(rt_value));
15078 return img::format("SUBQH.PH %s, %s, %s", rd, rs, rt);
15083 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15084 * to Halve Results
15086 * 3 2 1
15087 * 10987654321098765432109876543210
15088 * 001000 01001001101
15089 * rt -----
15090 * rs -----
15091 * rd -----
15093 std::string NMD::SUBQH_R_PH(uint64 instruction)
15095 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15096 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15097 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15099 std::string rd = GPR(copy(rd_value));
15100 std::string rs = GPR(copy(rs_value));
15101 std::string rt = GPR(copy(rt_value));
15103 return img::format("SUBQH_R.PH %s, %s, %s", rd, rs, rt);
15108 * SUBQH_R.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15109 * to Halve Results (rounding)
15111 * 3 2 1
15112 * 10987654321098765432109876543210
15113 * 001000 11001001101
15114 * rt -----
15115 * rs -----
15116 * rd -----
15118 std::string NMD::SUBQH_R_W(uint64 instruction)
15120 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15121 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15122 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15124 std::string rd = GPR(copy(rd_value));
15125 std::string rs = GPR(copy(rs_value));
15126 std::string rt = GPR(copy(rt_value));
15128 return img::format("SUBQH_R.W %s, %s, %s", rd, rs, rt);
15133 * SUBQH.W rd, rs, rt - Subtract Fractional Words And Shift Right to Halve
15134 * Results
15136 * 3 2 1
15137 * 10987654321098765432109876543210
15138 * 001000 01010001101
15139 * rt -----
15140 * rs -----
15141 * rd -----
15143 std::string NMD::SUBQH_W(uint64 instruction)
15145 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15146 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15147 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15149 std::string rd = GPR(copy(rd_value));
15150 std::string rs = GPR(copy(rs_value));
15151 std::string rt = GPR(copy(rt_value));
15153 return img::format("SUBQH.W %s, %s, %s", rd, rs, rt);
15158 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15160 * 3 2 1
15161 * 10987654321098765432109876543210
15162 * 001000 00010001101
15163 * rt -----
15164 * rs -----
15165 * rd -----
15167 std::string NMD::SUBU_16_(uint64 instruction)
15169 uint64 rd3_value = extract_rd3_3_2_1(instruction);
15170 uint64 rt3_value = extract_rt3_9_8_7(instruction);
15171 uint64 rs3_value = extract_rs3_6_5_4(instruction);
15173 std::string rd3 = GPR(encode_gpr3(rd3_value));
15174 std::string rs3 = GPR(encode_gpr3(rs3_value));
15175 std::string rt3 = GPR(encode_gpr3(rt3_value));
15177 return img::format("SUBU %s, %s, %s", rd3, rs3, rt3);
15182 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15184 * 3 2 1
15185 * 10987654321098765432109876543210
15186 * 001000 00010001101
15187 * rt -----
15188 * rs -----
15189 * rd -----
15191 std::string NMD::SUBU_32_(uint64 instruction)
15193 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15194 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15195 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15197 std::string rd = GPR(copy(rd_value));
15198 std::string rs = GPR(copy(rs_value));
15199 std::string rt = GPR(copy(rt_value));
15201 return img::format("SUBU %s, %s, %s", rd, rs, rt);
15206 * SUBU.PH rd, rs, rt - Subtract Unsigned Integer Halfwords
15208 * 3 2 1
15209 * 10987654321098765432109876543210
15210 * 001000 01100001101
15211 * rt -----
15212 * rs -----
15213 * rd -----
15215 std::string NMD::SUBU_PH(uint64 instruction)
15217 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15218 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15219 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15221 std::string rd = GPR(copy(rd_value));
15222 std::string rs = GPR(copy(rs_value));
15223 std::string rt = GPR(copy(rt_value));
15225 return img::format("SUBU.PH %s, %s, %s", rd, rs, rt);
15230 * SUBU.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector
15232 * 3 2 1
15233 * 10987654321098765432109876543210
15234 * 001000 01011001101
15235 * rt -----
15236 * rs -----
15237 * rd -----
15239 std::string NMD::SUBU_QB(uint64 instruction)
15241 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15242 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15243 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15245 std::string rd = GPR(copy(rd_value));
15246 std::string rs = GPR(copy(rs_value));
15247 std::string rt = GPR(copy(rt_value));
15249 return img::format("SUBU.QB %s, %s, %s", rd, rs, rt);
15254 * SUBU_S.PH rd, rs, rt - Subtract Unsigned Integer Halfwords (saturating)
15256 * 3 2 1
15257 * 10987654321098765432109876543210
15258 * 001000 11100001101
15259 * rt -----
15260 * rs -----
15261 * rd -----
15263 std::string NMD::SUBU_S_PH(uint64 instruction)
15265 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15266 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15267 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15269 std::string rd = GPR(copy(rd_value));
15270 std::string rs = GPR(copy(rs_value));
15271 std::string rt = GPR(copy(rt_value));
15273 return img::format("SUBU_S.PH %s, %s, %s", rd, rs, rt);
15278 * SUBU_S.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector (saturating)
15280 * 3 2 1
15281 * 10987654321098765432109876543210
15282 * 001000 11011001101
15283 * rt -----
15284 * rs -----
15285 * rd -----
15287 std::string NMD::SUBU_S_QB(uint64 instruction)
15289 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15290 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15291 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15293 std::string rd = GPR(copy(rd_value));
15294 std::string rs = GPR(copy(rs_value));
15295 std::string rt = GPR(copy(rt_value));
15297 return img::format("SUBU_S.QB %s, %s, %s", rd, rs, rt);
15302 * SUBUH.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15303 * Results
15305 * 3 2 1
15306 * 10987654321098765432109876543210
15307 * 001000 01101001101
15308 * rt -----
15309 * rs -----
15310 * rd -----
15312 std::string NMD::SUBUH_QB(uint64 instruction)
15314 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15315 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15316 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15318 std::string rd = GPR(copy(rd_value));
15319 std::string rs = GPR(copy(rs_value));
15320 std::string rt = GPR(copy(rt_value));
15322 return img::format("SUBUH.QB %s, %s, %s", rd, rs, rt);
15327 * SUBUH_R.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15328 * Results (rounding)
15330 * 3 2 1
15331 * 10987654321098765432109876543210
15332 * 001000 11101001101
15333 * rt -----
15334 * rs -----
15335 * rd -----
15337 std::string NMD::SUBUH_R_QB(uint64 instruction)
15339 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15340 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15341 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15343 std::string rd = GPR(copy(rd_value));
15344 std::string rs = GPR(copy(rs_value));
15345 std::string rt = GPR(copy(rt_value));
15347 return img::format("SUBUH_R.QB %s, %s, %s", rd, rs, rt);
15352 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15354 * 3 2 1
15355 * 10987654321098765432109876543210
15356 * 001000 00010001101
15357 * rt -----
15358 * rs -----
15359 * rd -----
15361 std::string NMD::SW_16_(uint64 instruction)
15363 uint64 rtz3_value = extract_rtz3_9_8_7(instruction);
15364 uint64 u_value = extr_uil0il2bs4Fmsb5(instruction);
15365 uint64 rs3_value = extract_rs3_6_5_4(instruction);
15367 std::string rtz3 = GPR(encode_gpr3_store(rtz3_value));
15368 std::string u = IMMEDIATE(copy(u_value));
15369 std::string rs3 = GPR(encode_gpr3(rs3_value));
15371 return img::format("SW %s, %s(%s)", rtz3, u, rs3);
15376 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15378 * 3 2 1
15379 * 10987654321098765432109876543210
15380 * 001000 00010001101
15381 * rt -----
15382 * rs -----
15383 * rd -----
15385 std::string NMD::SW_4X4_(uint64 instruction)
15387 uint64 rs4_value = extract_rs4_4_2_1_0(instruction);
15388 uint64 rtz4_value = extract_rtz4_9_7_6_5(instruction);
15389 uint64 u_value = extr_uil3il3bs1_il8il2bs1Fmsb3(instruction);
15391 std::string rtz4 = GPR(encode_gpr4_zero(rtz4_value));
15392 std::string u = IMMEDIATE(copy(u_value));
15393 std::string rs4 = GPR(encode_gpr4(rs4_value));
15395 return img::format("SW %s, %s(%s)", rtz4, u, rs4);
15400 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15402 * 3 2 1
15403 * 10987654321098765432109876543210
15404 * 001000 00010001101
15405 * rt -----
15406 * rs -----
15407 * rd -----
15409 std::string NMD::SW_GP16_(uint64 instruction)
15411 uint64 rtz3_value = extract_rtz3_9_8_7(instruction);
15412 uint64 u_value = extr_uil0il2bs7Fmsb8(instruction);
15414 std::string rtz3 = GPR(encode_gpr3_store(rtz3_value));
15415 std::string u = IMMEDIATE(copy(u_value));
15417 return img::format("SW %s, %s($%d)", rtz3, u, 28);
15422 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15424 * 3 2 1
15425 * 10987654321098765432109876543210
15426 * 001000 00010001101
15427 * rt -----
15428 * rs -----
15429 * rd -----
15431 std::string NMD::SW_GP_(uint64 instruction)
15433 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15434 uint64 u_value = extr_uil2il2bs19Fmsb20(instruction);
15436 std::string rt = GPR(copy(rt_value));
15437 std::string u = IMMEDIATE(copy(u_value));
15439 return img::format("SW %s, %s($%d)", rt, u, 28);
15444 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15446 * 3 2 1
15447 * 10987654321098765432109876543210
15448 * 001000 00010001101
15449 * rt -----
15450 * rs -----
15451 * rd -----
15453 std::string NMD::SW_S9_(uint64 instruction)
15455 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15456 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15457 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15459 std::string rt = GPR(copy(rt_value));
15460 std::string s = IMMEDIATE(copy(s_value));
15461 std::string rs = GPR(copy(rs_value));
15463 return img::format("SW %s, %s(%s)", rt, s, rs);
15468 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15470 * 3 2 1
15471 * 10987654321098765432109876543210
15472 * 001000 00010001101
15473 * rt -----
15474 * rs -----
15475 * rd -----
15477 std::string NMD::SW_SP_(uint64 instruction)
15479 uint64 rt_value = extract_rt_9_8_7_6_5(instruction);
15480 uint64 u_value = extr_uil0il2bs5Fmsb6(instruction);
15482 std::string rt = GPR(copy(rt_value));
15483 std::string u = IMMEDIATE(copy(u_value));
15485 return img::format("SW %s, %s($%d)", rt, u, 29);
15490 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15492 * 3 2 1
15493 * 10987654321098765432109876543210
15494 * 001000 00010001101
15495 * rt -----
15496 * rs -----
15497 * rd -----
15499 std::string NMD::SW_U12_(uint64 instruction)
15501 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15502 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
15503 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15505 std::string rt = GPR(copy(rt_value));
15506 std::string u = IMMEDIATE(copy(u_value));
15507 std::string rs = GPR(copy(rs_value));
15509 return img::format("SW %s, %s(%s)", rt, u, rs);
15514 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15516 * 3 2 1
15517 * 10987654321098765432109876543210
15518 * 001000 00010001101
15519 * rt -----
15520 * rs -----
15521 * rd -----
15523 std::string NMD::SWC1_GP_(uint64 instruction)
15525 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
15526 uint64 u_value = extr_uil2il2bs16Fmsb17(instruction);
15528 std::string ft = FPR(copy(ft_value));
15529 std::string u = IMMEDIATE(copy(u_value));
15531 return img::format("SWC1 %s, %s($%d)", ft, u, 28);
15536 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15538 * 3 2 1
15539 * 10987654321098765432109876543210
15540 * 001000 00010001101
15541 * rt -----
15542 * rs -----
15543 * rd -----
15545 std::string NMD::SWC1_S9_(uint64 instruction)
15547 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15548 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
15549 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15551 std::string ft = FPR(copy(ft_value));
15552 std::string s = IMMEDIATE(copy(s_value));
15553 std::string rs = GPR(copy(rs_value));
15555 return img::format("SWC1 %s, %s(%s)", ft, s, rs);
15560 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15562 * 3 2 1
15563 * 10987654321098765432109876543210
15564 * 001000 00010001101
15565 * rt -----
15566 * rs -----
15567 * rd -----
15569 std::string NMD::SWC1_U12_(uint64 instruction)
15571 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
15572 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
15573 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15575 std::string ft = FPR(copy(ft_value));
15576 std::string u = IMMEDIATE(copy(u_value));
15577 std::string rs = GPR(copy(rs_value));
15579 return img::format("SWC1 %s, %s(%s)", ft, u, rs);
15584 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15586 * 3 2 1
15587 * 10987654321098765432109876543210
15588 * 001000 00010001101
15589 * rt -----
15590 * rs -----
15591 * rd -----
15593 std::string NMD::SWC1X(uint64 instruction)
15595 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15596 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
15597 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15599 std::string ft = FPR(copy(ft_value));
15600 std::string rs = GPR(copy(rs_value));
15601 std::string rt = GPR(copy(rt_value));
15603 return img::format("SWC1X %s, %s(%s)", ft, rs, rt);
15608 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15610 * 3 2 1
15611 * 10987654321098765432109876543210
15612 * 001000 00010001101
15613 * rt -----
15614 * rs -----
15615 * rd -----
15617 std::string NMD::SWC1XS(uint64 instruction)
15619 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15620 uint64 ft_value = extract_ft_15_14_13_12_11(instruction);
15621 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15623 std::string ft = FPR(copy(ft_value));
15624 std::string rs = GPR(copy(rs_value));
15625 std::string rt = GPR(copy(rt_value));
15627 return img::format("SWC1XS %s, %s(%s)", ft, rs, rt);
15632 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15634 * 3 2 1
15635 * 10987654321098765432109876543210
15636 * 001000 00010001101
15637 * rt -----
15638 * rs -----
15639 * rd -----
15641 std::string NMD::SWC2(uint64 instruction)
15643 uint64 cs_value = extract_cs_25_24_23_22_21(instruction);
15644 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15645 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15647 std::string cs = CPR(copy(cs_value));
15648 std::string s = IMMEDIATE(copy(s_value));
15649 std::string rs = GPR(copy(rs_value));
15651 return img::format("SWC2 %s, %s(%s)", cs, s, rs);
15656 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15658 * 3 2 1
15659 * 10987654321098765432109876543210
15660 * 001000 00010001101
15661 * rt -----
15662 * rs -----
15663 * rd -----
15665 std::string NMD::SWE(uint64 instruction)
15667 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15668 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15669 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15671 std::string rt = GPR(copy(rt_value));
15672 std::string s = IMMEDIATE(copy(s_value));
15673 std::string rs = GPR(copy(rs_value));
15675 return img::format("SWE %s, %s(%s)", rt, s, rs);
15680 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15682 * 3 2 1
15683 * 10987654321098765432109876543210
15684 * 001000 00010001101
15685 * rt -----
15686 * rs -----
15687 * rd -----
15689 std::string NMD::SWM(uint64 instruction)
15691 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15692 uint64 count3_value = extract_count3_14_13_12(instruction);
15693 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15694 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15696 std::string rt = GPR(copy(rt_value));
15697 std::string s = IMMEDIATE(copy(s_value));
15698 std::string rs = GPR(copy(rs_value));
15699 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
15701 return img::format("SWM %s, %s(%s), %s", rt, s, rs, count3);
15706 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15708 * 3 2 1
15709 * 10987654321098765432109876543210
15710 * 001000 00010001101
15711 * rt -----
15712 * rs -----
15713 * rd -----
15715 std::string NMD::SWPC_48_(uint64 instruction)
15717 uint64 rt_value = extract_rt_41_40_39_38_37(instruction);
15718 int64 s_value = extr_sil0il16bs16_il16il0bs16Tmsb31(instruction);
15720 std::string rt = GPR(copy(rt_value));
15721 std::string s = ADDRESS(encode_s_from_address(s_value), 6);
15723 return img::format("SWPC %s, %s", rt, s);
15728 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15730 * 3 2 1
15731 * 10987654321098765432109876543210
15732 * 001000 00010001101
15733 * rt -----
15734 * rs -----
15735 * rd -----
15737 std::string NMD::SWX(uint64 instruction)
15739 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15740 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15741 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15743 std::string rd = GPR(copy(rd_value));
15744 std::string rs = GPR(copy(rs_value));
15745 std::string rt = GPR(copy(rt_value));
15747 return img::format("SWX %s, %s(%s)", rd, rs, rt);
15752 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15754 * 3 2 1
15755 * 10987654321098765432109876543210
15756 * 001000 00010001101
15757 * rt -----
15758 * rs -----
15759 * rd -----
15761 std::string NMD::SWXS(uint64 instruction)
15763 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15764 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
15765 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15767 std::string rd = GPR(copy(rd_value));
15768 std::string rs = GPR(copy(rs_value));
15769 std::string rt = GPR(copy(rt_value));
15771 return img::format("SWXS %s, %s(%s)", rd, rs, rt);
15776 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15778 * 3 2 1
15779 * 10987654321098765432109876543210
15780 * 001000 00010001101
15781 * rt -----
15782 * rs -----
15783 * rd -----
15785 std::string NMD::SYNC(uint64 instruction)
15787 uint64 stype_value = extract_stype_20_19_18_17_16(instruction);
15789 std::string stype = IMMEDIATE(copy(stype_value));
15791 return img::format("SYNC %s", stype);
15796 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15798 * 3 2 1
15799 * 10987654321098765432109876543210
15800 * 001000 00010001101
15801 * rt -----
15802 * rs -----
15803 * rd -----
15805 std::string NMD::SYNCI(uint64 instruction)
15807 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15808 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15810 std::string s = IMMEDIATE(copy(s_value));
15811 std::string rs = GPR(copy(rs_value));
15813 return img::format("SYNCI %s(%s)", s, rs);
15818 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15820 * 3 2 1
15821 * 10987654321098765432109876543210
15822 * 001000 00010001101
15823 * rt -----
15824 * rs -----
15825 * rd -----
15827 std::string NMD::SYNCIE(uint64 instruction)
15829 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
15830 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15832 std::string s = IMMEDIATE(copy(s_value));
15833 std::string rs = GPR(copy(rs_value));
15835 return img::format("SYNCIE %s(%s)", s, rs);
15840 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15842 * 3 2 1
15843 * 10987654321098765432109876543210
15844 * 001000 00010001101
15845 * rt -----
15846 * rs -----
15847 * rd -----
15849 std::string NMD::SYSCALL_16_(uint64 instruction)
15851 uint64 code_value = extract_code_1_0(instruction);
15853 std::string code = IMMEDIATE(copy(code_value));
15855 return img::format("SYSCALL %s", code);
15860 * SYSCALL code - System Call. Cause a System Call Exception
15862 * 3 2 1
15863 * 10987654321098765432109876543210
15864 * 00000000000010
15865 * code ------------------
15867 std::string NMD::SYSCALL_32_(uint64 instruction)
15869 uint64 code_value = extract_code_17_to_0(instruction);
15871 std::string code = IMMEDIATE(copy(code_value));
15873 return img::format("SYSCALL %s", code);
15878 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15880 * 3 2 1
15881 * 10987654321098765432109876543210
15882 * 001000 00010001101
15883 * rt -----
15884 * rs -----
15885 * rd -----
15887 std::string NMD::TEQ(uint64 instruction)
15889 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
15890 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
15892 std::string rs = GPR(copy(rs_value));
15893 std::string rt = GPR(copy(rt_value));
15895 return img::format("TEQ %s, %s", rs, rt);
15900 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15902 * 3 2 1
15903 * 10987654321098765432109876543210
15904 * 001000 00010001101
15905 * rt -----
15906 * rs -----
15907 * rd -----
15909 std::string NMD::TLBGINV(uint64 instruction)
15911 (void)instruction;
15913 return "TLBGINV ";
15918 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15920 * 3 2 1
15921 * 10987654321098765432109876543210
15922 * 001000 00010001101
15923 * rt -----
15924 * rs -----
15925 * rd -----
15927 std::string NMD::TLBGINVF(uint64 instruction)
15929 (void)instruction;
15931 return "TLBGINVF ";
15936 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15938 * 3 2 1
15939 * 10987654321098765432109876543210
15940 * 001000 00010001101
15941 * rt -----
15942 * rs -----
15943 * rd -----
15945 std::string NMD::TLBGP(uint64 instruction)
15947 (void)instruction;
15949 return "TLBGP ";
15954 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15956 * 3 2 1
15957 * 10987654321098765432109876543210
15958 * 001000 00010001101
15959 * rt -----
15960 * rs -----
15961 * rd -----
15963 std::string NMD::TLBGR(uint64 instruction)
15965 (void)instruction;
15967 return "TLBGR ";
15972 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15974 * 3 2 1
15975 * 10987654321098765432109876543210
15976 * 001000 00010001101
15977 * rt -----
15978 * rs -----
15979 * rd -----
15981 std::string NMD::TLBGWI(uint64 instruction)
15983 (void)instruction;
15985 return "TLBGWI ";
15990 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15992 * 3 2 1
15993 * 10987654321098765432109876543210
15994 * 001000 00010001101
15995 * rt -----
15996 * rs -----
15997 * rd -----
15999 std::string NMD::TLBGWR(uint64 instruction)
16001 (void)instruction;
16003 return "TLBGWR ";
16008 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16010 * 3 2 1
16011 * 10987654321098765432109876543210
16012 * 001000 00010001101
16013 * rt -----
16014 * rs -----
16015 * rd -----
16017 std::string NMD::TLBINV(uint64 instruction)
16019 (void)instruction;
16021 return "TLBINV ";
16026 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16028 * 3 2 1
16029 * 10987654321098765432109876543210
16030 * 001000 00010001101
16031 * rt -----
16032 * rs -----
16033 * rd -----
16035 std::string NMD::TLBINVF(uint64 instruction)
16037 (void)instruction;
16039 return "TLBINVF ";
16044 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16046 * 3 2 1
16047 * 10987654321098765432109876543210
16048 * 001000 00010001101
16049 * rt -----
16050 * rs -----
16051 * rd -----
16053 std::string NMD::TLBP(uint64 instruction)
16055 (void)instruction;
16057 return "TLBP ";
16062 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16064 * 3 2 1
16065 * 10987654321098765432109876543210
16066 * 001000 00010001101
16067 * rt -----
16068 * rs -----
16069 * rd -----
16071 std::string NMD::TLBR(uint64 instruction)
16073 (void)instruction;
16075 return "TLBR ";
16080 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16082 * 3 2 1
16083 * 10987654321098765432109876543210
16084 * 001000 00010001101
16085 * rt -----
16086 * rs -----
16087 * rd -----
16089 std::string NMD::TLBWI(uint64 instruction)
16091 (void)instruction;
16093 return "TLBWI ";
16098 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16100 * 3 2 1
16101 * 10987654321098765432109876543210
16102 * 001000 00010001101
16103 * rt -----
16104 * rs -----
16105 * rd -----
16107 std::string NMD::TLBWR(uint64 instruction)
16109 (void)instruction;
16111 return "TLBWR ";
16116 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16118 * 3 2 1
16119 * 10987654321098765432109876543210
16120 * 001000 00010001101
16121 * rt -----
16122 * rs -----
16123 * rd -----
16125 std::string NMD::TNE(uint64 instruction)
16127 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16128 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16130 std::string rs = GPR(copy(rs_value));
16131 std::string rt = GPR(copy(rt_value));
16133 return img::format("TNE %s, %s", rs, rt);
16138 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16140 * 3 2 1
16141 * 10987654321098765432109876543210
16142 * 001000 00010001101
16143 * rt -----
16144 * rs -----
16145 * rd -----
16147 std::string NMD::TRUNC_L_D(uint64 instruction)
16149 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
16150 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
16152 std::string ft = FPR(copy(ft_value));
16153 std::string fs = FPR(copy(fs_value));
16155 return img::format("TRUNC.L.D %s, %s", ft, fs);
16160 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16162 * 3 2 1
16163 * 10987654321098765432109876543210
16164 * 001000 00010001101
16165 * rt -----
16166 * rs -----
16167 * rd -----
16169 std::string NMD::TRUNC_L_S(uint64 instruction)
16171 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
16172 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
16174 std::string ft = FPR(copy(ft_value));
16175 std::string fs = FPR(copy(fs_value));
16177 return img::format("TRUNC.L.S %s, %s", ft, fs);
16182 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16184 * 3 2 1
16185 * 10987654321098765432109876543210
16186 * 001000 00010001101
16187 * rt -----
16188 * rs -----
16189 * rd -----
16191 std::string NMD::TRUNC_W_D(uint64 instruction)
16193 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
16194 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
16196 std::string ft = FPR(copy(ft_value));
16197 std::string fs = FPR(copy(fs_value));
16199 return img::format("TRUNC.W.D %s, %s", ft, fs);
16204 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16206 * 3 2 1
16207 * 10987654321098765432109876543210
16208 * 001000 00010001101
16209 * rt -----
16210 * rs -----
16211 * rd -----
16213 std::string NMD::TRUNC_W_S(uint64 instruction)
16215 uint64 fs_value = extract_fs_15_14_13_12_11(instruction);
16216 uint64 ft_value = extract_ft_20_19_18_17_16(instruction);
16218 std::string ft = FPR(copy(ft_value));
16219 std::string fs = FPR(copy(fs_value));
16221 return img::format("TRUNC.W.S %s, %s", ft, fs);
16226 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16228 * 3 2 1
16229 * 10987654321098765432109876543210
16230 * 001000 00010001101
16231 * rt -----
16232 * rs -----
16233 * rd -----
16235 std::string NMD::UALDM(uint64 instruction)
16237 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16238 uint64 count3_value = extract_count3_14_13_12(instruction);
16239 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16240 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16242 std::string rt = GPR(copy(rt_value));
16243 std::string s = IMMEDIATE(copy(s_value));
16244 std::string rs = GPR(copy(rs_value));
16245 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
16247 return img::format("UALDM %s, %s(%s), %s", rt, s, rs, count3);
16252 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16254 * 3 2 1
16255 * 10987654321098765432109876543210
16256 * 001000 00010001101
16257 * rt -----
16258 * rs -----
16259 * rd -----
16261 std::string NMD::UALH(uint64 instruction)
16263 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16264 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16265 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16267 std::string rt = GPR(copy(rt_value));
16268 std::string s = IMMEDIATE(copy(s_value));
16269 std::string rs = GPR(copy(rs_value));
16271 return img::format("UALH %s, %s(%s)", rt, s, rs);
16276 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16278 * 3 2 1
16279 * 10987654321098765432109876543210
16280 * 001000 00010001101
16281 * rt -----
16282 * rs -----
16283 * rd -----
16285 std::string NMD::UALWM(uint64 instruction)
16287 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16288 uint64 count3_value = extract_count3_14_13_12(instruction);
16289 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16290 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16292 std::string rt = GPR(copy(rt_value));
16293 std::string s = IMMEDIATE(copy(s_value));
16294 std::string rs = GPR(copy(rs_value));
16295 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
16297 return img::format("UALWM %s, %s(%s), %s", rt, s, rs, count3);
16302 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16304 * 3 2 1
16305 * 10987654321098765432109876543210
16306 * 001000 00010001101
16307 * rt -----
16308 * rs -----
16309 * rd -----
16311 std::string NMD::UASDM(uint64 instruction)
16313 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16314 uint64 count3_value = extract_count3_14_13_12(instruction);
16315 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16316 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16318 std::string rt = GPR(copy(rt_value));
16319 std::string s = IMMEDIATE(copy(s_value));
16320 std::string rs = GPR(copy(rs_value));
16321 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
16323 return img::format("UASDM %s, %s(%s), %s", rt, s, rs, count3);
16328 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16330 * 3 2 1
16331 * 10987654321098765432109876543210
16332 * 001000 00010001101
16333 * rt -----
16334 * rs -----
16335 * rd -----
16337 std::string NMD::UASH(uint64 instruction)
16339 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16340 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16341 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16343 std::string rt = GPR(copy(rt_value));
16344 std::string s = IMMEDIATE(copy(s_value));
16345 std::string rs = GPR(copy(rs_value));
16347 return img::format("UASH %s, %s(%s)", rt, s, rs);
16352 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16354 * 3 2 1
16355 * 10987654321098765432109876543210
16356 * 001000 00010001101
16357 * rt -----
16358 * rs -----
16359 * rd -----
16361 std::string NMD::UASWM(uint64 instruction)
16363 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16364 uint64 count3_value = extract_count3_14_13_12(instruction);
16365 int64 s_value = extr_sil0il0bs8_il15il8bs1Tmsb8(instruction);
16366 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16368 std::string rt = GPR(copy(rt_value));
16369 std::string s = IMMEDIATE(copy(s_value));
16370 std::string rs = GPR(copy(rs_value));
16371 std::string count3 = IMMEDIATE(encode_count3_from_count(count3_value));
16373 return img::format("UASWM %s, %s(%s), %s", rt, s, rs, count3);
16378 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16380 * 3 2 1
16381 * 10987654321098765432109876543210
16382 * 001000 00010001101
16383 * rt -----
16384 * rs -----
16385 * rd -----
16387 std::string NMD::UDI(uint64 instruction)
16389 uint64 op_value = extract_op_25_to_3(instruction);
16391 std::string op = IMMEDIATE(copy(op_value));
16393 return img::format("UDI %s", op);
16398 * WAIT code - Enter Wait State
16400 * 3 2 1
16401 * 10987654321098765432109876543210
16402 * 001000 1100001101111111
16403 * code ----------
16405 std::string NMD::WAIT(uint64 instruction)
16407 uint64 code_value = extract_code_25_24_23_22_21_20_19_18_17_16(instruction);
16409 std::string code = IMMEDIATE(copy(code_value));
16411 return img::format("WAIT %s", code);
16416 * WRDSP rt, mask - Write Fields to DSPControl Register from a GPR
16418 * 3 2 1
16419 * 10987654321098765432109876543210
16420 * 001000 01011001111111
16421 * rt -----
16422 * mask -------
16424 std::string NMD::WRDSP(uint64 instruction)
16426 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16427 uint64 mask_value = extract_mask_20_19_18_17_16_15_14(instruction);
16429 std::string rt = GPR(copy(rt_value));
16430 std::string mask = IMMEDIATE(copy(mask_value));
16432 return img::format("WRDSP %s, %s", rt, mask);
16437 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16439 * 3 2 1
16440 * 10987654321098765432109876543210
16441 * 001000 00010001101
16442 * rt -----
16443 * rs -----
16444 * rd -----
16446 std::string NMD::WRPGPR(uint64 instruction)
16448 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16449 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16451 std::string rt = GPR(copy(rt_value));
16452 std::string rs = GPR(copy(rs_value));
16454 return img::format("WRPGPR %s, %s", rt, rs);
16459 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16461 * 3 2 1
16462 * 10987654321098765432109876543210
16463 * 001000 00010001101
16464 * rt -----
16465 * rs -----
16466 * rd -----
16468 std::string NMD::XOR_16_(uint64 instruction)
16470 uint64 rt3_value = extract_rt3_9_8_7(instruction);
16471 uint64 rs3_value = extract_rs3_6_5_4(instruction);
16473 std::string rs3 = GPR(encode_gpr3(rs3_value));
16474 std::string rt3 = GPR(encode_gpr3(rt3_value));
16476 return img::format("XOR %s, %s", rs3, rt3);
16481 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16483 * 3 2 1
16484 * 10987654321098765432109876543210
16485 * 001000 00010001101
16486 * rt -----
16487 * rs -----
16488 * rd -----
16490 std::string NMD::XOR_32_(uint64 instruction)
16492 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16493 uint64 rd_value = extract_rd_20_19_18_17_16(instruction);
16494 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16496 std::string rd = GPR(copy(rd_value));
16497 std::string rs = GPR(copy(rs_value));
16498 std::string rt = GPR(copy(rt_value));
16500 return img::format("XOR %s, %s, %s", rd, rs, rt);
16505 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16507 * 3 2 1
16508 * 10987654321098765432109876543210
16509 * 001000 00010001101
16510 * rt -----
16511 * rs -----
16512 * rd -----
16514 std::string NMD::XORI(uint64 instruction)
16516 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16517 uint64 u_value = extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction);
16518 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16520 std::string rt = GPR(copy(rt_value));
16521 std::string rs = GPR(copy(rs_value));
16522 std::string u = IMMEDIATE(copy(u_value));
16524 return img::format("XORI %s, %s, %s", rt, rs, u);
16529 * YIELD rt, rs -
16531 * 3 2 1
16532 * 10987654321098765432109876543210
16533 * 001000 00010001101
16534 * rt -----
16535 * rs -----
16537 std::string NMD::YIELD(uint64 instruction)
16539 uint64 rt_value = extract_rt_25_24_23_22_21(instruction);
16540 uint64 rs_value = extract_rs_20_19_18_17_16(instruction);
16542 std::string rt = GPR(copy(rt_value));
16543 std::string rs = GPR(copy(rs_value));
16545 return img::format("YIELD %s, %s", rt, rs);
16550 NMD::Pool NMD::P_SYSCALL[2] = {
16551 { instruction , 0 , 0 , 32,
16552 0xfffc0000, 0x00080000, &NMD::SYSCALL_32_ , 0,
16553 0x0 }, /* SYSCALL[32] */
16554 { instruction , 0 , 0 , 32,
16555 0xfffc0000, 0x000c0000, &NMD::HYPCALL , 0,
16556 CP0_ | VZ_ }, /* HYPCALL */
16560 NMD::Pool NMD::P_RI[4] = {
16561 { instruction , 0 , 0 , 32,
16562 0xfff80000, 0x00000000, &NMD::SIGRIE , 0,
16563 0x0 }, /* SIGRIE */
16564 { pool , P_SYSCALL , 2 , 32,
16565 0xfff80000, 0x00080000, 0 , 0,
16566 0x0 }, /* P.SYSCALL */
16567 { instruction , 0 , 0 , 32,
16568 0xfff80000, 0x00100000, &NMD::BREAK_32_ , 0,
16569 0x0 }, /* BREAK[32] */
16570 { instruction , 0 , 0 , 32,
16571 0xfff80000, 0x00180000, &NMD::SDBBP_32_ , 0,
16572 EJTAG_ }, /* SDBBP[32] */
16576 NMD::Pool NMD::P_ADDIU[2] = {
16577 { pool , P_RI , 4 , 32,
16578 0xffe00000, 0x00000000, 0 , 0,
16579 0x0 }, /* P.RI */
16580 { instruction , 0 , 0 , 32,
16581 0xfc000000, 0x00000000, &NMD::ADDIU_32_ , &NMD::ADDIU_32__cond ,
16582 0x0 }, /* ADDIU[32] */
16586 NMD::Pool NMD::P_TRAP[2] = {
16587 { instruction , 0 , 0 , 32,
16588 0xfc0007ff, 0x20000000, &NMD::TEQ , 0,
16589 XMMS_ }, /* TEQ */
16590 { instruction , 0 , 0 , 32,
16591 0xfc0007ff, 0x20000400, &NMD::TNE , 0,
16592 XMMS_ }, /* TNE */
16596 NMD::Pool NMD::P_CMOVE[2] = {
16597 { instruction , 0 , 0 , 32,
16598 0xfc0007ff, 0x20000210, &NMD::MOVZ , 0,
16599 0x0 }, /* MOVZ */
16600 { instruction , 0 , 0 , 32,
16601 0xfc0007ff, 0x20000610, &NMD::MOVN , 0,
16602 0x0 }, /* MOVN */
16606 NMD::Pool NMD::P_D_MT_VPE[2] = {
16607 { instruction , 0 , 0 , 32,
16608 0xfc1f3fff, 0x20010ab0, &NMD::DMT , 0,
16609 MT_ }, /* DMT */
16610 { instruction , 0 , 0 , 32,
16611 0xfc1f3fff, 0x20000ab0, &NMD::DVPE , 0,
16612 MT_ }, /* DVPE */
16616 NMD::Pool NMD::P_E_MT_VPE[2] = {
16617 { instruction , 0 , 0 , 32,
16618 0xfc1f3fff, 0x20010eb0, &NMD::EMT , 0,
16619 MT_ }, /* EMT */
16620 { instruction , 0 , 0 , 32,
16621 0xfc1f3fff, 0x20000eb0, &NMD::EVPE , 0,
16622 MT_ }, /* EVPE */
16626 NMD::Pool NMD::_P_MT_VPE[2] = {
16627 { pool , P_D_MT_VPE , 2 , 32,
16628 0xfc003fff, 0x20000ab0, 0 , 0,
16629 0x0 }, /* P.D_MT_VPE */
16630 { pool , P_E_MT_VPE , 2 , 32,
16631 0xfc003fff, 0x20000eb0, 0 , 0,
16632 0x0 }, /* P.E_MT_VPE */
16636 NMD::Pool NMD::P_MT_VPE[8] = {
16637 { reserved_block , 0 , 0 , 32,
16638 0xfc003bff, 0x200002b0, 0 , 0,
16639 0x0 }, /* P.MT_VPE~*(0) */
16640 { pool , _P_MT_VPE , 2 , 32,
16641 0xfc003bff, 0x20000ab0, 0 , 0,
16642 0x0 }, /* _P.MT_VPE */
16643 { reserved_block , 0 , 0 , 32,
16644 0xfc003bff, 0x200012b0, 0 , 0,
16645 0x0 }, /* P.MT_VPE~*(2) */
16646 { reserved_block , 0 , 0 , 32,
16647 0xfc003bff, 0x20001ab0, 0 , 0,
16648 0x0 }, /* P.MT_VPE~*(3) */
16649 { reserved_block , 0 , 0 , 32,
16650 0xfc003bff, 0x200022b0, 0 , 0,
16651 0x0 }, /* P.MT_VPE~*(4) */
16652 { reserved_block , 0 , 0 , 32,
16653 0xfc003bff, 0x20002ab0, 0 , 0,
16654 0x0 }, /* P.MT_VPE~*(5) */
16655 { reserved_block , 0 , 0 , 32,
16656 0xfc003bff, 0x200032b0, 0 , 0,
16657 0x0 }, /* P.MT_VPE~*(6) */
16658 { reserved_block , 0 , 0 , 32,
16659 0xfc003bff, 0x20003ab0, 0 , 0,
16660 0x0 }, /* P.MT_VPE~*(7) */
16664 NMD::Pool NMD::P_DVP[2] = {
16665 { instruction , 0 , 0 , 32,
16666 0xfc00ffff, 0x20000390, &NMD::DVP , 0,
16667 0x0 }, /* DVP */
16668 { instruction , 0 , 0 , 32,
16669 0xfc00ffff, 0x20000790, &NMD::EVP , 0,
16670 0x0 }, /* EVP */
16674 NMD::Pool NMD::P_SLTU[2] = {
16675 { pool , P_DVP , 2 , 32,
16676 0xfc00fbff, 0x20000390, 0 , 0,
16677 0x0 }, /* P.DVP */
16678 { instruction , 0 , 0 , 32,
16679 0xfc0003ff, 0x20000390, &NMD::SLTU , &NMD::SLTU_cond ,
16680 0x0 }, /* SLTU */
16684 NMD::Pool NMD::_POOL32A0[128] = {
16685 { pool , P_TRAP , 2 , 32,
16686 0xfc0003ff, 0x20000000, 0 , 0,
16687 0x0 }, /* P.TRAP */
16688 { instruction , 0 , 0 , 32,
16689 0xfc0003ff, 0x20000008, &NMD::SEB , 0,
16690 XMMS_ }, /* SEB */
16691 { instruction , 0 , 0 , 32,
16692 0xfc0003ff, 0x20000010, &NMD::SLLV , 0,
16693 0x0 }, /* SLLV */
16694 { instruction , 0 , 0 , 32,
16695 0xfc0003ff, 0x20000018, &NMD::MUL_32_ , 0,
16696 0x0 }, /* MUL[32] */
16697 { reserved_block , 0 , 0 , 32,
16698 0xfc0003ff, 0x20000020, 0 , 0,
16699 0x0 }, /* _POOL32A0~*(4) */
16700 { reserved_block , 0 , 0 , 32,
16701 0xfc0003ff, 0x20000028, 0 , 0,
16702 0x0 }, /* _POOL32A0~*(5) */
16703 { instruction , 0 , 0 , 32,
16704 0xfc0003ff, 0x20000030, &NMD::MFC0 , 0,
16705 0x0 }, /* MFC0 */
16706 { instruction , 0 , 0 , 32,
16707 0xfc0003ff, 0x20000038, &NMD::MFHC0 , 0,
16708 CP0_ | MVH_ }, /* MFHC0 */
16709 { reserved_block , 0 , 0 , 32,
16710 0xfc0003ff, 0x20000040, 0 , 0,
16711 0x0 }, /* _POOL32A0~*(8) */
16712 { instruction , 0 , 0 , 32,
16713 0xfc0003ff, 0x20000048, &NMD::SEH , 0,
16714 0x0 }, /* SEH */
16715 { instruction , 0 , 0 , 32,
16716 0xfc0003ff, 0x20000050, &NMD::SRLV , 0,
16717 0x0 }, /* SRLV */
16718 { instruction , 0 , 0 , 32,
16719 0xfc0003ff, 0x20000058, &NMD::MUH , 0,
16720 0x0 }, /* MUH */
16721 { reserved_block , 0 , 0 , 32,
16722 0xfc0003ff, 0x20000060, 0 , 0,
16723 0x0 }, /* _POOL32A0~*(12) */
16724 { reserved_block , 0 , 0 , 32,
16725 0xfc0003ff, 0x20000068, 0 , 0,
16726 0x0 }, /* _POOL32A0~*(13) */
16727 { instruction , 0 , 0 , 32,
16728 0xfc0003ff, 0x20000070, &NMD::MTC0 , 0,
16729 CP0_ }, /* MTC0 */
16730 { instruction , 0 , 0 , 32,
16731 0xfc0003ff, 0x20000078, &NMD::MTHC0 , 0,
16732 CP0_ | MVH_ }, /* MTHC0 */
16733 { reserved_block , 0 , 0 , 32,
16734 0xfc0003ff, 0x20000080, 0 , 0,
16735 0x0 }, /* _POOL32A0~*(16) */
16736 { reserved_block , 0 , 0 , 32,
16737 0xfc0003ff, 0x20000088, 0 , 0,
16738 0x0 }, /* _POOL32A0~*(17) */
16739 { instruction , 0 , 0 , 32,
16740 0xfc0003ff, 0x20000090, &NMD::SRAV , 0,
16741 0x0 }, /* SRAV */
16742 { instruction , 0 , 0 , 32,
16743 0xfc0003ff, 0x20000098, &NMD::MULU , 0,
16744 0x0 }, /* MULU */
16745 { reserved_block , 0 , 0 , 32,
16746 0xfc0003ff, 0x200000a0, 0 , 0,
16747 0x0 }, /* _POOL32A0~*(20) */
16748 { reserved_block , 0 , 0 , 32,
16749 0xfc0003ff, 0x200000a8, 0 , 0,
16750 0x0 }, /* _POOL32A0~*(21) */
16751 { instruction , 0 , 0 , 32,
16752 0xfc0003ff, 0x200000b0, &NMD::MFGC0 , 0,
16753 CP0_ | VZ_ }, /* MFGC0 */
16754 { instruction , 0 , 0 , 32,
16755 0xfc0003ff, 0x200000b8, &NMD::MFHGC0 , 0,
16756 CP0_ | VZ_ | MVH_ }, /* MFHGC0 */
16757 { reserved_block , 0 , 0 , 32,
16758 0xfc0003ff, 0x200000c0, 0 , 0,
16759 0x0 }, /* _POOL32A0~*(24) */
16760 { reserved_block , 0 , 0 , 32,
16761 0xfc0003ff, 0x200000c8, 0 , 0,
16762 0x0 }, /* _POOL32A0~*(25) */
16763 { instruction , 0 , 0 , 32,
16764 0xfc0003ff, 0x200000d0, &NMD::ROTRV , 0,
16765 0x0 }, /* ROTRV */
16766 { instruction , 0 , 0 , 32,
16767 0xfc0003ff, 0x200000d8, &NMD::MUHU , 0,
16768 0x0 }, /* MUHU */
16769 { reserved_block , 0 , 0 , 32,
16770 0xfc0003ff, 0x200000e0, 0 , 0,
16771 0x0 }, /* _POOL32A0~*(28) */
16772 { reserved_block , 0 , 0 , 32,
16773 0xfc0003ff, 0x200000e8, 0 , 0,
16774 0x0 }, /* _POOL32A0~*(29) */
16775 { instruction , 0 , 0 , 32,
16776 0xfc0003ff, 0x200000f0, &NMD::MTGC0 , 0,
16777 CP0_ | VZ_ }, /* MTGC0 */
16778 { instruction , 0 , 0 , 32,
16779 0xfc0003ff, 0x200000f8, &NMD::MTHGC0 , 0,
16780 CP0_ | VZ_ | MVH_ }, /* MTHGC0 */
16781 { reserved_block , 0 , 0 , 32,
16782 0xfc0003ff, 0x20000100, 0 , 0,
16783 0x0 }, /* _POOL32A0~*(32) */
16784 { reserved_block , 0 , 0 , 32,
16785 0xfc0003ff, 0x20000108, 0 , 0,
16786 0x0 }, /* _POOL32A0~*(33) */
16787 { instruction , 0 , 0 , 32,
16788 0xfc0003ff, 0x20000110, &NMD::ADD , 0,
16789 XMMS_ }, /* ADD */
16790 { instruction , 0 , 0 , 32,
16791 0xfc0003ff, 0x20000118, &NMD::DIV , 0,
16792 0x0 }, /* DIV */
16793 { reserved_block , 0 , 0 , 32,
16794 0xfc0003ff, 0x20000120, 0 , 0,
16795 0x0 }, /* _POOL32A0~*(36) */
16796 { reserved_block , 0 , 0 , 32,
16797 0xfc0003ff, 0x20000128, 0 , 0,
16798 0x0 }, /* _POOL32A0~*(37) */
16799 { instruction , 0 , 0 , 32,
16800 0xfc0003ff, 0x20000130, &NMD::DMFC0 , 0,
16801 CP0_ | MIPS64_ }, /* DMFC0 */
16802 { reserved_block , 0 , 0 , 32,
16803 0xfc0003ff, 0x20000138, 0 , 0,
16804 0x0 }, /* _POOL32A0~*(39) */
16805 { reserved_block , 0 , 0 , 32,
16806 0xfc0003ff, 0x20000140, 0 , 0,
16807 0x0 }, /* _POOL32A0~*(40) */
16808 { reserved_block , 0 , 0 , 32,
16809 0xfc0003ff, 0x20000148, 0 , 0,
16810 0x0 }, /* _POOL32A0~*(41) */
16811 { instruction , 0 , 0 , 32,
16812 0xfc0003ff, 0x20000150, &NMD::ADDU_32_ , 0,
16813 0x0 }, /* ADDU[32] */
16814 { instruction , 0 , 0 , 32,
16815 0xfc0003ff, 0x20000158, &NMD::MOD , 0,
16816 0x0 }, /* MOD */
16817 { reserved_block , 0 , 0 , 32,
16818 0xfc0003ff, 0x20000160, 0 , 0,
16819 0x0 }, /* _POOL32A0~*(44) */
16820 { reserved_block , 0 , 0 , 32,
16821 0xfc0003ff, 0x20000168, 0 , 0,
16822 0x0 }, /* _POOL32A0~*(45) */
16823 { instruction , 0 , 0 , 32,
16824 0xfc0003ff, 0x20000170, &NMD::DMTC0 , 0,
16825 CP0_ | MIPS64_ }, /* DMTC0 */
16826 { reserved_block , 0 , 0 , 32,
16827 0xfc0003ff, 0x20000178, 0 , 0,
16828 0x0 }, /* _POOL32A0~*(47) */
16829 { reserved_block , 0 , 0 , 32,
16830 0xfc0003ff, 0x20000180, 0 , 0,
16831 0x0 }, /* _POOL32A0~*(48) */
16832 { reserved_block , 0 , 0 , 32,
16833 0xfc0003ff, 0x20000188, 0 , 0,
16834 0x0 }, /* _POOL32A0~*(49) */
16835 { instruction , 0 , 0 , 32,
16836 0xfc0003ff, 0x20000190, &NMD::SUB , 0,
16837 XMMS_ }, /* SUB */
16838 { instruction , 0 , 0 , 32,
16839 0xfc0003ff, 0x20000198, &NMD::DIVU , 0,
16840 0x0 }, /* DIVU */
16841 { reserved_block , 0 , 0 , 32,
16842 0xfc0003ff, 0x200001a0, 0 , 0,
16843 0x0 }, /* _POOL32A0~*(52) */
16844 { reserved_block , 0 , 0 , 32,
16845 0xfc0003ff, 0x200001a8, 0 , 0,
16846 0x0 }, /* _POOL32A0~*(53) */
16847 { instruction , 0 , 0 , 32,
16848 0xfc0003ff, 0x200001b0, &NMD::DMFGC0 , 0,
16849 CP0_ | MIPS64_ | VZ_}, /* DMFGC0 */
16850 { reserved_block , 0 , 0 , 32,
16851 0xfc0003ff, 0x200001b8, 0 , 0,
16852 0x0 }, /* _POOL32A0~*(55) */
16853 { instruction , 0 , 0 , 32,
16854 0xfc0003ff, 0x200001c0, &NMD::RDHWR , 0,
16855 XMMS_ }, /* RDHWR */
16856 { reserved_block , 0 , 0 , 32,
16857 0xfc0003ff, 0x200001c8, 0 , 0,
16858 0x0 }, /* _POOL32A0~*(57) */
16859 { instruction , 0 , 0 , 32,
16860 0xfc0003ff, 0x200001d0, &NMD::SUBU_32_ , 0,
16861 0x0 }, /* SUBU[32] */
16862 { instruction , 0 , 0 , 32,
16863 0xfc0003ff, 0x200001d8, &NMD::MODU , 0,
16864 0x0 }, /* MODU */
16865 { reserved_block , 0 , 0 , 32,
16866 0xfc0003ff, 0x200001e0, 0 , 0,
16867 0x0 }, /* _POOL32A0~*(60) */
16868 { reserved_block , 0 , 0 , 32,
16869 0xfc0003ff, 0x200001e8, 0 , 0,
16870 0x0 }, /* _POOL32A0~*(61) */
16871 { instruction , 0 , 0 , 32,
16872 0xfc0003ff, 0x200001f0, &NMD::DMTGC0 , 0,
16873 CP0_ | MIPS64_ | VZ_}, /* DMTGC0 */
16874 { reserved_block , 0 , 0 , 32,
16875 0xfc0003ff, 0x200001f8, 0 , 0,
16876 0x0 }, /* _POOL32A0~*(63) */
16877 { reserved_block , 0 , 0 , 32,
16878 0xfc0003ff, 0x20000200, 0 , 0,
16879 0x0 }, /* _POOL32A0~*(64) */
16880 { reserved_block , 0 , 0 , 32,
16881 0xfc0003ff, 0x20000208, 0 , 0,
16882 0x0 }, /* _POOL32A0~*(65) */
16883 { pool , P_CMOVE , 2 , 32,
16884 0xfc0003ff, 0x20000210, 0 , 0,
16885 0x0 }, /* P.CMOVE */
16886 { reserved_block , 0 , 0 , 32,
16887 0xfc0003ff, 0x20000218, 0 , 0,
16888 0x0 }, /* _POOL32A0~*(67) */
16889 { reserved_block , 0 , 0 , 32,
16890 0xfc0003ff, 0x20000220, 0 , 0,
16891 0x0 }, /* _POOL32A0~*(68) */
16892 { instruction , 0 , 0 , 32,
16893 0xfc0003ff, 0x20000228, &NMD::FORK , 0,
16894 MT_ }, /* FORK */
16895 { instruction , 0 , 0 , 32,
16896 0xfc0003ff, 0x20000230, &NMD::MFTR , 0,
16897 MT_ }, /* MFTR */
16898 { instruction , 0 , 0 , 32,
16899 0xfc0003ff, 0x20000238, &NMD::MFHTR , 0,
16900 MT_ }, /* MFHTR */
16901 { reserved_block , 0 , 0 , 32,
16902 0xfc0003ff, 0x20000240, 0 , 0,
16903 0x0 }, /* _POOL32A0~*(72) */
16904 { reserved_block , 0 , 0 , 32,
16905 0xfc0003ff, 0x20000248, 0 , 0,
16906 0x0 }, /* _POOL32A0~*(73) */
16907 { instruction , 0 , 0 , 32,
16908 0xfc0003ff, 0x20000250, &NMD::AND_32_ , 0,
16909 0x0 }, /* AND[32] */
16910 { reserved_block , 0 , 0 , 32,
16911 0xfc0003ff, 0x20000258, 0 , 0,
16912 0x0 }, /* _POOL32A0~*(75) */
16913 { reserved_block , 0 , 0 , 32,
16914 0xfc0003ff, 0x20000260, 0 , 0,
16915 0x0 }, /* _POOL32A0~*(76) */
16916 { instruction , 0 , 0 , 32,
16917 0xfc0003ff, 0x20000268, &NMD::YIELD , 0,
16918 MT_ }, /* YIELD */
16919 { instruction , 0 , 0 , 32,
16920 0xfc0003ff, 0x20000270, &NMD::MTTR , 0,
16921 MT_ }, /* MTTR */
16922 { instruction , 0 , 0 , 32,
16923 0xfc0003ff, 0x20000278, &NMD::MTHTR , 0,
16924 MT_ }, /* MTHTR */
16925 { reserved_block , 0 , 0 , 32,
16926 0xfc0003ff, 0x20000280, 0 , 0,
16927 0x0 }, /* _POOL32A0~*(80) */
16928 { reserved_block , 0 , 0 , 32,
16929 0xfc0003ff, 0x20000288, 0 , 0,
16930 0x0 }, /* _POOL32A0~*(81) */
16931 { instruction , 0 , 0 , 32,
16932 0xfc0003ff, 0x20000290, &NMD::OR_32_ , 0,
16933 0x0 }, /* OR[32] */
16934 { reserved_block , 0 , 0 , 32,
16935 0xfc0003ff, 0x20000298, 0 , 0,
16936 0x0 }, /* _POOL32A0~*(83) */
16937 { reserved_block , 0 , 0 , 32,
16938 0xfc0003ff, 0x200002a0, 0 , 0,
16939 0x0 }, /* _POOL32A0~*(84) */
16940 { reserved_block , 0 , 0 , 32,
16941 0xfc0003ff, 0x200002a8, 0 , 0,
16942 0x0 }, /* _POOL32A0~*(85) */
16943 { pool , P_MT_VPE , 8 , 32,
16944 0xfc0003ff, 0x200002b0, 0 , 0,
16945 0x0 }, /* P.MT_VPE */
16946 { reserved_block , 0 , 0 , 32,
16947 0xfc0003ff, 0x200002b8, 0 , 0,
16948 0x0 }, /* _POOL32A0~*(87) */
16949 { reserved_block , 0 , 0 , 32,
16950 0xfc0003ff, 0x200002c0, 0 , 0,
16951 0x0 }, /* _POOL32A0~*(88) */
16952 { reserved_block , 0 , 0 , 32,
16953 0xfc0003ff, 0x200002c8, 0 , 0,
16954 0x0 }, /* _POOL32A0~*(89) */
16955 { instruction , 0 , 0 , 32,
16956 0xfc0003ff, 0x200002d0, &NMD::NOR , 0,
16957 0x0 }, /* NOR */
16958 { reserved_block , 0 , 0 , 32,
16959 0xfc0003ff, 0x200002d8, 0 , 0,
16960 0x0 }, /* _POOL32A0~*(91) */
16961 { reserved_block , 0 , 0 , 32,
16962 0xfc0003ff, 0x200002e0, 0 , 0,
16963 0x0 }, /* _POOL32A0~*(92) */
16964 { reserved_block , 0 , 0 , 32,
16965 0xfc0003ff, 0x200002e8, 0 , 0,
16966 0x0 }, /* _POOL32A0~*(93) */
16967 { reserved_block , 0 , 0 , 32,
16968 0xfc0003ff, 0x200002f0, 0 , 0,
16969 0x0 }, /* _POOL32A0~*(94) */
16970 { reserved_block , 0 , 0 , 32,
16971 0xfc0003ff, 0x200002f8, 0 , 0,
16972 0x0 }, /* _POOL32A0~*(95) */
16973 { reserved_block , 0 , 0 , 32,
16974 0xfc0003ff, 0x20000300, 0 , 0,
16975 0x0 }, /* _POOL32A0~*(96) */
16976 { reserved_block , 0 , 0 , 32,
16977 0xfc0003ff, 0x20000308, 0 , 0,
16978 0x0 }, /* _POOL32A0~*(97) */
16979 { instruction , 0 , 0 , 32,
16980 0xfc0003ff, 0x20000310, &NMD::XOR_32_ , 0,
16981 0x0 }, /* XOR[32] */
16982 { reserved_block , 0 , 0 , 32,
16983 0xfc0003ff, 0x20000318, 0 , 0,
16984 0x0 }, /* _POOL32A0~*(99) */
16985 { reserved_block , 0 , 0 , 32,
16986 0xfc0003ff, 0x20000320, 0 , 0,
16987 0x0 }, /* _POOL32A0~*(100) */
16988 { reserved_block , 0 , 0 , 32,
16989 0xfc0003ff, 0x20000328, 0 , 0,
16990 0x0 }, /* _POOL32A0~*(101) */
16991 { reserved_block , 0 , 0 , 32,
16992 0xfc0003ff, 0x20000330, 0 , 0,
16993 0x0 }, /* _POOL32A0~*(102) */
16994 { reserved_block , 0 , 0 , 32,
16995 0xfc0003ff, 0x20000338, 0 , 0,
16996 0x0 }, /* _POOL32A0~*(103) */
16997 { reserved_block , 0 , 0 , 32,
16998 0xfc0003ff, 0x20000340, 0 , 0,
16999 0x0 }, /* _POOL32A0~*(104) */
17000 { reserved_block , 0 , 0 , 32,
17001 0xfc0003ff, 0x20000348, 0 , 0,
17002 0x0 }, /* _POOL32A0~*(105) */
17003 { instruction , 0 , 0 , 32,
17004 0xfc0003ff, 0x20000350, &NMD::SLT , 0,
17005 0x0 }, /* SLT */
17006 { reserved_block , 0 , 0 , 32,
17007 0xfc0003ff, 0x20000358, 0 , 0,
17008 0x0 }, /* _POOL32A0~*(107) */
17009 { reserved_block , 0 , 0 , 32,
17010 0xfc0003ff, 0x20000360, 0 , 0,
17011 0x0 }, /* _POOL32A0~*(108) */
17012 { reserved_block , 0 , 0 , 32,
17013 0xfc0003ff, 0x20000368, 0 , 0,
17014 0x0 }, /* _POOL32A0~*(109) */
17015 { reserved_block , 0 , 0 , 32,
17016 0xfc0003ff, 0x20000370, 0 , 0,
17017 0x0 }, /* _POOL32A0~*(110) */
17018 { reserved_block , 0 , 0 , 32,
17019 0xfc0003ff, 0x20000378, 0 , 0,
17020 0x0 }, /* _POOL32A0~*(111) */
17021 { reserved_block , 0 , 0 , 32,
17022 0xfc0003ff, 0x20000380, 0 , 0,
17023 0x0 }, /* _POOL32A0~*(112) */
17024 { reserved_block , 0 , 0 , 32,
17025 0xfc0003ff, 0x20000388, 0 , 0,
17026 0x0 }, /* _POOL32A0~*(113) */
17027 { pool , P_SLTU , 2 , 32,
17028 0xfc0003ff, 0x20000390, 0 , 0,
17029 0x0 }, /* P.SLTU */
17030 { reserved_block , 0 , 0 , 32,
17031 0xfc0003ff, 0x20000398, 0 , 0,
17032 0x0 }, /* _POOL32A0~*(115) */
17033 { reserved_block , 0 , 0 , 32,
17034 0xfc0003ff, 0x200003a0, 0 , 0,
17035 0x0 }, /* _POOL32A0~*(116) */
17036 { reserved_block , 0 , 0 , 32,
17037 0xfc0003ff, 0x200003a8, 0 , 0,
17038 0x0 }, /* _POOL32A0~*(117) */
17039 { reserved_block , 0 , 0 , 32,
17040 0xfc0003ff, 0x200003b0, 0 , 0,
17041 0x0 }, /* _POOL32A0~*(118) */
17042 { reserved_block , 0 , 0 , 32,
17043 0xfc0003ff, 0x200003b8, 0 , 0,
17044 0x0 }, /* _POOL32A0~*(119) */
17045 { reserved_block , 0 , 0 , 32,
17046 0xfc0003ff, 0x200003c0, 0 , 0,
17047 0x0 }, /* _POOL32A0~*(120) */
17048 { reserved_block , 0 , 0 , 32,
17049 0xfc0003ff, 0x200003c8, 0 , 0,
17050 0x0 }, /* _POOL32A0~*(121) */
17051 { instruction , 0 , 0 , 32,
17052 0xfc0003ff, 0x200003d0, &NMD::SOV , 0,
17053 0x0 }, /* SOV */
17054 { reserved_block , 0 , 0 , 32,
17055 0xfc0003ff, 0x200003d8, 0 , 0,
17056 0x0 }, /* _POOL32A0~*(123) */
17057 { reserved_block , 0 , 0 , 32,
17058 0xfc0003ff, 0x200003e0, 0 , 0,
17059 0x0 }, /* _POOL32A0~*(124) */
17060 { reserved_block , 0 , 0 , 32,
17061 0xfc0003ff, 0x200003e8, 0 , 0,
17062 0x0 }, /* _POOL32A0~*(125) */
17063 { reserved_block , 0 , 0 , 32,
17064 0xfc0003ff, 0x200003f0, 0 , 0,
17065 0x0 }, /* _POOL32A0~*(126) */
17066 { reserved_block , 0 , 0 , 32,
17067 0xfc0003ff, 0x200003f8, 0 , 0,
17068 0x0 }, /* _POOL32A0~*(127) */
17072 NMD::Pool NMD::ADDQ__S__PH[2] = {
17073 { instruction , 0 , 0 , 32,
17074 0xfc0007ff, 0x2000000d, &NMD::ADDQ_PH , 0,
17075 DSP_ }, /* ADDQ.PH */
17076 { instruction , 0 , 0 , 32,
17077 0xfc0007ff, 0x2000040d, &NMD::ADDQ_S_PH , 0,
17078 DSP_ }, /* ADDQ_S.PH */
17082 NMD::Pool NMD::MUL__S__PH[2] = {
17083 { instruction , 0 , 0 , 32,
17084 0xfc0007ff, 0x2000002d, &NMD::MUL_PH , 0,
17085 DSP_ }, /* MUL.PH */
17086 { instruction , 0 , 0 , 32,
17087 0xfc0007ff, 0x2000042d, &NMD::MUL_S_PH , 0,
17088 DSP_ }, /* MUL_S.PH */
17092 NMD::Pool NMD::ADDQH__R__PH[2] = {
17093 { instruction , 0 , 0 , 32,
17094 0xfc0007ff, 0x2000004d, &NMD::ADDQH_PH , 0,
17095 DSP_ }, /* ADDQH.PH */
17096 { instruction , 0 , 0 , 32,
17097 0xfc0007ff, 0x2000044d, &NMD::ADDQH_R_PH , 0,
17098 DSP_ }, /* ADDQH_R.PH */
17102 NMD::Pool NMD::ADDQH__R__W[2] = {
17103 { instruction , 0 , 0 , 32,
17104 0xfc0007ff, 0x2000008d, &NMD::ADDQH_W , 0,
17105 DSP_ }, /* ADDQH.W */
17106 { instruction , 0 , 0 , 32,
17107 0xfc0007ff, 0x2000048d, &NMD::ADDQH_R_W , 0,
17108 DSP_ }, /* ADDQH_R.W */
17112 NMD::Pool NMD::ADDU__S__QB[2] = {
17113 { instruction , 0 , 0 , 32,
17114 0xfc0007ff, 0x200000cd, &NMD::ADDU_QB , 0,
17115 DSP_ }, /* ADDU.QB */
17116 { instruction , 0 , 0 , 32,
17117 0xfc0007ff, 0x200004cd, &NMD::ADDU_S_QB , 0,
17118 DSP_ }, /* ADDU_S.QB */
17122 NMD::Pool NMD::ADDU__S__PH[2] = {
17123 { instruction , 0 , 0 , 32,
17124 0xfc0007ff, 0x2000010d, &NMD::ADDU_PH , 0,
17125 DSP_ }, /* ADDU.PH */
17126 { instruction , 0 , 0 , 32,
17127 0xfc0007ff, 0x2000050d, &NMD::ADDU_S_PH , 0,
17128 DSP_ }, /* ADDU_S.PH */
17132 NMD::Pool NMD::ADDUH__R__QB[2] = {
17133 { instruction , 0 , 0 , 32,
17134 0xfc0007ff, 0x2000014d, &NMD::ADDUH_QB , 0,
17135 DSP_ }, /* ADDUH.QB */
17136 { instruction , 0 , 0 , 32,
17137 0xfc0007ff, 0x2000054d, &NMD::ADDUH_R_QB , 0,
17138 DSP_ }, /* ADDUH_R.QB */
17142 NMD::Pool NMD::SHRAV__R__PH[2] = {
17143 { instruction , 0 , 0 , 32,
17144 0xfc0007ff, 0x2000018d, &NMD::SHRAV_PH , 0,
17145 DSP_ }, /* SHRAV.PH */
17146 { instruction , 0 , 0 , 32,
17147 0xfc0007ff, 0x2000058d, &NMD::SHRAV_R_PH , 0,
17148 DSP_ }, /* SHRAV_R.PH */
17152 NMD::Pool NMD::SHRAV__R__QB[2] = {
17153 { instruction , 0 , 0 , 32,
17154 0xfc0007ff, 0x200001cd, &NMD::SHRAV_QB , 0,
17155 DSP_ }, /* SHRAV.QB */
17156 { instruction , 0 , 0 , 32,
17157 0xfc0007ff, 0x200005cd, &NMD::SHRAV_R_QB , 0,
17158 DSP_ }, /* SHRAV_R.QB */
17162 NMD::Pool NMD::SUBQ__S__PH[2] = {
17163 { instruction , 0 , 0 , 32,
17164 0xfc0007ff, 0x2000020d, &NMD::SUBQ_PH , 0,
17165 DSP_ }, /* SUBQ.PH */
17166 { instruction , 0 , 0 , 32,
17167 0xfc0007ff, 0x2000060d, &NMD::SUBQ_S_PH , 0,
17168 DSP_ }, /* SUBQ_S.PH */
17172 NMD::Pool NMD::SUBQH__R__PH[2] = {
17173 { instruction , 0 , 0 , 32,
17174 0xfc0007ff, 0x2000024d, &NMD::SUBQH_PH , 0,
17175 DSP_ }, /* SUBQH.PH */
17176 { instruction , 0 , 0 , 32,
17177 0xfc0007ff, 0x2000064d, &NMD::SUBQH_R_PH , 0,
17178 DSP_ }, /* SUBQH_R.PH */
17182 NMD::Pool NMD::SUBQH__R__W[2] = {
17183 { instruction , 0 , 0 , 32,
17184 0xfc0007ff, 0x2000028d, &NMD::SUBQH_W , 0,
17185 DSP_ }, /* SUBQH.W */
17186 { instruction , 0 , 0 , 32,
17187 0xfc0007ff, 0x2000068d, &NMD::SUBQH_R_W , 0,
17188 DSP_ }, /* SUBQH_R.W */
17192 NMD::Pool NMD::SUBU__S__QB[2] = {
17193 { instruction , 0 , 0 , 32,
17194 0xfc0007ff, 0x200002cd, &NMD::SUBU_QB , 0,
17195 DSP_ }, /* SUBU.QB */
17196 { instruction , 0 , 0 , 32,
17197 0xfc0007ff, 0x200006cd, &NMD::SUBU_S_QB , 0,
17198 DSP_ }, /* SUBU_S.QB */
17202 NMD::Pool NMD::SUBU__S__PH[2] = {
17203 { instruction , 0 , 0 , 32,
17204 0xfc0007ff, 0x2000030d, &NMD::SUBU_PH , 0,
17205 DSP_ }, /* SUBU.PH */
17206 { instruction , 0 , 0 , 32,
17207 0xfc0007ff, 0x2000070d, &NMD::SUBU_S_PH , 0,
17208 DSP_ }, /* SUBU_S.PH */
17212 NMD::Pool NMD::SHRA__R__PH[2] = {
17213 { instruction , 0 , 0 , 32,
17214 0xfc0007ff, 0x20000335, &NMD::SHRA_PH , 0,
17215 DSP_ }, /* SHRA.PH */
17216 { instruction , 0 , 0 , 32,
17217 0xfc0007ff, 0x20000735, &NMD::SHRA_R_PH , 0,
17218 DSP_ }, /* SHRA_R.PH */
17222 NMD::Pool NMD::SUBUH__R__QB[2] = {
17223 { instruction , 0 , 0 , 32,
17224 0xfc0007ff, 0x2000034d, &NMD::SUBUH_QB , 0,
17225 DSP_ }, /* SUBUH.QB */
17226 { instruction , 0 , 0 , 32,
17227 0xfc0007ff, 0x2000074d, &NMD::SUBUH_R_QB , 0,
17228 DSP_ }, /* SUBUH_R.QB */
17232 NMD::Pool NMD::SHLLV__S__PH[2] = {
17233 { instruction , 0 , 0 , 32,
17234 0xfc0007ff, 0x2000038d, &NMD::SHLLV_PH , 0,
17235 DSP_ }, /* SHLLV.PH */
17236 { instruction , 0 , 0 , 32,
17237 0xfc0007ff, 0x2000078d, &NMD::SHLLV_S_PH , 0,
17238 DSP_ }, /* SHLLV_S.PH */
17242 NMD::Pool NMD::SHLL__S__PH[4] = {
17243 { instruction , 0 , 0 , 32,
17244 0xfc000fff, 0x200003b5, &NMD::SHLL_PH , 0,
17245 DSP_ }, /* SHLL.PH */
17246 { reserved_block , 0 , 0 , 32,
17247 0xfc000fff, 0x200007b5, 0 , 0,
17248 0x0 }, /* SHLL[_S].PH~*(1) */
17249 { instruction , 0 , 0 , 32,
17250 0xfc000fff, 0x20000bb5, &NMD::SHLL_S_PH , 0,
17251 DSP_ }, /* SHLL_S.PH */
17252 { reserved_block , 0 , 0 , 32,
17253 0xfc000fff, 0x20000fb5, 0 , 0,
17254 0x0 }, /* SHLL[_S].PH~*(3) */
17258 NMD::Pool NMD::PRECR_SRA__R__PH_W[2] = {
17259 { instruction , 0 , 0 , 32,
17260 0xfc0007ff, 0x200003cd, &NMD::PRECR_SRA_PH_W , 0,
17261 DSP_ }, /* PRECR_SRA.PH.W */
17262 { instruction , 0 , 0 , 32,
17263 0xfc0007ff, 0x200007cd, &NMD::PRECR_SRA_R_PH_W , 0,
17264 DSP_ }, /* PRECR_SRA_R.PH.W */
17268 NMD::Pool NMD::_POOL32A5[128] = {
17269 { instruction , 0 , 0 , 32,
17270 0xfc0003ff, 0x20000005, &NMD::CMP_EQ_PH , 0,
17271 DSP_ }, /* CMP.EQ.PH */
17272 { pool , ADDQ__S__PH , 2 , 32,
17273 0xfc0003ff, 0x2000000d, 0 , 0,
17274 0x0 }, /* ADDQ[_S].PH */
17275 { reserved_block , 0 , 0 , 32,
17276 0xfc0003ff, 0x20000015, 0 , 0,
17277 0x0 }, /* _POOL32A5~*(2) */
17278 { instruction , 0 , 0 , 32,
17279 0xfc0003ff, 0x2000001d, &NMD::SHILO , 0,
17280 DSP_ }, /* SHILO */
17281 { instruction , 0 , 0 , 32,
17282 0xfc0003ff, 0x20000025, &NMD::MULEQ_S_W_PHL , 0,
17283 DSP_ }, /* MULEQ_S.W.PHL */
17284 { pool , MUL__S__PH , 2 , 32,
17285 0xfc0003ff, 0x2000002d, 0 , 0,
17286 0x0 }, /* MUL[_S].PH */
17287 { reserved_block , 0 , 0 , 32,
17288 0xfc0003ff, 0x20000035, 0 , 0,
17289 0x0 }, /* _POOL32A5~*(6) */
17290 { instruction , 0 , 0 , 32,
17291 0xfc0003ff, 0x2000003d, &NMD::REPL_PH , 0,
17292 DSP_ }, /* REPL.PH */
17293 { instruction , 0 , 0 , 32,
17294 0xfc0003ff, 0x20000045, &NMD::CMP_LT_PH , 0,
17295 DSP_ }, /* CMP.LT.PH */
17296 { pool , ADDQH__R__PH , 2 , 32,
17297 0xfc0003ff, 0x2000004d, 0 , 0,
17298 0x0 }, /* ADDQH[_R].PH */
17299 { reserved_block , 0 , 0 , 32,
17300 0xfc0003ff, 0x20000055, 0 , 0,
17301 0x0 }, /* _POOL32A5~*(10) */
17302 { reserved_block , 0 , 0 , 32,
17303 0xfc0003ff, 0x2000005d, 0 , 0,
17304 0x0 }, /* _POOL32A5~*(11) */
17305 { instruction , 0 , 0 , 32,
17306 0xfc0003ff, 0x20000065, &NMD::MULEQ_S_W_PHR , 0,
17307 DSP_ }, /* MULEQ_S.W.PHR */
17308 { instruction , 0 , 0 , 32,
17309 0xfc0003ff, 0x2000006d, &NMD::PRECR_QB_PH , 0,
17310 DSP_ }, /* PRECR.QB.PH */
17311 { reserved_block , 0 , 0 , 32,
17312 0xfc0003ff, 0x20000075, 0 , 0,
17313 0x0 }, /* _POOL32A5~*(14) */
17314 { reserved_block , 0 , 0 , 32,
17315 0xfc0003ff, 0x2000007d, 0 , 0,
17316 0x0 }, /* _POOL32A5~*(15) */
17317 { instruction , 0 , 0 , 32,
17318 0xfc0003ff, 0x20000085, &NMD::CMP_LE_PH , 0,
17319 DSP_ }, /* CMP.LE.PH */
17320 { pool , ADDQH__R__W , 2 , 32,
17321 0xfc0003ff, 0x2000008d, 0 , 0,
17322 0x0 }, /* ADDQH[_R].W */
17323 { instruction , 0 , 0 , 32,
17324 0xfc0003ff, 0x20000095, &NMD::MULEU_S_PH_QBL , 0,
17325 DSP_ }, /* MULEU_S.PH.QBL */
17326 { reserved_block , 0 , 0 , 32,
17327 0xfc0003ff, 0x2000009d, 0 , 0,
17328 0x0 }, /* _POOL32A5~*(19) */
17329 { reserved_block , 0 , 0 , 32,
17330 0xfc0003ff, 0x200000a5, 0 , 0,
17331 0x0 }, /* _POOL32A5~*(20) */
17332 { instruction , 0 , 0 , 32,
17333 0xfc0003ff, 0x200000ad, &NMD::PRECRQ_QB_PH , 0,
17334 DSP_ }, /* PRECRQ.QB.PH */
17335 { reserved_block , 0 , 0 , 32,
17336 0xfc0003ff, 0x200000b5, 0 , 0,
17337 0x0 }, /* _POOL32A5~*(22) */
17338 { reserved_block , 0 , 0 , 32,
17339 0xfc0003ff, 0x200000bd, 0 , 0,
17340 0x0 }, /* _POOL32A5~*(23) */
17341 { instruction , 0 , 0 , 32,
17342 0xfc0003ff, 0x200000c5, &NMD::CMPGU_EQ_QB , 0,
17343 DSP_ }, /* CMPGU.EQ.QB */
17344 { pool , ADDU__S__QB , 2 , 32,
17345 0xfc0003ff, 0x200000cd, 0 , 0,
17346 0x0 }, /* ADDU[_S].QB */
17347 { instruction , 0 , 0 , 32,
17348 0xfc0003ff, 0x200000d5, &NMD::MULEU_S_PH_QBR , 0,
17349 DSP_ }, /* MULEU_S.PH.QBR */
17350 { reserved_block , 0 , 0 , 32,
17351 0xfc0003ff, 0x200000dd, 0 , 0,
17352 0x0 }, /* _POOL32A5~*(27) */
17353 { reserved_block , 0 , 0 , 32,
17354 0xfc0003ff, 0x200000e5, 0 , 0,
17355 0x0 }, /* _POOL32A5~*(28) */
17356 { instruction , 0 , 0 , 32,
17357 0xfc0003ff, 0x200000ed, &NMD::PRECRQ_PH_W , 0,
17358 DSP_ }, /* PRECRQ.PH.W */
17359 { reserved_block , 0 , 0 , 32,
17360 0xfc0003ff, 0x200000f5, 0 , 0,
17361 0x0 }, /* _POOL32A5~*(30) */
17362 { reserved_block , 0 , 0 , 32,
17363 0xfc0003ff, 0x200000fd, 0 , 0,
17364 0x0 }, /* _POOL32A5~*(31) */
17365 { instruction , 0 , 0 , 32,
17366 0xfc0003ff, 0x20000105, &NMD::CMPGU_LT_QB , 0,
17367 DSP_ }, /* CMPGU.LT.QB */
17368 { pool , ADDU__S__PH , 2 , 32,
17369 0xfc0003ff, 0x2000010d, 0 , 0,
17370 0x0 }, /* ADDU[_S].PH */
17371 { instruction , 0 , 0 , 32,
17372 0xfc0003ff, 0x20000115, &NMD::MULQ_RS_PH , 0,
17373 DSP_ }, /* MULQ_RS.PH */
17374 { reserved_block , 0 , 0 , 32,
17375 0xfc0003ff, 0x2000011d, 0 , 0,
17376 0x0 }, /* _POOL32A5~*(35) */
17377 { reserved_block , 0 , 0 , 32,
17378 0xfc0003ff, 0x20000125, 0 , 0,
17379 0x0 }, /* _POOL32A5~*(36) */
17380 { instruction , 0 , 0 , 32,
17381 0xfc0003ff, 0x2000012d, &NMD::PRECRQ_RS_PH_W , 0,
17382 DSP_ }, /* PRECRQ_RS.PH.W */
17383 { reserved_block , 0 , 0 , 32,
17384 0xfc0003ff, 0x20000135, 0 , 0,
17385 0x0 }, /* _POOL32A5~*(38) */
17386 { reserved_block , 0 , 0 , 32,
17387 0xfc0003ff, 0x2000013d, 0 , 0,
17388 0x0 }, /* _POOL32A5~*(39) */
17389 { instruction , 0 , 0 , 32,
17390 0xfc0003ff, 0x20000145, &NMD::CMPGU_LE_QB , 0,
17391 DSP_ }, /* CMPGU.LE.QB */
17392 { pool , ADDUH__R__QB , 2 , 32,
17393 0xfc0003ff, 0x2000014d, 0 , 0,
17394 0x0 }, /* ADDUH[_R].QB */
17395 { instruction , 0 , 0 , 32,
17396 0xfc0003ff, 0x20000155, &NMD::MULQ_S_PH , 0,
17397 DSP_ }, /* MULQ_S.PH */
17398 { reserved_block , 0 , 0 , 32,
17399 0xfc0003ff, 0x2000015d, 0 , 0,
17400 0x0 }, /* _POOL32A5~*(43) */
17401 { reserved_block , 0 , 0 , 32,
17402 0xfc0003ff, 0x20000165, 0 , 0,
17403 0x0 }, /* _POOL32A5~*(44) */
17404 { instruction , 0 , 0 , 32,
17405 0xfc0003ff, 0x2000016d, &NMD::PRECRQU_S_QB_PH , 0,
17406 DSP_ }, /* PRECRQU_S.QB.PH */
17407 { reserved_block , 0 , 0 , 32,
17408 0xfc0003ff, 0x20000175, 0 , 0,
17409 0x0 }, /* _POOL32A5~*(46) */
17410 { reserved_block , 0 , 0 , 32,
17411 0xfc0003ff, 0x2000017d, 0 , 0,
17412 0x0 }, /* _POOL32A5~*(47) */
17413 { instruction , 0 , 0 , 32,
17414 0xfc0003ff, 0x20000185, &NMD::CMPGDU_EQ_QB , 0,
17415 DSP_ }, /* CMPGDU.EQ.QB */
17416 { pool , SHRAV__R__PH , 2 , 32,
17417 0xfc0003ff, 0x2000018d, 0 , 0,
17418 0x0 }, /* SHRAV[_R].PH */
17419 { instruction , 0 , 0 , 32,
17420 0xfc0003ff, 0x20000195, &NMD::MULQ_RS_W , 0,
17421 DSP_ }, /* MULQ_RS.W */
17422 { reserved_block , 0 , 0 , 32,
17423 0xfc0003ff, 0x2000019d, 0 , 0,
17424 0x0 }, /* _POOL32A5~*(51) */
17425 { reserved_block , 0 , 0 , 32,
17426 0xfc0003ff, 0x200001a5, 0 , 0,
17427 0x0 }, /* _POOL32A5~*(52) */
17428 { instruction , 0 , 0 , 32,
17429 0xfc0003ff, 0x200001ad, &NMD::PACKRL_PH , 0,
17430 DSP_ }, /* PACKRL.PH */
17431 { reserved_block , 0 , 0 , 32,
17432 0xfc0003ff, 0x200001b5, 0 , 0,
17433 0x0 }, /* _POOL32A5~*(54) */
17434 { reserved_block , 0 , 0 , 32,
17435 0xfc0003ff, 0x200001bd, 0 , 0,
17436 0x0 }, /* _POOL32A5~*(55) */
17437 { instruction , 0 , 0 , 32,
17438 0xfc0003ff, 0x200001c5, &NMD::CMPGDU_LT_QB , 0,
17439 DSP_ }, /* CMPGDU.LT.QB */
17440 { pool , SHRAV__R__QB , 2 , 32,
17441 0xfc0003ff, 0x200001cd, 0 , 0,
17442 0x0 }, /* SHRAV[_R].QB */
17443 { instruction , 0 , 0 , 32,
17444 0xfc0003ff, 0x200001d5, &NMD::MULQ_S_W , 0,
17445 DSP_ }, /* MULQ_S.W */
17446 { reserved_block , 0 , 0 , 32,
17447 0xfc0003ff, 0x200001dd, 0 , 0,
17448 0x0 }, /* _POOL32A5~*(59) */
17449 { reserved_block , 0 , 0 , 32,
17450 0xfc0003ff, 0x200001e5, 0 , 0,
17451 0x0 }, /* _POOL32A5~*(60) */
17452 { instruction , 0 , 0 , 32,
17453 0xfc0003ff, 0x200001ed, &NMD::PICK_QB , 0,
17454 DSP_ }, /* PICK.QB */
17455 { reserved_block , 0 , 0 , 32,
17456 0xfc0003ff, 0x200001f5, 0 , 0,
17457 0x0 }, /* _POOL32A5~*(62) */
17458 { reserved_block , 0 , 0 , 32,
17459 0xfc0003ff, 0x200001fd, 0 , 0,
17460 0x0 }, /* _POOL32A5~*(63) */
17461 { instruction , 0 , 0 , 32,
17462 0xfc0003ff, 0x20000205, &NMD::CMPGDU_LE_QB , 0,
17463 DSP_ }, /* CMPGDU.LE.QB */
17464 { pool , SUBQ__S__PH , 2 , 32,
17465 0xfc0003ff, 0x2000020d, 0 , 0,
17466 0x0 }, /* SUBQ[_S].PH */
17467 { instruction , 0 , 0 , 32,
17468 0xfc0003ff, 0x20000215, &NMD::APPEND , 0,
17469 DSP_ }, /* APPEND */
17470 { reserved_block , 0 , 0 , 32,
17471 0xfc0003ff, 0x2000021d, 0 , 0,
17472 0x0 }, /* _POOL32A5~*(67) */
17473 { reserved_block , 0 , 0 , 32,
17474 0xfc0003ff, 0x20000225, 0 , 0,
17475 0x0 }, /* _POOL32A5~*(68) */
17476 { instruction , 0 , 0 , 32,
17477 0xfc0003ff, 0x2000022d, &NMD::PICK_PH , 0,
17478 DSP_ }, /* PICK.PH */
17479 { reserved_block , 0 , 0 , 32,
17480 0xfc0003ff, 0x20000235, 0 , 0,
17481 0x0 }, /* _POOL32A5~*(70) */
17482 { reserved_block , 0 , 0 , 32,
17483 0xfc0003ff, 0x2000023d, 0 , 0,
17484 0x0 }, /* _POOL32A5~*(71) */
17485 { instruction , 0 , 0 , 32,
17486 0xfc0003ff, 0x20000245, &NMD::CMPU_EQ_QB , 0,
17487 DSP_ }, /* CMPU.EQ.QB */
17488 { pool , SUBQH__R__PH , 2 , 32,
17489 0xfc0003ff, 0x2000024d, 0 , 0,
17490 0x0 }, /* SUBQH[_R].PH */
17491 { instruction , 0 , 0 , 32,
17492 0xfc0003ff, 0x20000255, &NMD::PREPEND , 0,
17493 DSP_ }, /* PREPEND */
17494 { reserved_block , 0 , 0 , 32,
17495 0xfc0003ff, 0x2000025d, 0 , 0,
17496 0x0 }, /* _POOL32A5~*(75) */
17497 { reserved_block , 0 , 0 , 32,
17498 0xfc0003ff, 0x20000265, 0 , 0,
17499 0x0 }, /* _POOL32A5~*(76) */
17500 { reserved_block , 0 , 0 , 32,
17501 0xfc0003ff, 0x2000026d, 0 , 0,
17502 0x0 }, /* _POOL32A5~*(77) */
17503 { reserved_block , 0 , 0 , 32,
17504 0xfc0003ff, 0x20000275, 0 , 0,
17505 0x0 }, /* _POOL32A5~*(78) */
17506 { reserved_block , 0 , 0 , 32,
17507 0xfc0003ff, 0x2000027d, 0 , 0,
17508 0x0 }, /* _POOL32A5~*(79) */
17509 { instruction , 0 , 0 , 32,
17510 0xfc0003ff, 0x20000285, &NMD::CMPU_LT_QB , 0,
17511 DSP_ }, /* CMPU.LT.QB */
17512 { pool , SUBQH__R__W , 2 , 32,
17513 0xfc0003ff, 0x2000028d, 0 , 0,
17514 0x0 }, /* SUBQH[_R].W */
17515 { instruction , 0 , 0 , 32,
17516 0xfc0003ff, 0x20000295, &NMD::MODSUB , 0,
17517 DSP_ }, /* MODSUB */
17518 { reserved_block , 0 , 0 , 32,
17519 0xfc0003ff, 0x2000029d, 0 , 0,
17520 0x0 }, /* _POOL32A5~*(83) */
17521 { reserved_block , 0 , 0 , 32,
17522 0xfc0003ff, 0x200002a5, 0 , 0,
17523 0x0 }, /* _POOL32A5~*(84) */
17524 { reserved_block , 0 , 0 , 32,
17525 0xfc0003ff, 0x200002ad, 0 , 0,
17526 0x0 }, /* _POOL32A5~*(85) */
17527 { reserved_block , 0 , 0 , 32,
17528 0xfc0003ff, 0x200002b5, 0 , 0,
17529 0x0 }, /* _POOL32A5~*(86) */
17530 { reserved_block , 0 , 0 , 32,
17531 0xfc0003ff, 0x200002bd, 0 , 0,
17532 0x0 }, /* _POOL32A5~*(87) */
17533 { instruction , 0 , 0 , 32,
17534 0xfc0003ff, 0x200002c5, &NMD::CMPU_LE_QB , 0,
17535 DSP_ }, /* CMPU.LE.QB */
17536 { pool , SUBU__S__QB , 2 , 32,
17537 0xfc0003ff, 0x200002cd, 0 , 0,
17538 0x0 }, /* SUBU[_S].QB */
17539 { instruction , 0 , 0 , 32,
17540 0xfc0003ff, 0x200002d5, &NMD::SHRAV_R_W , 0,
17541 DSP_ }, /* SHRAV_R.W */
17542 { reserved_block , 0 , 0 , 32,
17543 0xfc0003ff, 0x200002dd, 0 , 0,
17544 0x0 }, /* _POOL32A5~*(91) */
17545 { reserved_block , 0 , 0 , 32,
17546 0xfc0003ff, 0x200002e5, 0 , 0,
17547 0x0 }, /* _POOL32A5~*(92) */
17548 { reserved_block , 0 , 0 , 32,
17549 0xfc0003ff, 0x200002ed, 0 , 0,
17550 0x0 }, /* _POOL32A5~*(93) */
17551 { instruction , 0 , 0 , 32,
17552 0xfc0003ff, 0x200002f5, &NMD::SHRA_R_W , 0,
17553 DSP_ }, /* SHRA_R.W */
17554 { reserved_block , 0 , 0 , 32,
17555 0xfc0003ff, 0x200002fd, 0 , 0,
17556 0x0 }, /* _POOL32A5~*(95) */
17557 { instruction , 0 , 0 , 32,
17558 0xfc0003ff, 0x20000305, &NMD::ADDQ_S_W , 0,
17559 DSP_ }, /* ADDQ_S.W */
17560 { pool , SUBU__S__PH , 2 , 32,
17561 0xfc0003ff, 0x2000030d, 0 , 0,
17562 0x0 }, /* SUBU[_S].PH */
17563 { instruction , 0 , 0 , 32,
17564 0xfc0003ff, 0x20000315, &NMD::SHRLV_PH , 0,
17565 DSP_ }, /* SHRLV.PH */
17566 { reserved_block , 0 , 0 , 32,
17567 0xfc0003ff, 0x2000031d, 0 , 0,
17568 0x0 }, /* _POOL32A5~*(99) */
17569 { reserved_block , 0 , 0 , 32,
17570 0xfc0003ff, 0x20000325, 0 , 0,
17571 0x0 }, /* _POOL32A5~*(100) */
17572 { reserved_block , 0 , 0 , 32,
17573 0xfc0003ff, 0x2000032d, 0 , 0,
17574 0x0 }, /* _POOL32A5~*(101) */
17575 { pool , SHRA__R__PH , 2 , 32,
17576 0xfc0003ff, 0x20000335, 0 , 0,
17577 0x0 }, /* SHRA[_R].PH */
17578 { reserved_block , 0 , 0 , 32,
17579 0xfc0003ff, 0x2000033d, 0 , 0,
17580 0x0 }, /* _POOL32A5~*(103) */
17581 { instruction , 0 , 0 , 32,
17582 0xfc0003ff, 0x20000345, &NMD::SUBQ_S_W , 0,
17583 DSP_ }, /* SUBQ_S.W */
17584 { pool , SUBUH__R__QB , 2 , 32,
17585 0xfc0003ff, 0x2000034d, 0 , 0,
17586 0x0 }, /* SUBUH[_R].QB */
17587 { instruction , 0 , 0 , 32,
17588 0xfc0003ff, 0x20000355, &NMD::SHRLV_QB , 0,
17589 DSP_ }, /* SHRLV.QB */
17590 { reserved_block , 0 , 0 , 32,
17591 0xfc0003ff, 0x2000035d, 0 , 0,
17592 0x0 }, /* _POOL32A5~*(107) */
17593 { reserved_block , 0 , 0 , 32,
17594 0xfc0003ff, 0x20000365, 0 , 0,
17595 0x0 }, /* _POOL32A5~*(108) */
17596 { reserved_block , 0 , 0 , 32,
17597 0xfc0003ff, 0x2000036d, 0 , 0,
17598 0x0 }, /* _POOL32A5~*(109) */
17599 { reserved_block , 0 , 0 , 32,
17600 0xfc0003ff, 0x20000375, 0 , 0,
17601 0x0 }, /* _POOL32A5~*(110) */
17602 { reserved_block , 0 , 0 , 32,
17603 0xfc0003ff, 0x2000037d, 0 , 0,
17604 0x0 }, /* _POOL32A5~*(111) */
17605 { instruction , 0 , 0 , 32,
17606 0xfc0003ff, 0x20000385, &NMD::ADDSC , 0,
17607 DSP_ }, /* ADDSC */
17608 { pool , SHLLV__S__PH , 2 , 32,
17609 0xfc0003ff, 0x2000038d, 0 , 0,
17610 0x0 }, /* SHLLV[_S].PH */
17611 { instruction , 0 , 0 , 32,
17612 0xfc0003ff, 0x20000395, &NMD::SHLLV_QB , 0,
17613 DSP_ }, /* SHLLV.QB */
17614 { reserved_block , 0 , 0 , 32,
17615 0xfc0003ff, 0x2000039d, 0 , 0,
17616 0x0 }, /* _POOL32A5~*(115) */
17617 { reserved_block , 0 , 0 , 32,
17618 0xfc0003ff, 0x200003a5, 0 , 0,
17619 0x0 }, /* _POOL32A5~*(116) */
17620 { reserved_block , 0 , 0 , 32,
17621 0xfc0003ff, 0x200003ad, 0 , 0,
17622 0x0 }, /* _POOL32A5~*(117) */
17623 { pool , SHLL__S__PH , 4 , 32,
17624 0xfc0003ff, 0x200003b5, 0 , 0,
17625 0x0 }, /* SHLL[_S].PH */
17626 { reserved_block , 0 , 0 , 32,
17627 0xfc0003ff, 0x200003bd, 0 , 0,
17628 0x0 }, /* _POOL32A5~*(119) */
17629 { instruction , 0 , 0 , 32,
17630 0xfc0003ff, 0x200003c5, &NMD::ADDWC , 0,
17631 DSP_ }, /* ADDWC */
17632 { pool , PRECR_SRA__R__PH_W , 2 , 32,
17633 0xfc0003ff, 0x200003cd, 0 , 0,
17634 0x0 }, /* PRECR_SRA[_R].PH.W */
17635 { instruction , 0 , 0 , 32,
17636 0xfc0003ff, 0x200003d5, &NMD::SHLLV_S_W , 0,
17637 DSP_ }, /* SHLLV_S.W */
17638 { reserved_block , 0 , 0 , 32,
17639 0xfc0003ff, 0x200003dd, 0 , 0,
17640 0x0 }, /* _POOL32A5~*(123) */
17641 { reserved_block , 0 , 0 , 32,
17642 0xfc0003ff, 0x200003e5, 0 , 0,
17643 0x0 }, /* _POOL32A5~*(124) */
17644 { reserved_block , 0 , 0 , 32,
17645 0xfc0003ff, 0x200003ed, 0 , 0,
17646 0x0 }, /* _POOL32A5~*(125) */
17647 { instruction , 0 , 0 , 32,
17648 0xfc0003ff, 0x200003f5, &NMD::SHLL_S_W , 0,
17649 DSP_ }, /* SHLL_S.W */
17650 { reserved_block , 0 , 0 , 32,
17651 0xfc0003ff, 0x200003fd, 0 , 0,
17652 0x0 }, /* _POOL32A5~*(127) */
17656 NMD::Pool NMD::PP_LSX[16] = {
17657 { instruction , 0 , 0 , 32,
17658 0xfc0007ff, 0x20000007, &NMD::LBX , 0,
17659 0x0 }, /* LBX */
17660 { instruction , 0 , 0 , 32,
17661 0xfc0007ff, 0x20000087, &NMD::SBX , 0,
17662 XMMS_ }, /* SBX */
17663 { instruction , 0 , 0 , 32,
17664 0xfc0007ff, 0x20000107, &NMD::LBUX , 0,
17665 0x0 }, /* LBUX */
17666 { reserved_block , 0 , 0 , 32,
17667 0xfc0007ff, 0x20000187, 0 , 0,
17668 0x0 }, /* PP.LSX~*(3) */
17669 { instruction , 0 , 0 , 32,
17670 0xfc0007ff, 0x20000207, &NMD::LHX , 0,
17671 0x0 }, /* LHX */
17672 { instruction , 0 , 0 , 32,
17673 0xfc0007ff, 0x20000287, &NMD::SHX , 0,
17674 XMMS_ }, /* SHX */
17675 { instruction , 0 , 0 , 32,
17676 0xfc0007ff, 0x20000307, &NMD::LHUX , 0,
17677 0x0 }, /* LHUX */
17678 { instruction , 0 , 0 , 32,
17679 0xfc0007ff, 0x20000387, &NMD::LWUX , 0,
17680 MIPS64_ }, /* LWUX */
17681 { instruction , 0 , 0 , 32,
17682 0xfc0007ff, 0x20000407, &NMD::LWX , 0,
17683 0x0 }, /* LWX */
17684 { instruction , 0 , 0 , 32,
17685 0xfc0007ff, 0x20000487, &NMD::SWX , 0,
17686 XMMS_ }, /* SWX */
17687 { instruction , 0 , 0 , 32,
17688 0xfc0007ff, 0x20000507, &NMD::LWC1X , 0,
17689 CP1_ }, /* LWC1X */
17690 { instruction , 0 , 0 , 32,
17691 0xfc0007ff, 0x20000587, &NMD::SWC1X , 0,
17692 CP1_ }, /* SWC1X */
17693 { instruction , 0 , 0 , 32,
17694 0xfc0007ff, 0x20000607, &NMD::LDX , 0,
17695 MIPS64_ }, /* LDX */
17696 { instruction , 0 , 0 , 32,
17697 0xfc0007ff, 0x20000687, &NMD::SDX , 0,
17698 MIPS64_ }, /* SDX */
17699 { instruction , 0 , 0 , 32,
17700 0xfc0007ff, 0x20000707, &NMD::LDC1X , 0,
17701 CP1_ }, /* LDC1X */
17702 { instruction , 0 , 0 , 32,
17703 0xfc0007ff, 0x20000787, &NMD::SDC1X , 0,
17704 CP1_ }, /* SDC1X */
17708 NMD::Pool NMD::PP_LSXS[16] = {
17709 { reserved_block , 0 , 0 , 32,
17710 0xfc0007ff, 0x20000047, 0 , 0,
17711 0x0 }, /* PP.LSXS~*(0) */
17712 { reserved_block , 0 , 0 , 32,
17713 0xfc0007ff, 0x200000c7, 0 , 0,
17714 0x0 }, /* PP.LSXS~*(1) */
17715 { reserved_block , 0 , 0 , 32,
17716 0xfc0007ff, 0x20000147, 0 , 0,
17717 0x0 }, /* PP.LSXS~*(2) */
17718 { reserved_block , 0 , 0 , 32,
17719 0xfc0007ff, 0x200001c7, 0 , 0,
17720 0x0 }, /* PP.LSXS~*(3) */
17721 { instruction , 0 , 0 , 32,
17722 0xfc0007ff, 0x20000247, &NMD::LHXS , 0,
17723 0x0 }, /* LHXS */
17724 { instruction , 0 , 0 , 32,
17725 0xfc0007ff, 0x200002c7, &NMD::SHXS , 0,
17726 XMMS_ }, /* SHXS */
17727 { instruction , 0 , 0 , 32,
17728 0xfc0007ff, 0x20000347, &NMD::LHUXS , 0,
17729 0x0 }, /* LHUXS */
17730 { instruction , 0 , 0 , 32,
17731 0xfc0007ff, 0x200003c7, &NMD::LWUXS , 0,
17732 MIPS64_ }, /* LWUXS */
17733 { instruction , 0 , 0 , 32,
17734 0xfc0007ff, 0x20000447, &NMD::LWXS_32_ , 0,
17735 0x0 }, /* LWXS[32] */
17736 { instruction , 0 , 0 , 32,
17737 0xfc0007ff, 0x200004c7, &NMD::SWXS , 0,
17738 XMMS_ }, /* SWXS */
17739 { instruction , 0 , 0 , 32,
17740 0xfc0007ff, 0x20000547, &NMD::LWC1XS , 0,
17741 CP1_ }, /* LWC1XS */
17742 { instruction , 0 , 0 , 32,
17743 0xfc0007ff, 0x200005c7, &NMD::SWC1XS , 0,
17744 CP1_ }, /* SWC1XS */
17745 { instruction , 0 , 0 , 32,
17746 0xfc0007ff, 0x20000647, &NMD::LDXS , 0,
17747 MIPS64_ }, /* LDXS */
17748 { instruction , 0 , 0 , 32,
17749 0xfc0007ff, 0x200006c7, &NMD::SDXS , 0,
17750 MIPS64_ }, /* SDXS */
17751 { instruction , 0 , 0 , 32,
17752 0xfc0007ff, 0x20000747, &NMD::LDC1XS , 0,
17753 CP1_ }, /* LDC1XS */
17754 { instruction , 0 , 0 , 32,
17755 0xfc0007ff, 0x200007c7, &NMD::SDC1XS , 0,
17756 CP1_ }, /* SDC1XS */
17760 NMD::Pool NMD::P_LSX[2] = {
17761 { pool , PP_LSX , 16 , 32,
17762 0xfc00007f, 0x20000007, 0 , 0,
17763 0x0 }, /* PP.LSX */
17764 { pool , PP_LSXS , 16 , 32,
17765 0xfc00007f, 0x20000047, 0 , 0,
17766 0x0 }, /* PP.LSXS */
17770 NMD::Pool NMD::POOL32Axf_1_0[4] = {
17771 { instruction , 0 , 0 , 32,
17772 0xfc003fff, 0x2000007f, &NMD::MFHI_DSP_ , 0,
17773 DSP_ }, /* MFHI[DSP] */
17774 { instruction , 0 , 0 , 32,
17775 0xfc003fff, 0x2000107f, &NMD::MFLO_DSP_ , 0,
17776 DSP_ }, /* MFLO[DSP] */
17777 { instruction , 0 , 0 , 32,
17778 0xfc003fff, 0x2000207f, &NMD::MTHI_DSP_ , 0,
17779 DSP_ }, /* MTHI[DSP] */
17780 { instruction , 0 , 0 , 32,
17781 0xfc003fff, 0x2000307f, &NMD::MTLO_DSP_ , 0,
17782 DSP_ }, /* MTLO[DSP] */
17786 NMD::Pool NMD::POOL32Axf_1_1[4] = {
17787 { instruction , 0 , 0 , 32,
17788 0xfc003fff, 0x2000027f, &NMD::MTHLIP , 0,
17789 DSP_ }, /* MTHLIP */
17790 { instruction , 0 , 0 , 32,
17791 0xfc003fff, 0x2000127f, &NMD::SHILOV , 0,
17792 DSP_ }, /* SHILOV */
17793 { reserved_block , 0 , 0 , 32,
17794 0xfc003fff, 0x2000227f, 0 , 0,
17795 0x0 }, /* POOL32Axf_1_1~*(2) */
17796 { reserved_block , 0 , 0 , 32,
17797 0xfc003fff, 0x2000327f, 0 , 0,
17798 0x0 }, /* POOL32Axf_1_1~*(3) */
17802 NMD::Pool NMD::POOL32Axf_1_3[4] = {
17803 { instruction , 0 , 0 , 32,
17804 0xfc003fff, 0x2000067f, &NMD::RDDSP , 0,
17805 DSP_ }, /* RDDSP */
17806 { instruction , 0 , 0 , 32,
17807 0xfc003fff, 0x2000167f, &NMD::WRDSP , 0,
17808 DSP_ }, /* WRDSP */
17809 { instruction , 0 , 0 , 32,
17810 0xfc003fff, 0x2000267f, &NMD::EXTP , 0,
17811 DSP_ }, /* EXTP */
17812 { instruction , 0 , 0 , 32,
17813 0xfc003fff, 0x2000367f, &NMD::EXTPDP , 0,
17814 DSP_ }, /* EXTPDP */
17818 NMD::Pool NMD::POOL32Axf_1_4[2] = {
17819 { instruction , 0 , 0 , 32,
17820 0xfc001fff, 0x2000087f, &NMD::SHLL_QB , 0,
17821 DSP_ }, /* SHLL.QB */
17822 { instruction , 0 , 0 , 32,
17823 0xfc001fff, 0x2000187f, &NMD::SHRL_QB , 0,
17824 DSP_ }, /* SHRL.QB */
17828 NMD::Pool NMD::MAQ_S_A__W_PHR[2] = {
17829 { instruction , 0 , 0 , 32,
17830 0xfc003fff, 0x20000a7f, &NMD::MAQ_S_W_PHR , 0,
17831 DSP_ }, /* MAQ_S.W.PHR */
17832 { instruction , 0 , 0 , 32,
17833 0xfc003fff, 0x20002a7f, &NMD::MAQ_SA_W_PHR , 0,
17834 DSP_ }, /* MAQ_SA.W.PHR */
17838 NMD::Pool NMD::MAQ_S_A__W_PHL[2] = {
17839 { instruction , 0 , 0 , 32,
17840 0xfc003fff, 0x20001a7f, &NMD::MAQ_S_W_PHL , 0,
17841 DSP_ }, /* MAQ_S.W.PHL */
17842 { instruction , 0 , 0 , 32,
17843 0xfc003fff, 0x20003a7f, &NMD::MAQ_SA_W_PHL , 0,
17844 DSP_ }, /* MAQ_SA.W.PHL */
17848 NMD::Pool NMD::POOL32Axf_1_5[2] = {
17849 { pool , MAQ_S_A__W_PHR , 2 , 32,
17850 0xfc001fff, 0x20000a7f, 0 , 0,
17851 0x0 }, /* MAQ_S[A].W.PHR */
17852 { pool , MAQ_S_A__W_PHL , 2 , 32,
17853 0xfc001fff, 0x20001a7f, 0 , 0,
17854 0x0 }, /* MAQ_S[A].W.PHL */
17858 NMD::Pool NMD::POOL32Axf_1_7[4] = {
17859 { instruction , 0 , 0 , 32,
17860 0xfc003fff, 0x20000e7f, &NMD::EXTR_W , 0,
17861 DSP_ }, /* EXTR.W */
17862 { instruction , 0 , 0 , 32,
17863 0xfc003fff, 0x20001e7f, &NMD::EXTR_R_W , 0,
17864 DSP_ }, /* EXTR_R.W */
17865 { instruction , 0 , 0 , 32,
17866 0xfc003fff, 0x20002e7f, &NMD::EXTR_RS_W , 0,
17867 DSP_ }, /* EXTR_RS.W */
17868 { instruction , 0 , 0 , 32,
17869 0xfc003fff, 0x20003e7f, &NMD::EXTR_S_H , 0,
17870 DSP_ }, /* EXTR_S.H */
17874 NMD::Pool NMD::POOL32Axf_1[8] = {
17875 { pool , POOL32Axf_1_0 , 4 , 32,
17876 0xfc000fff, 0x2000007f, 0 , 0,
17877 0x0 }, /* POOL32Axf_1_0 */
17878 { pool , POOL32Axf_1_1 , 4 , 32,
17879 0xfc000fff, 0x2000027f, 0 , 0,
17880 0x0 }, /* POOL32Axf_1_1 */
17881 { reserved_block , 0 , 0 , 32,
17882 0xfc000fff, 0x2000047f, 0 , 0,
17883 0x0 }, /* POOL32Axf_1~*(2) */
17884 { pool , POOL32Axf_1_3 , 4 , 32,
17885 0xfc000fff, 0x2000067f, 0 , 0,
17886 0x0 }, /* POOL32Axf_1_3 */
17887 { pool , POOL32Axf_1_4 , 2 , 32,
17888 0xfc000fff, 0x2000087f, 0 , 0,
17889 0x0 }, /* POOL32Axf_1_4 */
17890 { pool , POOL32Axf_1_5 , 2 , 32,
17891 0xfc000fff, 0x20000a7f, 0 , 0,
17892 0x0 }, /* POOL32Axf_1_5 */
17893 { reserved_block , 0 , 0 , 32,
17894 0xfc000fff, 0x20000c7f, 0 , 0,
17895 0x0 }, /* POOL32Axf_1~*(6) */
17896 { pool , POOL32Axf_1_7 , 4 , 32,
17897 0xfc000fff, 0x20000e7f, 0 , 0,
17898 0x0 }, /* POOL32Axf_1_7 */
17902 NMD::Pool NMD::POOL32Axf_2_DSP__0_7[8] = {
17903 { instruction , 0 , 0 , 32,
17904 0xfc003fff, 0x200000bf, &NMD::DPA_W_PH , 0,
17905 DSP_ }, /* DPA.W.PH */
17906 { instruction , 0 , 0 , 32,
17907 0xfc003fff, 0x200002bf, &NMD::DPAQ_S_W_PH , 0,
17908 DSP_ }, /* DPAQ_S.W.PH */
17909 { instruction , 0 , 0 , 32,
17910 0xfc003fff, 0x200004bf, &NMD::DPS_W_PH , 0,
17911 DSP_ }, /* DPS.W.PH */
17912 { instruction , 0 , 0 , 32,
17913 0xfc003fff, 0x200006bf, &NMD::DPSQ_S_W_PH , 0,
17914 DSP_ }, /* DPSQ_S.W.PH */
17915 { reserved_block , 0 , 0 , 32,
17916 0xfc003fff, 0x200008bf, 0 , 0,
17917 0x0 }, /* POOL32Axf_2(DSP)_0_7~*(4) */
17918 { instruction , 0 , 0 , 32,
17919 0xfc003fff, 0x20000abf, &NMD::MADD_DSP_ , 0,
17920 DSP_ }, /* MADD[DSP] */
17921 { instruction , 0 , 0 , 32,
17922 0xfc003fff, 0x20000cbf, &NMD::MULT_DSP_ , 0,
17923 DSP_ }, /* MULT[DSP] */
17924 { instruction , 0 , 0 , 32,
17925 0xfc003fff, 0x20000ebf, &NMD::EXTRV_W , 0,
17926 DSP_ }, /* EXTRV.W */
17930 NMD::Pool NMD::POOL32Axf_2_DSP__8_15[8] = {
17931 { instruction , 0 , 0 , 32,
17932 0xfc003fff, 0x200010bf, &NMD::DPAX_W_PH , 0,
17933 DSP_ }, /* DPAX.W.PH */
17934 { instruction , 0 , 0 , 32,
17935 0xfc003fff, 0x200012bf, &NMD::DPAQ_SA_L_W , 0,
17936 DSP_ }, /* DPAQ_SA.L.W */
17937 { instruction , 0 , 0 , 32,
17938 0xfc003fff, 0x200014bf, &NMD::DPSX_W_PH , 0,
17939 DSP_ }, /* DPSX.W.PH */
17940 { instruction , 0 , 0 , 32,
17941 0xfc003fff, 0x200016bf, &NMD::DPSQ_SA_L_W , 0,
17942 DSP_ }, /* DPSQ_SA.L.W */
17943 { reserved_block , 0 , 0 , 32,
17944 0xfc003fff, 0x200018bf, 0 , 0,
17945 0x0 }, /* POOL32Axf_2(DSP)_8_15~*(4) */
17946 { instruction , 0 , 0 , 32,
17947 0xfc003fff, 0x20001abf, &NMD::MADDU_DSP_ , 0,
17948 DSP_ }, /* MADDU[DSP] */
17949 { instruction , 0 , 0 , 32,
17950 0xfc003fff, 0x20001cbf, &NMD::MULTU_DSP_ , 0,
17951 DSP_ }, /* MULTU[DSP] */
17952 { instruction , 0 , 0 , 32,
17953 0xfc003fff, 0x20001ebf, &NMD::EXTRV_R_W , 0,
17954 DSP_ }, /* EXTRV_R.W */
17958 NMD::Pool NMD::POOL32Axf_2_DSP__16_23[8] = {
17959 { instruction , 0 , 0 , 32,
17960 0xfc003fff, 0x200020bf, &NMD::DPAU_H_QBL , 0,
17961 DSP_ }, /* DPAU.H.QBL */
17962 { instruction , 0 , 0 , 32,
17963 0xfc003fff, 0x200022bf, &NMD::DPAQX_S_W_PH , 0,
17964 DSP_ }, /* DPAQX_S.W.PH */
17965 { instruction , 0 , 0 , 32,
17966 0xfc003fff, 0x200024bf, &NMD::DPSU_H_QBL , 0,
17967 DSP_ }, /* DPSU.H.QBL */
17968 { instruction , 0 , 0 , 32,
17969 0xfc003fff, 0x200026bf, &NMD::DPSQX_S_W_PH , 0,
17970 DSP_ }, /* DPSQX_S.W.PH */
17971 { instruction , 0 , 0 , 32,
17972 0xfc003fff, 0x200028bf, &NMD::EXTPV , 0,
17973 DSP_ }, /* EXTPV */
17974 { instruction , 0 , 0 , 32,
17975 0xfc003fff, 0x20002abf, &NMD::MSUB_DSP_ , 0,
17976 DSP_ }, /* MSUB[DSP] */
17977 { instruction , 0 , 0 , 32,
17978 0xfc003fff, 0x20002cbf, &NMD::MULSA_W_PH , 0,
17979 DSP_ }, /* MULSA.W.PH */
17980 { instruction , 0 , 0 , 32,
17981 0xfc003fff, 0x20002ebf, &NMD::EXTRV_RS_W , 0,
17982 DSP_ }, /* EXTRV_RS.W */
17986 NMD::Pool NMD::POOL32Axf_2_DSP__24_31[8] = {
17987 { instruction , 0 , 0 , 32,
17988 0xfc003fff, 0x200030bf, &NMD::DPAU_H_QBR , 0,
17989 DSP_ }, /* DPAU.H.QBR */
17990 { instruction , 0 , 0 , 32,
17991 0xfc003fff, 0x200032bf, &NMD::DPAQX_SA_W_PH , 0,
17992 DSP_ }, /* DPAQX_SA.W.PH */
17993 { instruction , 0 , 0 , 32,
17994 0xfc003fff, 0x200034bf, &NMD::DPSU_H_QBR , 0,
17995 DSP_ }, /* DPSU.H.QBR */
17996 { instruction , 0 , 0 , 32,
17997 0xfc003fff, 0x200036bf, &NMD::DPSQX_SA_W_PH , 0,
17998 DSP_ }, /* DPSQX_SA.W.PH */
17999 { instruction , 0 , 0 , 32,
18000 0xfc003fff, 0x200038bf, &NMD::EXTPDPV , 0,
18001 DSP_ }, /* EXTPDPV */
18002 { instruction , 0 , 0 , 32,
18003 0xfc003fff, 0x20003abf, &NMD::MSUBU_DSP_ , 0,
18004 DSP_ }, /* MSUBU[DSP] */
18005 { instruction , 0 , 0 , 32,
18006 0xfc003fff, 0x20003cbf, &NMD::MULSAQ_S_W_PH , 0,
18007 DSP_ }, /* MULSAQ_S.W.PH */
18008 { instruction , 0 , 0 , 32,
18009 0xfc003fff, 0x20003ebf, &NMD::EXTRV_S_H , 0,
18010 DSP_ }, /* EXTRV_S.H */
18014 NMD::Pool NMD::POOL32Axf_2[4] = {
18015 { pool , POOL32Axf_2_DSP__0_7, 8 , 32,
18016 0xfc0031ff, 0x200000bf, 0 , 0,
18017 0x0 }, /* POOL32Axf_2(DSP)_0_7 */
18018 { pool , POOL32Axf_2_DSP__8_15, 8 , 32,
18019 0xfc0031ff, 0x200010bf, 0 , 0,
18020 0x0 }, /* POOL32Axf_2(DSP)_8_15 */
18021 { pool , POOL32Axf_2_DSP__16_23, 8 , 32,
18022 0xfc0031ff, 0x200020bf, 0 , 0,
18023 0x0 }, /* POOL32Axf_2(DSP)_16_23 */
18024 { pool , POOL32Axf_2_DSP__24_31, 8 , 32,
18025 0xfc0031ff, 0x200030bf, 0 , 0,
18026 0x0 }, /* POOL32Axf_2(DSP)_24_31 */
18030 NMD::Pool NMD::POOL32Axf_4[128] = {
18031 { instruction , 0 , 0 , 32,
18032 0xfc00ffff, 0x2000013f, &NMD::ABSQ_S_QB , 0,
18033 DSP_ }, /* ABSQ_S.QB */
18034 { instruction , 0 , 0 , 32,
18035 0xfc00ffff, 0x2000033f, &NMD::REPLV_PH , 0,
18036 DSP_ }, /* REPLV.PH */
18037 { reserved_block , 0 , 0 , 32,
18038 0xfc00ffff, 0x2000053f, 0 , 0,
18039 0x0 }, /* POOL32Axf_4~*(2) */
18040 { reserved_block , 0 , 0 , 32,
18041 0xfc00ffff, 0x2000073f, 0 , 0,
18042 0x0 }, /* POOL32Axf_4~*(3) */
18043 { reserved_block , 0 , 0 , 32,
18044 0xfc00ffff, 0x2000093f, 0 , 0,
18045 0x0 }, /* POOL32Axf_4~*(4) */
18046 { reserved_block , 0 , 0 , 32,
18047 0xfc00ffff, 0x20000b3f, 0 , 0,
18048 0x0 }, /* POOL32Axf_4~*(5) */
18049 { reserved_block , 0 , 0 , 32,
18050 0xfc00ffff, 0x20000d3f, 0 , 0,
18051 0x0 }, /* POOL32Axf_4~*(6) */
18052 { reserved_block , 0 , 0 , 32,
18053 0xfc00ffff, 0x20000f3f, 0 , 0,
18054 0x0 }, /* POOL32Axf_4~*(7) */
18055 { instruction , 0 , 0 , 32,
18056 0xfc00ffff, 0x2000113f, &NMD::ABSQ_S_PH , 0,
18057 DSP_ }, /* ABSQ_S.PH */
18058 { instruction , 0 , 0 , 32,
18059 0xfc00ffff, 0x2000133f, &NMD::REPLV_QB , 0,
18060 DSP_ }, /* REPLV.QB */
18061 { reserved_block , 0 , 0 , 32,
18062 0xfc00ffff, 0x2000153f, 0 , 0,
18063 0x0 }, /* POOL32Axf_4~*(10) */
18064 { reserved_block , 0 , 0 , 32,
18065 0xfc00ffff, 0x2000173f, 0 , 0,
18066 0x0 }, /* POOL32Axf_4~*(11) */
18067 { reserved_block , 0 , 0 , 32,
18068 0xfc00ffff, 0x2000193f, 0 , 0,
18069 0x0 }, /* POOL32Axf_4~*(12) */
18070 { reserved_block , 0 , 0 , 32,
18071 0xfc00ffff, 0x20001b3f, 0 , 0,
18072 0x0 }, /* POOL32Axf_4~*(13) */
18073 { reserved_block , 0 , 0 , 32,
18074 0xfc00ffff, 0x20001d3f, 0 , 0,
18075 0x0 }, /* POOL32Axf_4~*(14) */
18076 { reserved_block , 0 , 0 , 32,
18077 0xfc00ffff, 0x20001f3f, 0 , 0,
18078 0x0 }, /* POOL32Axf_4~*(15) */
18079 { instruction , 0 , 0 , 32,
18080 0xfc00ffff, 0x2000213f, &NMD::ABSQ_S_W , 0,
18081 DSP_ }, /* ABSQ_S.W */
18082 { reserved_block , 0 , 0 , 32,
18083 0xfc00ffff, 0x2000233f, 0 , 0,
18084 0x0 }, /* POOL32Axf_4~*(17) */
18085 { reserved_block , 0 , 0 , 32,
18086 0xfc00ffff, 0x2000253f, 0 , 0,
18087 0x0 }, /* POOL32Axf_4~*(18) */
18088 { reserved_block , 0 , 0 , 32,
18089 0xfc00ffff, 0x2000273f, 0 , 0,
18090 0x0 }, /* POOL32Axf_4~*(19) */
18091 { reserved_block , 0 , 0 , 32,
18092 0xfc00ffff, 0x2000293f, 0 , 0,
18093 0x0 }, /* POOL32Axf_4~*(20) */
18094 { reserved_block , 0 , 0 , 32,
18095 0xfc00ffff, 0x20002b3f, 0 , 0,
18096 0x0 }, /* POOL32Axf_4~*(21) */
18097 { reserved_block , 0 , 0 , 32,
18098 0xfc00ffff, 0x20002d3f, 0 , 0,
18099 0x0 }, /* POOL32Axf_4~*(22) */
18100 { reserved_block , 0 , 0 , 32,
18101 0xfc00ffff, 0x20002f3f, 0 , 0,
18102 0x0 }, /* POOL32Axf_4~*(23) */
18103 { reserved_block , 0 , 0 , 32,
18104 0xfc00ffff, 0x2000313f, 0 , 0,
18105 0x0 }, /* POOL32Axf_4~*(24) */
18106 { reserved_block , 0 , 0 , 32,
18107 0xfc00ffff, 0x2000333f, 0 , 0,
18108 0x0 }, /* POOL32Axf_4~*(25) */
18109 { reserved_block , 0 , 0 , 32,
18110 0xfc00ffff, 0x2000353f, 0 , 0,
18111 0x0 }, /* POOL32Axf_4~*(26) */
18112 { reserved_block , 0 , 0 , 32,
18113 0xfc00ffff, 0x2000373f, 0 , 0,
18114 0x0 }, /* POOL32Axf_4~*(27) */
18115 { reserved_block , 0 , 0 , 32,
18116 0xfc00ffff, 0x2000393f, 0 , 0,
18117 0x0 }, /* POOL32Axf_4~*(28) */
18118 { reserved_block , 0 , 0 , 32,
18119 0xfc00ffff, 0x20003b3f, 0 , 0,
18120 0x0 }, /* POOL32Axf_4~*(29) */
18121 { reserved_block , 0 , 0 , 32,
18122 0xfc00ffff, 0x20003d3f, 0 , 0,
18123 0x0 }, /* POOL32Axf_4~*(30) */
18124 { reserved_block , 0 , 0 , 32,
18125 0xfc00ffff, 0x20003f3f, 0 , 0,
18126 0x0 }, /* POOL32Axf_4~*(31) */
18127 { instruction , 0 , 0 , 32,
18128 0xfc00ffff, 0x2000413f, &NMD::INSV , 0,
18129 DSP_ }, /* INSV */
18130 { reserved_block , 0 , 0 , 32,
18131 0xfc00ffff, 0x2000433f, 0 , 0,
18132 0x0 }, /* POOL32Axf_4~*(33) */
18133 { reserved_block , 0 , 0 , 32,
18134 0xfc00ffff, 0x2000453f, 0 , 0,
18135 0x0 }, /* POOL32Axf_4~*(34) */
18136 { reserved_block , 0 , 0 , 32,
18137 0xfc00ffff, 0x2000473f, 0 , 0,
18138 0x0 }, /* POOL32Axf_4~*(35) */
18139 { reserved_block , 0 , 0 , 32,
18140 0xfc00ffff, 0x2000493f, 0 , 0,
18141 0x0 }, /* POOL32Axf_4~*(36) */
18142 { instruction , 0 , 0 , 32,
18143 0xfc00ffff, 0x20004b3f, &NMD::CLO , 0,
18144 XMMS_ }, /* CLO */
18145 { instruction , 0 , 0 , 32,
18146 0xfc00ffff, 0x20004d3f, &NMD::MFC2 , 0,
18147 CP2_ }, /* MFC2 */
18148 { reserved_block , 0 , 0 , 32,
18149 0xfc00ffff, 0x20004f3f, 0 , 0,
18150 0x0 }, /* POOL32Axf_4~*(39) */
18151 { instruction , 0 , 0 , 32,
18152 0xfc00ffff, 0x2000513f, &NMD::PRECEQ_W_PHL , 0,
18153 DSP_ }, /* PRECEQ.W.PHL */
18154 { reserved_block , 0 , 0 , 32,
18155 0xfc00ffff, 0x2000533f, 0 , 0,
18156 0x0 }, /* POOL32Axf_4~*(41) */
18157 { reserved_block , 0 , 0 , 32,
18158 0xfc00ffff, 0x2000553f, 0 , 0,
18159 0x0 }, /* POOL32Axf_4~*(42) */
18160 { reserved_block , 0 , 0 , 32,
18161 0xfc00ffff, 0x2000573f, 0 , 0,
18162 0x0 }, /* POOL32Axf_4~*(43) */
18163 { reserved_block , 0 , 0 , 32,
18164 0xfc00ffff, 0x2000593f, 0 , 0,
18165 0x0 }, /* POOL32Axf_4~*(44) */
18166 { instruction , 0 , 0 , 32,
18167 0xfc00ffff, 0x20005b3f, &NMD::CLZ , 0,
18168 XMMS_ }, /* CLZ */
18169 { instruction , 0 , 0 , 32,
18170 0xfc00ffff, 0x20005d3f, &NMD::MTC2 , 0,
18171 CP2_ }, /* MTC2 */
18172 { reserved_block , 0 , 0 , 32,
18173 0xfc00ffff, 0x20005f3f, 0 , 0,
18174 0x0 }, /* POOL32Axf_4~*(47) */
18175 { instruction , 0 , 0 , 32,
18176 0xfc00ffff, 0x2000613f, &NMD::PRECEQ_W_PHR , 0,
18177 DSP_ }, /* PRECEQ.W.PHR */
18178 { reserved_block , 0 , 0 , 32,
18179 0xfc00ffff, 0x2000633f, 0 , 0,
18180 0x0 }, /* POOL32Axf_4~*(49) */
18181 { reserved_block , 0 , 0 , 32,
18182 0xfc00ffff, 0x2000653f, 0 , 0,
18183 0x0 }, /* POOL32Axf_4~*(50) */
18184 { reserved_block , 0 , 0 , 32,
18185 0xfc00ffff, 0x2000673f, 0 , 0,
18186 0x0 }, /* POOL32Axf_4~*(51) */
18187 { reserved_block , 0 , 0 , 32,
18188 0xfc00ffff, 0x2000693f, 0 , 0,
18189 0x0 }, /* POOL32Axf_4~*(52) */
18190 { reserved_block , 0 , 0 , 32,
18191 0xfc00ffff, 0x20006b3f, 0 , 0,
18192 0x0 }, /* POOL32Axf_4~*(53) */
18193 { instruction , 0 , 0 , 32,
18194 0xfc00ffff, 0x20006d3f, &NMD::DMFC2 , 0,
18195 CP2_ }, /* DMFC2 */
18196 { reserved_block , 0 , 0 , 32,
18197 0xfc00ffff, 0x20006f3f, 0 , 0,
18198 0x0 }, /* POOL32Axf_4~*(55) */
18199 { instruction , 0 , 0 , 32,
18200 0xfc00ffff, 0x2000713f, &NMD::PRECEQU_PH_QBL , 0,
18201 DSP_ }, /* PRECEQU.PH.QBL */
18202 { instruction , 0 , 0 , 32,
18203 0xfc00ffff, 0x2000733f, &NMD::PRECEQU_PH_QBLA , 0,
18204 DSP_ }, /* PRECEQU.PH.QBLA */
18205 { reserved_block , 0 , 0 , 32,
18206 0xfc00ffff, 0x2000753f, 0 , 0,
18207 0x0 }, /* POOL32Axf_4~*(58) */
18208 { reserved_block , 0 , 0 , 32,
18209 0xfc00ffff, 0x2000773f, 0 , 0,
18210 0x0 }, /* POOL32Axf_4~*(59) */
18211 { reserved_block , 0 , 0 , 32,
18212 0xfc00ffff, 0x2000793f, 0 , 0,
18213 0x0 }, /* POOL32Axf_4~*(60) */
18214 { reserved_block , 0 , 0 , 32,
18215 0xfc00ffff, 0x20007b3f, 0 , 0,
18216 0x0 }, /* POOL32Axf_4~*(61) */
18217 { instruction , 0 , 0 , 32,
18218 0xfc00ffff, 0x20007d3f, &NMD::DMTC2 , 0,
18219 CP2_ }, /* DMTC2 */
18220 { reserved_block , 0 , 0 , 32,
18221 0xfc00ffff, 0x20007f3f, 0 , 0,
18222 0x0 }, /* POOL32Axf_4~*(63) */
18223 { reserved_block , 0 , 0 , 32,
18224 0xfc00ffff, 0x2000813f, 0 , 0,
18225 0x0 }, /* POOL32Axf_4~*(64) */
18226 { reserved_block , 0 , 0 , 32,
18227 0xfc00ffff, 0x2000833f, 0 , 0,
18228 0x0 }, /* POOL32Axf_4~*(65) */
18229 { reserved_block , 0 , 0 , 32,
18230 0xfc00ffff, 0x2000853f, 0 , 0,
18231 0x0 }, /* POOL32Axf_4~*(66) */
18232 { reserved_block , 0 , 0 , 32,
18233 0xfc00ffff, 0x2000873f, 0 , 0,
18234 0x0 }, /* POOL32Axf_4~*(67) */
18235 { reserved_block , 0 , 0 , 32,
18236 0xfc00ffff, 0x2000893f, 0 , 0,
18237 0x0 }, /* POOL32Axf_4~*(68) */
18238 { reserved_block , 0 , 0 , 32,
18239 0xfc00ffff, 0x20008b3f, 0 , 0,
18240 0x0 }, /* POOL32Axf_4~*(69) */
18241 { instruction , 0 , 0 , 32,
18242 0xfc00ffff, 0x20008d3f, &NMD::MFHC2 , 0,
18243 CP2_ }, /* MFHC2 */
18244 { reserved_block , 0 , 0 , 32,
18245 0xfc00ffff, 0x20008f3f, 0 , 0,
18246 0x0 }, /* POOL32Axf_4~*(71) */
18247 { instruction , 0 , 0 , 32,
18248 0xfc00ffff, 0x2000913f, &NMD::PRECEQU_PH_QBR , 0,
18249 DSP_ }, /* PRECEQU.PH.QBR */
18250 { instruction , 0 , 0 , 32,
18251 0xfc00ffff, 0x2000933f, &NMD::PRECEQU_PH_QBRA , 0,
18252 DSP_ }, /* PRECEQU.PH.QBRA */
18253 { reserved_block , 0 , 0 , 32,
18254 0xfc00ffff, 0x2000953f, 0 , 0,
18255 0x0 }, /* POOL32Axf_4~*(74) */
18256 { reserved_block , 0 , 0 , 32,
18257 0xfc00ffff, 0x2000973f, 0 , 0,
18258 0x0 }, /* POOL32Axf_4~*(75) */
18259 { reserved_block , 0 , 0 , 32,
18260 0xfc00ffff, 0x2000993f, 0 , 0,
18261 0x0 }, /* POOL32Axf_4~*(76) */
18262 { reserved_block , 0 , 0 , 32,
18263 0xfc00ffff, 0x20009b3f, 0 , 0,
18264 0x0 }, /* POOL32Axf_4~*(77) */
18265 { instruction , 0 , 0 , 32,
18266 0xfc00ffff, 0x20009d3f, &NMD::MTHC2 , 0,
18267 CP2_ }, /* MTHC2 */
18268 { reserved_block , 0 , 0 , 32,
18269 0xfc00ffff, 0x20009f3f, 0 , 0,
18270 0x0 }, /* POOL32Axf_4~*(79) */
18271 { reserved_block , 0 , 0 , 32,
18272 0xfc00ffff, 0x2000a13f, 0 , 0,
18273 0x0 }, /* POOL32Axf_4~*(80) */
18274 { reserved_block , 0 , 0 , 32,
18275 0xfc00ffff, 0x2000a33f, 0 , 0,
18276 0x0 }, /* POOL32Axf_4~*(81) */
18277 { reserved_block , 0 , 0 , 32,
18278 0xfc00ffff, 0x2000a53f, 0 , 0,
18279 0x0 }, /* POOL32Axf_4~*(82) */
18280 { reserved_block , 0 , 0 , 32,
18281 0xfc00ffff, 0x2000a73f, 0 , 0,
18282 0x0 }, /* POOL32Axf_4~*(83) */
18283 { reserved_block , 0 , 0 , 32,
18284 0xfc00ffff, 0x2000a93f, 0 , 0,
18285 0x0 }, /* POOL32Axf_4~*(84) */
18286 { reserved_block , 0 , 0 , 32,
18287 0xfc00ffff, 0x2000ab3f, 0 , 0,
18288 0x0 }, /* POOL32Axf_4~*(85) */
18289 { reserved_block , 0 , 0 , 32,
18290 0xfc00ffff, 0x2000ad3f, 0 , 0,
18291 0x0 }, /* POOL32Axf_4~*(86) */
18292 { reserved_block , 0 , 0 , 32,
18293 0xfc00ffff, 0x2000af3f, 0 , 0,
18294 0x0 }, /* POOL32Axf_4~*(87) */
18295 { instruction , 0 , 0 , 32,
18296 0xfc00ffff, 0x2000b13f, &NMD::PRECEU_PH_QBL , 0,
18297 DSP_ }, /* PRECEU.PH.QBL */
18298 { instruction , 0 , 0 , 32,
18299 0xfc00ffff, 0x2000b33f, &NMD::PRECEU_PH_QBLA , 0,
18300 DSP_ }, /* PRECEU.PH.QBLA */
18301 { reserved_block , 0 , 0 , 32,
18302 0xfc00ffff, 0x2000b53f, 0 , 0,
18303 0x0 }, /* POOL32Axf_4~*(90) */
18304 { reserved_block , 0 , 0 , 32,
18305 0xfc00ffff, 0x2000b73f, 0 , 0,
18306 0x0 }, /* POOL32Axf_4~*(91) */
18307 { reserved_block , 0 , 0 , 32,
18308 0xfc00ffff, 0x2000b93f, 0 , 0,
18309 0x0 }, /* POOL32Axf_4~*(92) */
18310 { reserved_block , 0 , 0 , 32,
18311 0xfc00ffff, 0x2000bb3f, 0 , 0,
18312 0x0 }, /* POOL32Axf_4~*(93) */
18313 { reserved_block , 0 , 0 , 32,
18314 0xfc00ffff, 0x2000bd3f, 0 , 0,
18315 0x0 }, /* POOL32Axf_4~*(94) */
18316 { reserved_block , 0 , 0 , 32,
18317 0xfc00ffff, 0x2000bf3f, 0 , 0,
18318 0x0 }, /* POOL32Axf_4~*(95) */
18319 { reserved_block , 0 , 0 , 32,
18320 0xfc00ffff, 0x2000c13f, 0 , 0,
18321 0x0 }, /* POOL32Axf_4~*(96) */
18322 { reserved_block , 0 , 0 , 32,
18323 0xfc00ffff, 0x2000c33f, 0 , 0,
18324 0x0 }, /* POOL32Axf_4~*(97) */
18325 { reserved_block , 0 , 0 , 32,
18326 0xfc00ffff, 0x2000c53f, 0 , 0,
18327 0x0 }, /* POOL32Axf_4~*(98) */
18328 { reserved_block , 0 , 0 , 32,
18329 0xfc00ffff, 0x2000c73f, 0 , 0,
18330 0x0 }, /* POOL32Axf_4~*(99) */
18331 { reserved_block , 0 , 0 , 32,
18332 0xfc00ffff, 0x2000c93f, 0 , 0,
18333 0x0 }, /* POOL32Axf_4~*(100) */
18334 { reserved_block , 0 , 0 , 32,
18335 0xfc00ffff, 0x2000cb3f, 0 , 0,
18336 0x0 }, /* POOL32Axf_4~*(101) */
18337 { instruction , 0 , 0 , 32,
18338 0xfc00ffff, 0x2000cd3f, &NMD::CFC2 , 0,
18339 CP2_ }, /* CFC2 */
18340 { reserved_block , 0 , 0 , 32,
18341 0xfc00ffff, 0x2000cf3f, 0 , 0,
18342 0x0 }, /* POOL32Axf_4~*(103) */
18343 { instruction , 0 , 0 , 32,
18344 0xfc00ffff, 0x2000d13f, &NMD::PRECEU_PH_QBR , 0,
18345 DSP_ }, /* PRECEU.PH.QBR */
18346 { instruction , 0 , 0 , 32,
18347 0xfc00ffff, 0x2000d33f, &NMD::PRECEU_PH_QBRA , 0,
18348 DSP_ }, /* PRECEU.PH.QBRA */
18349 { reserved_block , 0 , 0 , 32,
18350 0xfc00ffff, 0x2000d53f, 0 , 0,
18351 0x0 }, /* POOL32Axf_4~*(106) */
18352 { reserved_block , 0 , 0 , 32,
18353 0xfc00ffff, 0x2000d73f, 0 , 0,
18354 0x0 }, /* POOL32Axf_4~*(107) */
18355 { reserved_block , 0 , 0 , 32,
18356 0xfc00ffff, 0x2000d93f, 0 , 0,
18357 0x0 }, /* POOL32Axf_4~*(108) */
18358 { reserved_block , 0 , 0 , 32,
18359 0xfc00ffff, 0x2000db3f, 0 , 0,
18360 0x0 }, /* POOL32Axf_4~*(109) */
18361 { instruction , 0 , 0 , 32,
18362 0xfc00ffff, 0x2000dd3f, &NMD::CTC2 , 0,
18363 CP2_ }, /* CTC2 */
18364 { reserved_block , 0 , 0 , 32,
18365 0xfc00ffff, 0x2000df3f, 0 , 0,
18366 0x0 }, /* POOL32Axf_4~*(111) */
18367 { reserved_block , 0 , 0 , 32,
18368 0xfc00ffff, 0x2000e13f, 0 , 0,
18369 0x0 }, /* POOL32Axf_4~*(112) */
18370 { reserved_block , 0 , 0 , 32,
18371 0xfc00ffff, 0x2000e33f, 0 , 0,
18372 0x0 }, /* POOL32Axf_4~*(113) */
18373 { reserved_block , 0 , 0 , 32,
18374 0xfc00ffff, 0x2000e53f, 0 , 0,
18375 0x0 }, /* POOL32Axf_4~*(114) */
18376 { reserved_block , 0 , 0 , 32,
18377 0xfc00ffff, 0x2000e73f, 0 , 0,
18378 0x0 }, /* POOL32Axf_4~*(115) */
18379 { reserved_block , 0 , 0 , 32,
18380 0xfc00ffff, 0x2000e93f, 0 , 0,
18381 0x0 }, /* POOL32Axf_4~*(116) */
18382 { reserved_block , 0 , 0 , 32,
18383 0xfc00ffff, 0x2000eb3f, 0 , 0,
18384 0x0 }, /* POOL32Axf_4~*(117) */
18385 { reserved_block , 0 , 0 , 32,
18386 0xfc00ffff, 0x2000ed3f, 0 , 0,
18387 0x0 }, /* POOL32Axf_4~*(118) */
18388 { reserved_block , 0 , 0 , 32,
18389 0xfc00ffff, 0x2000ef3f, 0 , 0,
18390 0x0 }, /* POOL32Axf_4~*(119) */
18391 { instruction , 0 , 0 , 32,
18392 0xfc00ffff, 0x2000f13f, &NMD::RADDU_W_QB , 0,
18393 DSP_ }, /* RADDU.W.QB */
18394 { reserved_block , 0 , 0 , 32,
18395 0xfc00ffff, 0x2000f33f, 0 , 0,
18396 0x0 }, /* POOL32Axf_4~*(121) */
18397 { reserved_block , 0 , 0 , 32,
18398 0xfc00ffff, 0x2000f53f, 0 , 0,
18399 0x0 }, /* POOL32Axf_4~*(122) */
18400 { reserved_block , 0 , 0 , 32,
18401 0xfc00ffff, 0x2000f73f, 0 , 0,
18402 0x0 }, /* POOL32Axf_4~*(123) */
18403 { reserved_block , 0 , 0 , 32,
18404 0xfc00ffff, 0x2000f93f, 0 , 0,
18405 0x0 }, /* POOL32Axf_4~*(124) */
18406 { reserved_block , 0 , 0 , 32,
18407 0xfc00ffff, 0x2000fb3f, 0 , 0,
18408 0x0 }, /* POOL32Axf_4~*(125) */
18409 { reserved_block , 0 , 0 , 32,
18410 0xfc00ffff, 0x2000fd3f, 0 , 0,
18411 0x0 }, /* POOL32Axf_4~*(126) */
18412 { reserved_block , 0 , 0 , 32,
18413 0xfc00ffff, 0x2000ff3f, 0 , 0,
18414 0x0 }, /* POOL32Axf_4~*(127) */
18418 NMD::Pool NMD::POOL32Axf_5_group0[32] = {
18419 { instruction , 0 , 0 , 32,
18420 0xfc00ffff, 0x2000017f, &NMD::TLBGP , 0,
18421 CP0_ | VZ_ | TLB_ }, /* TLBGP */
18422 { instruction , 0 , 0 , 32,
18423 0xfc00ffff, 0x2000037f, &NMD::TLBP , 0,
18424 CP0_ | TLB_ }, /* TLBP */
18425 { instruction , 0 , 0 , 32,
18426 0xfc00ffff, 0x2000057f, &NMD::TLBGINV , 0,
18427 CP0_ | VZ_ | TLB_ | TLBINV_}, /* TLBGINV */
18428 { instruction , 0 , 0 , 32,
18429 0xfc00ffff, 0x2000077f, &NMD::TLBINV , 0,
18430 CP0_ | TLB_ | TLBINV_}, /* TLBINV */
18431 { reserved_block , 0 , 0 , 32,
18432 0xfc00ffff, 0x2000097f, 0 , 0,
18433 0x0 }, /* POOL32Axf_5_group0~*(4) */
18434 { reserved_block , 0 , 0 , 32,
18435 0xfc00ffff, 0x20000b7f, 0 , 0,
18436 0x0 }, /* POOL32Axf_5_group0~*(5) */
18437 { reserved_block , 0 , 0 , 32,
18438 0xfc00ffff, 0x20000d7f, 0 , 0,
18439 0x0 }, /* POOL32Axf_5_group0~*(6) */
18440 { reserved_block , 0 , 0 , 32,
18441 0xfc00ffff, 0x20000f7f, 0 , 0,
18442 0x0 }, /* POOL32Axf_5_group0~*(7) */
18443 { instruction , 0 , 0 , 32,
18444 0xfc00ffff, 0x2000117f, &NMD::TLBGR , 0,
18445 CP0_ | VZ_ | TLB_ }, /* TLBGR */
18446 { instruction , 0 , 0 , 32,
18447 0xfc00ffff, 0x2000137f, &NMD::TLBR , 0,
18448 CP0_ | TLB_ }, /* TLBR */
18449 { instruction , 0 , 0 , 32,
18450 0xfc00ffff, 0x2000157f, &NMD::TLBGINVF , 0,
18451 CP0_ | VZ_ | TLB_ | TLBINV_}, /* TLBGINVF */
18452 { instruction , 0 , 0 , 32,
18453 0xfc00ffff, 0x2000177f, &NMD::TLBINVF , 0,
18454 CP0_ | TLB_ | TLBINV_}, /* TLBINVF */
18455 { reserved_block , 0 , 0 , 32,
18456 0xfc00ffff, 0x2000197f, 0 , 0,
18457 0x0 }, /* POOL32Axf_5_group0~*(12) */
18458 { reserved_block , 0 , 0 , 32,
18459 0xfc00ffff, 0x20001b7f, 0 , 0,
18460 0x0 }, /* POOL32Axf_5_group0~*(13) */
18461 { reserved_block , 0 , 0 , 32,
18462 0xfc00ffff, 0x20001d7f, 0 , 0,
18463 0x0 }, /* POOL32Axf_5_group0~*(14) */
18464 { reserved_block , 0 , 0 , 32,
18465 0xfc00ffff, 0x20001f7f, 0 , 0,
18466 0x0 }, /* POOL32Axf_5_group0~*(15) */
18467 { instruction , 0 , 0 , 32,
18468 0xfc00ffff, 0x2000217f, &NMD::TLBGWI , 0,
18469 CP0_ | VZ_ | TLB_ }, /* TLBGWI */
18470 { instruction , 0 , 0 , 32,
18471 0xfc00ffff, 0x2000237f, &NMD::TLBWI , 0,
18472 CP0_ | TLB_ }, /* TLBWI */
18473 { reserved_block , 0 , 0 , 32,
18474 0xfc00ffff, 0x2000257f, 0 , 0,
18475 0x0 }, /* POOL32Axf_5_group0~*(18) */
18476 { reserved_block , 0 , 0 , 32,
18477 0xfc00ffff, 0x2000277f, 0 , 0,
18478 0x0 }, /* POOL32Axf_5_group0~*(19) */
18479 { reserved_block , 0 , 0 , 32,
18480 0xfc00ffff, 0x2000297f, 0 , 0,
18481 0x0 }, /* POOL32Axf_5_group0~*(20) */
18482 { reserved_block , 0 , 0 , 32,
18483 0xfc00ffff, 0x20002b7f, 0 , 0,
18484 0x0 }, /* POOL32Axf_5_group0~*(21) */
18485 { reserved_block , 0 , 0 , 32,
18486 0xfc00ffff, 0x20002d7f, 0 , 0,
18487 0x0 }, /* POOL32Axf_5_group0~*(22) */
18488 { reserved_block , 0 , 0 , 32,
18489 0xfc00ffff, 0x20002f7f, 0 , 0,
18490 0x0 }, /* POOL32Axf_5_group0~*(23) */
18491 { instruction , 0 , 0 , 32,
18492 0xfc00ffff, 0x2000317f, &NMD::TLBGWR , 0,
18493 CP0_ | VZ_ | TLB_ }, /* TLBGWR */
18494 { instruction , 0 , 0 , 32,
18495 0xfc00ffff, 0x2000337f, &NMD::TLBWR , 0,
18496 CP0_ | TLB_ }, /* TLBWR */
18497 { reserved_block , 0 , 0 , 32,
18498 0xfc00ffff, 0x2000357f, 0 , 0,
18499 0x0 }, /* POOL32Axf_5_group0~*(26) */
18500 { reserved_block , 0 , 0 , 32,
18501 0xfc00ffff, 0x2000377f, 0 , 0,
18502 0x0 }, /* POOL32Axf_5_group0~*(27) */
18503 { reserved_block , 0 , 0 , 32,
18504 0xfc00ffff, 0x2000397f, 0 , 0,
18505 0x0 }, /* POOL32Axf_5_group0~*(28) */
18506 { reserved_block , 0 , 0 , 32,
18507 0xfc00ffff, 0x20003b7f, 0 , 0,
18508 0x0 }, /* POOL32Axf_5_group0~*(29) */
18509 { reserved_block , 0 , 0 , 32,
18510 0xfc00ffff, 0x20003d7f, 0 , 0,
18511 0x0 }, /* POOL32Axf_5_group0~*(30) */
18512 { reserved_block , 0 , 0 , 32,
18513 0xfc00ffff, 0x20003f7f, 0 , 0,
18514 0x0 }, /* POOL32Axf_5_group0~*(31) */
18518 NMD::Pool NMD::POOL32Axf_5_group1[32] = {
18519 { reserved_block , 0 , 0 , 32,
18520 0xfc00ffff, 0x2000417f, 0 , 0,
18521 0x0 }, /* POOL32Axf_5_group1~*(0) */
18522 { reserved_block , 0 , 0 , 32,
18523 0xfc00ffff, 0x2000437f, 0 , 0,
18524 0x0 }, /* POOL32Axf_5_group1~*(1) */
18525 { reserved_block , 0 , 0 , 32,
18526 0xfc00ffff, 0x2000457f, 0 , 0,
18527 0x0 }, /* POOL32Axf_5_group1~*(2) */
18528 { instruction , 0 , 0 , 32,
18529 0xfc00ffff, 0x2000477f, &NMD::DI , 0,
18530 0x0 }, /* DI */
18531 { reserved_block , 0 , 0 , 32,
18532 0xfc00ffff, 0x2000497f, 0 , 0,
18533 0x0 }, /* POOL32Axf_5_group1~*(4) */
18534 { reserved_block , 0 , 0 , 32,
18535 0xfc00ffff, 0x20004b7f, 0 , 0,
18536 0x0 }, /* POOL32Axf_5_group1~*(5) */
18537 { reserved_block , 0 , 0 , 32,
18538 0xfc00ffff, 0x20004d7f, 0 , 0,
18539 0x0 }, /* POOL32Axf_5_group1~*(6) */
18540 { reserved_block , 0 , 0 , 32,
18541 0xfc00ffff, 0x20004f7f, 0 , 0,
18542 0x0 }, /* POOL32Axf_5_group1~*(7) */
18543 { reserved_block , 0 , 0 , 32,
18544 0xfc00ffff, 0x2000517f, 0 , 0,
18545 0x0 }, /* POOL32Axf_5_group1~*(8) */
18546 { reserved_block , 0 , 0 , 32,
18547 0xfc00ffff, 0x2000537f, 0 , 0,
18548 0x0 }, /* POOL32Axf_5_group1~*(9) */
18549 { reserved_block , 0 , 0 , 32,
18550 0xfc00ffff, 0x2000557f, 0 , 0,
18551 0x0 }, /* POOL32Axf_5_group1~*(10) */
18552 { instruction , 0 , 0 , 32,
18553 0xfc00ffff, 0x2000577f, &NMD::EI , 0,
18554 0x0 }, /* EI */
18555 { reserved_block , 0 , 0 , 32,
18556 0xfc00ffff, 0x2000597f, 0 , 0,
18557 0x0 }, /* POOL32Axf_5_group1~*(12) */
18558 { reserved_block , 0 , 0 , 32,
18559 0xfc00ffff, 0x20005b7f, 0 , 0,
18560 0x0 }, /* POOL32Axf_5_group1~*(13) */
18561 { reserved_block , 0 , 0 , 32,
18562 0xfc00ffff, 0x20005d7f, 0 , 0,
18563 0x0 }, /* POOL32Axf_5_group1~*(14) */
18564 { reserved_block , 0 , 0 , 32,
18565 0xfc00ffff, 0x20005f7f, 0 , 0,
18566 0x0 }, /* POOL32Axf_5_group1~*(15) */
18567 { reserved_block , 0 , 0 , 32,
18568 0xfc00ffff, 0x2000617f, 0 , 0,
18569 0x0 }, /* POOL32Axf_5_group1~*(16) */
18570 { reserved_block , 0 , 0 , 32,
18571 0xfc00ffff, 0x2000637f, 0 , 0,
18572 0x0 }, /* POOL32Axf_5_group1~*(17) */
18573 { reserved_block , 0 , 0 , 32,
18574 0xfc00ffff, 0x2000657f, 0 , 0,
18575 0x0 }, /* POOL32Axf_5_group1~*(18) */
18576 { reserved_block , 0 , 0 , 32,
18577 0xfc00ffff, 0x2000677f, 0 , 0,
18578 0x0 }, /* POOL32Axf_5_group1~*(19) */
18579 { reserved_block , 0 , 0 , 32,
18580 0xfc00ffff, 0x2000697f, 0 , 0,
18581 0x0 }, /* POOL32Axf_5_group1~*(20) */
18582 { reserved_block , 0 , 0 , 32,
18583 0xfc00ffff, 0x20006b7f, 0 , 0,
18584 0x0 }, /* POOL32Axf_5_group1~*(21) */
18585 { reserved_block , 0 , 0 , 32,
18586 0xfc00ffff, 0x20006d7f, 0 , 0,
18587 0x0 }, /* POOL32Axf_5_group1~*(22) */
18588 { reserved_block , 0 , 0 , 32,
18589 0xfc00ffff, 0x20006f7f, 0 , 0,
18590 0x0 }, /* POOL32Axf_5_group1~*(23) */
18591 { reserved_block , 0 , 0 , 32,
18592 0xfc00ffff, 0x2000717f, 0 , 0,
18593 0x0 }, /* POOL32Axf_5_group1~*(24) */
18594 { reserved_block , 0 , 0 , 32,
18595 0xfc00ffff, 0x2000737f, 0 , 0,
18596 0x0 }, /* POOL32Axf_5_group1~*(25) */
18597 { reserved_block , 0 , 0 , 32,
18598 0xfc00ffff, 0x2000757f, 0 , 0,
18599 0x0 }, /* POOL32Axf_5_group1~*(26) */
18600 { reserved_block , 0 , 0 , 32,
18601 0xfc00ffff, 0x2000777f, 0 , 0,
18602 0x0 }, /* POOL32Axf_5_group1~*(27) */
18603 { reserved_block , 0 , 0 , 32,
18604 0xfc00ffff, 0x2000797f, 0 , 0,
18605 0x0 }, /* POOL32Axf_5_group1~*(28) */
18606 { reserved_block , 0 , 0 , 32,
18607 0xfc00ffff, 0x20007b7f, 0 , 0,
18608 0x0 }, /* POOL32Axf_5_group1~*(29) */
18609 { reserved_block , 0 , 0 , 32,
18610 0xfc00ffff, 0x20007d7f, 0 , 0,
18611 0x0 }, /* POOL32Axf_5_group1~*(30) */
18612 { reserved_block , 0 , 0 , 32,
18613 0xfc00ffff, 0x20007f7f, 0 , 0,
18614 0x0 }, /* POOL32Axf_5_group1~*(31) */
18618 NMD::Pool NMD::ERETx[2] = {
18619 { instruction , 0 , 0 , 32,
18620 0xfc01ffff, 0x2000f37f, &NMD::ERET , 0,
18621 0x0 }, /* ERET */
18622 { instruction , 0 , 0 , 32,
18623 0xfc01ffff, 0x2001f37f, &NMD::ERETNC , 0,
18624 0x0 }, /* ERETNC */
18628 NMD::Pool NMD::POOL32Axf_5_group3[32] = {
18629 { reserved_block , 0 , 0 , 32,
18630 0xfc00ffff, 0x2000c17f, 0 , 0,
18631 0x0 }, /* POOL32Axf_5_group3~*(0) */
18632 { instruction , 0 , 0 , 32,
18633 0xfc00ffff, 0x2000c37f, &NMD::WAIT , 0,
18634 0x0 }, /* WAIT */
18635 { reserved_block , 0 , 0 , 32,
18636 0xfc00ffff, 0x2000c57f, 0 , 0,
18637 0x0 }, /* POOL32Axf_5_group3~*(2) */
18638 { reserved_block , 0 , 0 , 32,
18639 0xfc00ffff, 0x2000c77f, 0 , 0,
18640 0x0 }, /* POOL32Axf_5_group3~*(3) */
18641 { reserved_block , 0 , 0 , 32,
18642 0xfc00ffff, 0x2000c97f, 0 , 0,
18643 0x0 }, /* POOL32Axf_5_group3~*(4) */
18644 { reserved_block , 0 , 0 , 32,
18645 0xfc00ffff, 0x2000cb7f, 0 , 0,
18646 0x0 }, /* POOL32Axf_5_group3~*(5) */
18647 { reserved_block , 0 , 0 , 32,
18648 0xfc00ffff, 0x2000cd7f, 0 , 0,
18649 0x0 }, /* POOL32Axf_5_group3~*(6) */
18650 { reserved_block , 0 , 0 , 32,
18651 0xfc00ffff, 0x2000cf7f, 0 , 0,
18652 0x0 }, /* POOL32Axf_5_group3~*(7) */
18653 { reserved_block , 0 , 0 , 32,
18654 0xfc00ffff, 0x2000d17f, 0 , 0,
18655 0x0 }, /* POOL32Axf_5_group3~*(8) */
18656 { instruction , 0 , 0 , 32,
18657 0xfc00ffff, 0x2000d37f, &NMD::IRET , 0,
18658 MCU_ }, /* IRET */
18659 { reserved_block , 0 , 0 , 32,
18660 0xfc00ffff, 0x2000d57f, 0 , 0,
18661 0x0 }, /* POOL32Axf_5_group3~*(10) */
18662 { reserved_block , 0 , 0 , 32,
18663 0xfc00ffff, 0x2000d77f, 0 , 0,
18664 0x0 }, /* POOL32Axf_5_group3~*(11) */
18665 { reserved_block , 0 , 0 , 32,
18666 0xfc00ffff, 0x2000d97f, 0 , 0,
18667 0x0 }, /* POOL32Axf_5_group3~*(12) */
18668 { reserved_block , 0 , 0 , 32,
18669 0xfc00ffff, 0x2000db7f, 0 , 0,
18670 0x0 }, /* POOL32Axf_5_group3~*(13) */
18671 { reserved_block , 0 , 0 , 32,
18672 0xfc00ffff, 0x2000dd7f, 0 , 0,
18673 0x0 }, /* POOL32Axf_5_group3~*(14) */
18674 { reserved_block , 0 , 0 , 32,
18675 0xfc00ffff, 0x2000df7f, 0 , 0,
18676 0x0 }, /* POOL32Axf_5_group3~*(15) */
18677 { instruction , 0 , 0 , 32,
18678 0xfc00ffff, 0x2000e17f, &NMD::RDPGPR , 0,
18679 CP0_ }, /* RDPGPR */
18680 { instruction , 0 , 0 , 32,
18681 0xfc00ffff, 0x2000e37f, &NMD::DERET , 0,
18682 EJTAG_ }, /* DERET */
18683 { reserved_block , 0 , 0 , 32,
18684 0xfc00ffff, 0x2000e57f, 0 , 0,
18685 0x0 }, /* POOL32Axf_5_group3~*(18) */
18686 { reserved_block , 0 , 0 , 32,
18687 0xfc00ffff, 0x2000e77f, 0 , 0,
18688 0x0 }, /* POOL32Axf_5_group3~*(19) */
18689 { reserved_block , 0 , 0 , 32,
18690 0xfc00ffff, 0x2000e97f, 0 , 0,
18691 0x0 }, /* POOL32Axf_5_group3~*(20) */
18692 { reserved_block , 0 , 0 , 32,
18693 0xfc00ffff, 0x2000eb7f, 0 , 0,
18694 0x0 }, /* POOL32Axf_5_group3~*(21) */
18695 { reserved_block , 0 , 0 , 32,
18696 0xfc00ffff, 0x2000ed7f, 0 , 0,
18697 0x0 }, /* POOL32Axf_5_group3~*(22) */
18698 { reserved_block , 0 , 0 , 32,
18699 0xfc00ffff, 0x2000ef7f, 0 , 0,
18700 0x0 }, /* POOL32Axf_5_group3~*(23) */
18701 { instruction , 0 , 0 , 32,
18702 0xfc00ffff, 0x2000f17f, &NMD::WRPGPR , 0,
18703 CP0_ }, /* WRPGPR */
18704 { pool , ERETx , 2 , 32,
18705 0xfc00ffff, 0x2000f37f, 0 , 0,
18706 0x0 }, /* ERETx */
18707 { reserved_block , 0 , 0 , 32,
18708 0xfc00ffff, 0x2000f57f, 0 , 0,
18709 0x0 }, /* POOL32Axf_5_group3~*(26) */
18710 { reserved_block , 0 , 0 , 32,
18711 0xfc00ffff, 0x2000f77f, 0 , 0,
18712 0x0 }, /* POOL32Axf_5_group3~*(27) */
18713 { reserved_block , 0 , 0 , 32,
18714 0xfc00ffff, 0x2000f97f, 0 , 0,
18715 0x0 }, /* POOL32Axf_5_group3~*(28) */
18716 { reserved_block , 0 , 0 , 32,
18717 0xfc00ffff, 0x2000fb7f, 0 , 0,
18718 0x0 }, /* POOL32Axf_5_group3~*(29) */
18719 { reserved_block , 0 , 0 , 32,
18720 0xfc00ffff, 0x2000fd7f, 0 , 0,
18721 0x0 }, /* POOL32Axf_5_group3~*(30) */
18722 { reserved_block , 0 , 0 , 32,
18723 0xfc00ffff, 0x2000ff7f, 0 , 0,
18724 0x0 }, /* POOL32Axf_5_group3~*(31) */
18728 NMD::Pool NMD::POOL32Axf_5[4] = {
18729 { pool , POOL32Axf_5_group0 , 32 , 32,
18730 0xfc00c1ff, 0x2000017f, 0 , 0,
18731 0x0 }, /* POOL32Axf_5_group0 */
18732 { pool , POOL32Axf_5_group1 , 32 , 32,
18733 0xfc00c1ff, 0x2000417f, 0 , 0,
18734 0x0 }, /* POOL32Axf_5_group1 */
18735 { reserved_block , 0 , 0 , 32,
18736 0xfc00c1ff, 0x2000817f, 0 , 0,
18737 0x0 }, /* POOL32Axf_5~*(2) */
18738 { pool , POOL32Axf_5_group3 , 32 , 32,
18739 0xfc00c1ff, 0x2000c17f, 0 , 0,
18740 0x0 }, /* POOL32Axf_5_group3 */
18744 NMD::Pool NMD::SHRA__R__QB[2] = {
18745 { instruction , 0 , 0 , 32,
18746 0xfc001fff, 0x200001ff, &NMD::SHRA_QB , 0,
18747 DSP_ }, /* SHRA.QB */
18748 { instruction , 0 , 0 , 32,
18749 0xfc001fff, 0x200011ff, &NMD::SHRA_R_QB , 0,
18750 DSP_ }, /* SHRA_R.QB */
18754 NMD::Pool NMD::POOL32Axf_7[8] = {
18755 { pool , SHRA__R__QB , 2 , 32,
18756 0xfc000fff, 0x200001ff, 0 , 0,
18757 0x0 }, /* SHRA[_R].QB */
18758 { instruction , 0 , 0 , 32,
18759 0xfc000fff, 0x200003ff, &NMD::SHRL_PH , 0,
18760 DSP_ }, /* SHRL.PH */
18761 { instruction , 0 , 0 , 32,
18762 0xfc000fff, 0x200005ff, &NMD::REPL_QB , 0,
18763 DSP_ }, /* REPL.QB */
18764 { reserved_block , 0 , 0 , 32,
18765 0xfc000fff, 0x200007ff, 0 , 0,
18766 0x0 }, /* POOL32Axf_7~*(3) */
18767 { reserved_block , 0 , 0 , 32,
18768 0xfc000fff, 0x200009ff, 0 , 0,
18769 0x0 }, /* POOL32Axf_7~*(4) */
18770 { reserved_block , 0 , 0 , 32,
18771 0xfc000fff, 0x20000bff, 0 , 0,
18772 0x0 }, /* POOL32Axf_7~*(5) */
18773 { reserved_block , 0 , 0 , 32,
18774 0xfc000fff, 0x20000dff, 0 , 0,
18775 0x0 }, /* POOL32Axf_7~*(6) */
18776 { reserved_block , 0 , 0 , 32,
18777 0xfc000fff, 0x20000fff, 0 , 0,
18778 0x0 }, /* POOL32Axf_7~*(7) */
18782 NMD::Pool NMD::POOL32Axf[8] = {
18783 { reserved_block , 0 , 0 , 32,
18784 0xfc0001ff, 0x2000003f, 0 , 0,
18785 0x0 }, /* POOL32Axf~*(0) */
18786 { pool , POOL32Axf_1 , 8 , 32,
18787 0xfc0001ff, 0x2000007f, 0 , 0,
18788 0x0 }, /* POOL32Axf_1 */
18789 { pool , POOL32Axf_2 , 4 , 32,
18790 0xfc0001ff, 0x200000bf, 0 , 0,
18791 0x0 }, /* POOL32Axf_2 */
18792 { reserved_block , 0 , 0 , 32,
18793 0xfc0001ff, 0x200000ff, 0 , 0,
18794 0x0 }, /* POOL32Axf~*(3) */
18795 { pool , POOL32Axf_4 , 128 , 32,
18796 0xfc0001ff, 0x2000013f, 0 , 0,
18797 0x0 }, /* POOL32Axf_4 */
18798 { pool , POOL32Axf_5 , 4 , 32,
18799 0xfc0001ff, 0x2000017f, 0 , 0,
18800 0x0 }, /* POOL32Axf_5 */
18801 { reserved_block , 0 , 0 , 32,
18802 0xfc0001ff, 0x200001bf, 0 , 0,
18803 0x0 }, /* POOL32Axf~*(6) */
18804 { pool , POOL32Axf_7 , 8 , 32,
18805 0xfc0001ff, 0x200001ff, 0 , 0,
18806 0x0 }, /* POOL32Axf_7 */
18810 NMD::Pool NMD::_POOL32A7[8] = {
18811 { pool , P_LSX , 2 , 32,
18812 0xfc00003f, 0x20000007, 0 , 0,
18813 0x0 }, /* P.LSX */
18814 { instruction , 0 , 0 , 32,
18815 0xfc00003f, 0x2000000f, &NMD::LSA , 0,
18816 0x0 }, /* LSA */
18817 { reserved_block , 0 , 0 , 32,
18818 0xfc00003f, 0x20000017, 0 , 0,
18819 0x0 }, /* _POOL32A7~*(2) */
18820 { instruction , 0 , 0 , 32,
18821 0xfc00003f, 0x2000001f, &NMD::EXTW , 0,
18822 0x0 }, /* EXTW */
18823 { reserved_block , 0 , 0 , 32,
18824 0xfc00003f, 0x20000027, 0 , 0,
18825 0x0 }, /* _POOL32A7~*(4) */
18826 { reserved_block , 0 , 0 , 32,
18827 0xfc00003f, 0x2000002f, 0 , 0,
18828 0x0 }, /* _POOL32A7~*(5) */
18829 { reserved_block , 0 , 0 , 32,
18830 0xfc00003f, 0x20000037, 0 , 0,
18831 0x0 }, /* _POOL32A7~*(6) */
18832 { pool , POOL32Axf , 8 , 32,
18833 0xfc00003f, 0x2000003f, 0 , 0,
18834 0x0 }, /* POOL32Axf */
18838 NMD::Pool NMD::P32A[8] = {
18839 { pool , _POOL32A0 , 128 , 32,
18840 0xfc000007, 0x20000000, 0 , 0,
18841 0x0 }, /* _POOL32A0 */
18842 { instruction , 0 , 0 , 32,
18843 0xfc000007, 0x20000001, &NMD::SPECIAL2 , 0,
18844 UDI_ }, /* SPECIAL2 */
18845 { instruction , 0 , 0 , 32,
18846 0xfc000007, 0x20000002, &NMD::COP2_1 , 0,
18847 CP2_ }, /* COP2_1 */
18848 { instruction , 0 , 0 , 32,
18849 0xfc000007, 0x20000003, &NMD::UDI , 0,
18850 UDI_ }, /* UDI */
18851 { reserved_block , 0 , 0 , 32,
18852 0xfc000007, 0x20000004, 0 , 0,
18853 0x0 }, /* P32A~*(4) */
18854 { pool , _POOL32A5 , 128 , 32,
18855 0xfc000007, 0x20000005, 0 , 0,
18856 0x0 }, /* _POOL32A5 */
18857 { reserved_block , 0 , 0 , 32,
18858 0xfc000007, 0x20000006, 0 , 0,
18859 0x0 }, /* P32A~*(6) */
18860 { pool , _POOL32A7 , 8 , 32,
18861 0xfc000007, 0x20000007, 0 , 0,
18862 0x0 }, /* _POOL32A7 */
18866 NMD::Pool NMD::P_GP_D[2] = {
18867 { instruction , 0 , 0 , 32,
18868 0xfc000007, 0x40000001, &NMD::LD_GP_ , 0,
18869 MIPS64_ }, /* LD[GP] */
18870 { instruction , 0 , 0 , 32,
18871 0xfc000007, 0x40000005, &NMD::SD_GP_ , 0,
18872 MIPS64_ }, /* SD[GP] */
18876 NMD::Pool NMD::P_GP_W[4] = {
18877 { instruction , 0 , 0 , 32,
18878 0xfc000003, 0x40000000, &NMD::ADDIU_GP_W_ , 0,
18879 0x0 }, /* ADDIU[GP.W] */
18880 { pool , P_GP_D , 2 , 32,
18881 0xfc000003, 0x40000001, 0 , 0,
18882 0x0 }, /* P.GP.D */
18883 { instruction , 0 , 0 , 32,
18884 0xfc000003, 0x40000002, &NMD::LW_GP_ , 0,
18885 0x0 }, /* LW[GP] */
18886 { instruction , 0 , 0 , 32,
18887 0xfc000003, 0x40000003, &NMD::SW_GP_ , 0,
18888 0x0 }, /* SW[GP] */
18892 NMD::Pool NMD::POOL48I[32] = {
18893 { instruction , 0 , 0 , 48,
18894 0xfc1f00000000ull, 0x600000000000ull, &NMD::LI_48_ , 0,
18895 XMMS_ }, /* LI[48] */
18896 { instruction , 0 , 0 , 48,
18897 0xfc1f00000000ull, 0x600100000000ull, &NMD::ADDIU_48_ , 0,
18898 XMMS_ }, /* ADDIU[48] */
18899 { instruction , 0 , 0 , 48,
18900 0xfc1f00000000ull, 0x600200000000ull, &NMD::ADDIU_GP48_ , 0,
18901 XMMS_ }, /* ADDIU[GP48] */
18902 { instruction , 0 , 0 , 48,
18903 0xfc1f00000000ull, 0x600300000000ull, &NMD::ADDIUPC_48_ , 0,
18904 XMMS_ }, /* ADDIUPC[48] */
18905 { reserved_block , 0 , 0 , 48,
18906 0xfc1f00000000ull, 0x600400000000ull, 0 , 0,
18907 0x0 }, /* POOL48I~*(4) */
18908 { reserved_block , 0 , 0 , 48,
18909 0xfc1f00000000ull, 0x600500000000ull, 0 , 0,
18910 0x0 }, /* POOL48I~*(5) */
18911 { reserved_block , 0 , 0 , 48,
18912 0xfc1f00000000ull, 0x600600000000ull, 0 , 0,
18913 0x0 }, /* POOL48I~*(6) */
18914 { reserved_block , 0 , 0 , 48,
18915 0xfc1f00000000ull, 0x600700000000ull, 0 , 0,
18916 0x0 }, /* POOL48I~*(7) */
18917 { reserved_block , 0 , 0 , 48,
18918 0xfc1f00000000ull, 0x600800000000ull, 0 , 0,
18919 0x0 }, /* POOL48I~*(8) */
18920 { reserved_block , 0 , 0 , 48,
18921 0xfc1f00000000ull, 0x600900000000ull, 0 , 0,
18922 0x0 }, /* POOL48I~*(9) */
18923 { reserved_block , 0 , 0 , 48,
18924 0xfc1f00000000ull, 0x600a00000000ull, 0 , 0,
18925 0x0 }, /* POOL48I~*(10) */
18926 { instruction , 0 , 0 , 48,
18927 0xfc1f00000000ull, 0x600b00000000ull, &NMD::LWPC_48_ , 0,
18928 XMMS_ }, /* LWPC[48] */
18929 { reserved_block , 0 , 0 , 48,
18930 0xfc1f00000000ull, 0x600c00000000ull, 0 , 0,
18931 0x0 }, /* POOL48I~*(12) */
18932 { reserved_block , 0 , 0 , 48,
18933 0xfc1f00000000ull, 0x600d00000000ull, 0 , 0,
18934 0x0 }, /* POOL48I~*(13) */
18935 { reserved_block , 0 , 0 , 48,
18936 0xfc1f00000000ull, 0x600e00000000ull, 0 , 0,
18937 0x0 }, /* POOL48I~*(14) */
18938 { instruction , 0 , 0 , 48,
18939 0xfc1f00000000ull, 0x600f00000000ull, &NMD::SWPC_48_ , 0,
18940 XMMS_ }, /* SWPC[48] */
18941 { reserved_block , 0 , 0 , 48,
18942 0xfc1f00000000ull, 0x601000000000ull, 0 , 0,
18943 0x0 }, /* POOL48I~*(16) */
18944 { instruction , 0 , 0 , 48,
18945 0xfc1f00000000ull, 0x601100000000ull, &NMD::DADDIU_48_ , 0,
18946 MIPS64_ }, /* DADDIU[48] */
18947 { reserved_block , 0 , 0 , 48,
18948 0xfc1f00000000ull, 0x601200000000ull, 0 , 0,
18949 0x0 }, /* POOL48I~*(18) */
18950 { reserved_block , 0 , 0 , 48,
18951 0xfc1f00000000ull, 0x601300000000ull, 0 , 0,
18952 0x0 }, /* POOL48I~*(19) */
18953 { instruction , 0 , 0 , 48,
18954 0xfc1f00000000ull, 0x601400000000ull, &NMD::DLUI_48_ , 0,
18955 MIPS64_ }, /* DLUI[48] */
18956 { reserved_block , 0 , 0 , 48,
18957 0xfc1f00000000ull, 0x601500000000ull, 0 , 0,
18958 0x0 }, /* POOL48I~*(21) */
18959 { reserved_block , 0 , 0 , 48,
18960 0xfc1f00000000ull, 0x601600000000ull, 0 , 0,
18961 0x0 }, /* POOL48I~*(22) */
18962 { reserved_block , 0 , 0 , 48,
18963 0xfc1f00000000ull, 0x601700000000ull, 0 , 0,
18964 0x0 }, /* POOL48I~*(23) */
18965 { reserved_block , 0 , 0 , 48,
18966 0xfc1f00000000ull, 0x601800000000ull, 0 , 0,
18967 0x0 }, /* POOL48I~*(24) */
18968 { reserved_block , 0 , 0 , 48,
18969 0xfc1f00000000ull, 0x601900000000ull, 0 , 0,
18970 0x0 }, /* POOL48I~*(25) */
18971 { reserved_block , 0 , 0 , 48,
18972 0xfc1f00000000ull, 0x601a00000000ull, 0 , 0,
18973 0x0 }, /* POOL48I~*(26) */
18974 { instruction , 0 , 0 , 48,
18975 0xfc1f00000000ull, 0x601b00000000ull, &NMD::LDPC_48_ , 0,
18976 MIPS64_ }, /* LDPC[48] */
18977 { reserved_block , 0 , 0 , 48,
18978 0xfc1f00000000ull, 0x601c00000000ull, 0 , 0,
18979 0x0 }, /* POOL48I~*(28) */
18980 { reserved_block , 0 , 0 , 48,
18981 0xfc1f00000000ull, 0x601d00000000ull, 0 , 0,
18982 0x0 }, /* POOL48I~*(29) */
18983 { reserved_block , 0 , 0 , 48,
18984 0xfc1f00000000ull, 0x601e00000000ull, 0 , 0,
18985 0x0 }, /* POOL48I~*(30) */
18986 { instruction , 0 , 0 , 48,
18987 0xfc1f00000000ull, 0x601f00000000ull, &NMD::SDPC_48_ , 0,
18988 MIPS64_ }, /* SDPC[48] */
18992 NMD::Pool NMD::PP_SR[4] = {
18993 { instruction , 0 , 0 , 32,
18994 0xfc10f003, 0x80003000, &NMD::SAVE_32_ , 0,
18995 0x0 }, /* SAVE[32] */
18996 { reserved_block , 0 , 0 , 32,
18997 0xfc10f003, 0x80003001, 0 , 0,
18998 0x0 }, /* PP.SR~*(1) */
18999 { instruction , 0 , 0 , 32,
19000 0xfc10f003, 0x80003002, &NMD::RESTORE_32_ , 0,
19001 0x0 }, /* RESTORE[32] */
19002 { return_instruction , 0 , 0 , 32,
19003 0xfc10f003, 0x80003003, &NMD::RESTORE_JRC_32_ , 0,
19004 0x0 }, /* RESTORE.JRC[32] */
19008 NMD::Pool NMD::P_SR_F[8] = {
19009 { instruction , 0 , 0 , 32,
19010 0xfc10f007, 0x80103000, &NMD::SAVEF , 0,
19011 CP1_ }, /* SAVEF */
19012 { instruction , 0 , 0 , 32,
19013 0xfc10f007, 0x80103001, &NMD::RESTOREF , 0,
19014 CP1_ }, /* RESTOREF */
19015 { reserved_block , 0 , 0 , 32,
19016 0xfc10f007, 0x80103002, 0 , 0,
19017 0x0 }, /* P.SR.F~*(2) */
19018 { reserved_block , 0 , 0 , 32,
19019 0xfc10f007, 0x80103003, 0 , 0,
19020 0x0 }, /* P.SR.F~*(3) */
19021 { reserved_block , 0 , 0 , 32,
19022 0xfc10f007, 0x80103004, 0 , 0,
19023 0x0 }, /* P.SR.F~*(4) */
19024 { reserved_block , 0 , 0 , 32,
19025 0xfc10f007, 0x80103005, 0 , 0,
19026 0x0 }, /* P.SR.F~*(5) */
19027 { reserved_block , 0 , 0 , 32,
19028 0xfc10f007, 0x80103006, 0 , 0,
19029 0x0 }, /* P.SR.F~*(6) */
19030 { reserved_block , 0 , 0 , 32,
19031 0xfc10f007, 0x80103007, 0 , 0,
19032 0x0 }, /* P.SR.F~*(7) */
19036 NMD::Pool NMD::P_SR[2] = {
19037 { pool , PP_SR , 4 , 32,
19038 0xfc10f000, 0x80003000, 0 , 0,
19039 0x0 }, /* PP.SR */
19040 { pool , P_SR_F , 8 , 32,
19041 0xfc10f000, 0x80103000, 0 , 0,
19042 0x0 }, /* P.SR.F */
19046 NMD::Pool NMD::P_SLL[5] = {
19047 { instruction , 0 , 0 , 32,
19048 0xffe0f1ff, 0x8000c000, &NMD::NOP_32_ , 0,
19049 0x0 }, /* NOP[32] */
19050 { instruction , 0 , 0 , 32,
19051 0xffe0f1ff, 0x8000c003, &NMD::EHB , 0,
19052 0x0 }, /* EHB */
19053 { instruction , 0 , 0 , 32,
19054 0xffe0f1ff, 0x8000c005, &NMD::PAUSE , 0,
19055 0x0 }, /* PAUSE */
19056 { instruction , 0 , 0 , 32,
19057 0xffe0f1ff, 0x8000c006, &NMD::SYNC , 0,
19058 0x0 }, /* SYNC */
19059 { instruction , 0 , 0 , 32,
19060 0xfc00f1e0, 0x8000c000, &NMD::SLL_32_ , 0,
19061 0x0 }, /* SLL[32] */
19065 NMD::Pool NMD::P_SHIFT[16] = {
19066 { pool , P_SLL , 5 , 32,
19067 0xfc00f1e0, 0x8000c000, 0 , 0,
19068 0x0 }, /* P.SLL */
19069 { reserved_block , 0 , 0 , 32,
19070 0xfc00f1e0, 0x8000c020, 0 , 0,
19071 0x0 }, /* P.SHIFT~*(1) */
19072 { instruction , 0 , 0 , 32,
19073 0xfc00f1e0, 0x8000c040, &NMD::SRL_32_ , 0,
19074 0x0 }, /* SRL[32] */
19075 { reserved_block , 0 , 0 , 32,
19076 0xfc00f1e0, 0x8000c060, 0 , 0,
19077 0x0 }, /* P.SHIFT~*(3) */
19078 { instruction , 0 , 0 , 32,
19079 0xfc00f1e0, 0x8000c080, &NMD::SRA , 0,
19080 0x0 }, /* SRA */
19081 { reserved_block , 0 , 0 , 32,
19082 0xfc00f1e0, 0x8000c0a0, 0 , 0,
19083 0x0 }, /* P.SHIFT~*(5) */
19084 { instruction , 0 , 0 , 32,
19085 0xfc00f1e0, 0x8000c0c0, &NMD::ROTR , 0,
19086 0x0 }, /* ROTR */
19087 { reserved_block , 0 , 0 , 32,
19088 0xfc00f1e0, 0x8000c0e0, 0 , 0,
19089 0x0 }, /* P.SHIFT~*(7) */
19090 { instruction , 0 , 0 , 32,
19091 0xfc00f1e0, 0x8000c100, &NMD::DSLL , 0,
19092 MIPS64_ }, /* DSLL */
19093 { instruction , 0 , 0 , 32,
19094 0xfc00f1e0, 0x8000c120, &NMD::DSLL32 , 0,
19095 MIPS64_ }, /* DSLL32 */
19096 { instruction , 0 , 0 , 32,
19097 0xfc00f1e0, 0x8000c140, &NMD::DSRL , 0,
19098 MIPS64_ }, /* DSRL */
19099 { instruction , 0 , 0 , 32,
19100 0xfc00f1e0, 0x8000c160, &NMD::DSRL32 , 0,
19101 MIPS64_ }, /* DSRL32 */
19102 { instruction , 0 , 0 , 32,
19103 0xfc00f1e0, 0x8000c180, &NMD::DSRA , 0,
19104 MIPS64_ }, /* DSRA */
19105 { instruction , 0 , 0 , 32,
19106 0xfc00f1e0, 0x8000c1a0, &NMD::DSRA32 , 0,
19107 MIPS64_ }, /* DSRA32 */
19108 { instruction , 0 , 0 , 32,
19109 0xfc00f1e0, 0x8000c1c0, &NMD::DROTR , 0,
19110 MIPS64_ }, /* DROTR */
19111 { instruction , 0 , 0 , 32,
19112 0xfc00f1e0, 0x8000c1e0, &NMD::DROTR32 , 0,
19113 MIPS64_ }, /* DROTR32 */
19117 NMD::Pool NMD::P_ROTX[4] = {
19118 { instruction , 0 , 0 , 32,
19119 0xfc00f820, 0x8000d000, &NMD::ROTX , 0,
19120 XMMS_ }, /* ROTX */
19121 { reserved_block , 0 , 0 , 32,
19122 0xfc00f820, 0x8000d020, 0 , 0,
19123 0x0 }, /* P.ROTX~*(1) */
19124 { reserved_block , 0 , 0 , 32,
19125 0xfc00f820, 0x8000d800, 0 , 0,
19126 0x0 }, /* P.ROTX~*(2) */
19127 { reserved_block , 0 , 0 , 32,
19128 0xfc00f820, 0x8000d820, 0 , 0,
19129 0x0 }, /* P.ROTX~*(3) */
19133 NMD::Pool NMD::P_INS[4] = {
19134 { instruction , 0 , 0 , 32,
19135 0xfc00f820, 0x8000e000, &NMD::INS , 0,
19136 XMMS_ }, /* INS */
19137 { instruction , 0 , 0 , 32,
19138 0xfc00f820, 0x8000e020, &NMD::DINSU , 0,
19139 MIPS64_ }, /* DINSU */
19140 { instruction , 0 , 0 , 32,
19141 0xfc00f820, 0x8000e800, &NMD::DINSM , 0,
19142 MIPS64_ }, /* DINSM */
19143 { instruction , 0 , 0 , 32,
19144 0xfc00f820, 0x8000e820, &NMD::DINS , 0,
19145 MIPS64_ }, /* DINS */
19149 NMD::Pool NMD::P_EXT[4] = {
19150 { instruction , 0 , 0 , 32,
19151 0xfc00f820, 0x8000f000, &NMD::EXT , 0,
19152 XMMS_ }, /* EXT */
19153 { instruction , 0 , 0 , 32,
19154 0xfc00f820, 0x8000f020, &NMD::DEXTU , 0,
19155 MIPS64_ }, /* DEXTU */
19156 { instruction , 0 , 0 , 32,
19157 0xfc00f820, 0x8000f800, &NMD::DEXTM , 0,
19158 MIPS64_ }, /* DEXTM */
19159 { instruction , 0 , 0 , 32,
19160 0xfc00f820, 0x8000f820, &NMD::DEXT , 0,
19161 MIPS64_ }, /* DEXT */
19165 NMD::Pool NMD::P_U12[16] = {
19166 { instruction , 0 , 0 , 32,
19167 0xfc00f000, 0x80000000, &NMD::ORI , 0,
19168 0x0 }, /* ORI */
19169 { instruction , 0 , 0 , 32,
19170 0xfc00f000, 0x80001000, &NMD::XORI , 0,
19171 0x0 }, /* XORI */
19172 { instruction , 0 , 0 , 32,
19173 0xfc00f000, 0x80002000, &NMD::ANDI_32_ , 0,
19174 0x0 }, /* ANDI[32] */
19175 { pool , P_SR , 2 , 32,
19176 0xfc00f000, 0x80003000, 0 , 0,
19177 0x0 }, /* P.SR */
19178 { instruction , 0 , 0 , 32,
19179 0xfc00f000, 0x80004000, &NMD::SLTI , 0,
19180 0x0 }, /* SLTI */
19181 { instruction , 0 , 0 , 32,
19182 0xfc00f000, 0x80005000, &NMD::SLTIU , 0,
19183 0x0 }, /* SLTIU */
19184 { instruction , 0 , 0 , 32,
19185 0xfc00f000, 0x80006000, &NMD::SEQI , 0,
19186 0x0 }, /* SEQI */
19187 { reserved_block , 0 , 0 , 32,
19188 0xfc00f000, 0x80007000, 0 , 0,
19189 0x0 }, /* P.U12~*(7) */
19190 { instruction , 0 , 0 , 32,
19191 0xfc00f000, 0x80008000, &NMD::ADDIU_NEG_ , 0,
19192 0x0 }, /* ADDIU[NEG] */
19193 { instruction , 0 , 0 , 32,
19194 0xfc00f000, 0x80009000, &NMD::DADDIU_U12_ , 0,
19195 MIPS64_ }, /* DADDIU[U12] */
19196 { instruction , 0 , 0 , 32,
19197 0xfc00f000, 0x8000a000, &NMD::DADDIU_NEG_ , 0,
19198 MIPS64_ }, /* DADDIU[NEG] */
19199 { instruction , 0 , 0 , 32,
19200 0xfc00f000, 0x8000b000, &NMD::DROTX , 0,
19201 MIPS64_ }, /* DROTX */
19202 { pool , P_SHIFT , 16 , 32,
19203 0xfc00f000, 0x8000c000, 0 , 0,
19204 0x0 }, /* P.SHIFT */
19205 { pool , P_ROTX , 4 , 32,
19206 0xfc00f000, 0x8000d000, 0 , 0,
19207 0x0 }, /* P.ROTX */
19208 { pool , P_INS , 4 , 32,
19209 0xfc00f000, 0x8000e000, 0 , 0,
19210 0x0 }, /* P.INS */
19211 { pool , P_EXT , 4 , 32,
19212 0xfc00f000, 0x8000f000, 0 , 0,
19213 0x0 }, /* P.EXT */
19217 NMD::Pool NMD::RINT_fmt[2] = {
19218 { instruction , 0 , 0 , 32,
19219 0xfc0003ff, 0xa0000020, &NMD::RINT_S , 0,
19220 CP1_ }, /* RINT.S */
19221 { instruction , 0 , 0 , 32,
19222 0xfc0003ff, 0xa0000220, &NMD::RINT_D , 0,
19223 CP1_ }, /* RINT.D */
19227 NMD::Pool NMD::ADD_fmt0[2] = {
19228 { instruction , 0 , 0 , 32,
19229 0xfc0003ff, 0xa0000030, &NMD::ADD_S , 0,
19230 CP1_ }, /* ADD.S */
19231 { reserved_block , 0 , 0 , 32,
19232 0xfc0003ff, 0xa0000230, 0 , 0,
19233 CP1_ }, /* ADD.fmt0~*(1) */
19237 NMD::Pool NMD::SELEQZ_fmt[2] = {
19238 { instruction , 0 , 0 , 32,
19239 0xfc0003ff, 0xa0000038, &NMD::SELEQZ_S , 0,
19240 CP1_ }, /* SELEQZ.S */
19241 { instruction , 0 , 0 , 32,
19242 0xfc0003ff, 0xa0000238, &NMD::SELEQZ_D , 0,
19243 CP1_ }, /* SELEQZ.D */
19247 NMD::Pool NMD::CLASS_fmt[2] = {
19248 { instruction , 0 , 0 , 32,
19249 0xfc0003ff, 0xa0000060, &NMD::CLASS_S , 0,
19250 CP1_ }, /* CLASS.S */
19251 { instruction , 0 , 0 , 32,
19252 0xfc0003ff, 0xa0000260, &NMD::CLASS_D , 0,
19253 CP1_ }, /* CLASS.D */
19257 NMD::Pool NMD::SUB_fmt0[2] = {
19258 { instruction , 0 , 0 , 32,
19259 0xfc0003ff, 0xa0000070, &NMD::SUB_S , 0,
19260 CP1_ }, /* SUB.S */
19261 { reserved_block , 0 , 0 , 32,
19262 0xfc0003ff, 0xa0000270, 0 , 0,
19263 CP1_ }, /* SUB.fmt0~*(1) */
19267 NMD::Pool NMD::SELNEZ_fmt[2] = {
19268 { instruction , 0 , 0 , 32,
19269 0xfc0003ff, 0xa0000078, &NMD::SELNEZ_S , 0,
19270 CP1_ }, /* SELNEZ.S */
19271 { instruction , 0 , 0 , 32,
19272 0xfc0003ff, 0xa0000278, &NMD::SELNEZ_D , 0,
19273 CP1_ }, /* SELNEZ.D */
19277 NMD::Pool NMD::MUL_fmt0[2] = {
19278 { instruction , 0 , 0 , 32,
19279 0xfc0003ff, 0xa00000b0, &NMD::MUL_S , 0,
19280 CP1_ }, /* MUL.S */
19281 { reserved_block , 0 , 0 , 32,
19282 0xfc0003ff, 0xa00002b0, 0 , 0,
19283 CP1_ }, /* MUL.fmt0~*(1) */
19287 NMD::Pool NMD::SEL_fmt[2] = {
19288 { instruction , 0 , 0 , 32,
19289 0xfc0003ff, 0xa00000b8, &NMD::SEL_S , 0,
19290 CP1_ }, /* SEL.S */
19291 { instruction , 0 , 0 , 32,
19292 0xfc0003ff, 0xa00002b8, &NMD::SEL_D , 0,
19293 CP1_ }, /* SEL.D */
19297 NMD::Pool NMD::DIV_fmt0[2] = {
19298 { instruction , 0 , 0 , 32,
19299 0xfc0003ff, 0xa00000f0, &NMD::DIV_S , 0,
19300 CP1_ }, /* DIV.S */
19301 { reserved_block , 0 , 0 , 32,
19302 0xfc0003ff, 0xa00002f0, 0 , 0,
19303 CP1_ }, /* DIV.fmt0~*(1) */
19307 NMD::Pool NMD::ADD_fmt1[2] = {
19308 { instruction , 0 , 0 , 32,
19309 0xfc0003ff, 0xa0000130, &NMD::ADD_D , 0,
19310 CP1_ }, /* ADD.D */
19311 { reserved_block , 0 , 0 , 32,
19312 0xfc0003ff, 0xa0000330, 0 , 0,
19313 CP1_ }, /* ADD.fmt1~*(1) */
19317 NMD::Pool NMD::SUB_fmt1[2] = {
19318 { instruction , 0 , 0 , 32,
19319 0xfc0003ff, 0xa0000170, &NMD::SUB_D , 0,
19320 CP1_ }, /* SUB.D */
19321 { reserved_block , 0 , 0 , 32,
19322 0xfc0003ff, 0xa0000370, 0 , 0,
19323 CP1_ }, /* SUB.fmt1~*(1) */
19327 NMD::Pool NMD::MUL_fmt1[2] = {
19328 { instruction , 0 , 0 , 32,
19329 0xfc0003ff, 0xa00001b0, &NMD::MUL_D , 0,
19330 CP1_ }, /* MUL.D */
19331 { reserved_block , 0 , 0 , 32,
19332 0xfc0003ff, 0xa00003b0, 0 , 0,
19333 CP1_ }, /* MUL.fmt1~*(1) */
19337 NMD::Pool NMD::MADDF_fmt[2] = {
19338 { instruction , 0 , 0 , 32,
19339 0xfc0003ff, 0xa00001b8, &NMD::MADDF_S , 0,
19340 CP1_ }, /* MADDF.S */
19341 { instruction , 0 , 0 , 32,
19342 0xfc0003ff, 0xa00003b8, &NMD::MADDF_D , 0,
19343 CP1_ }, /* MADDF.D */
19347 NMD::Pool NMD::DIV_fmt1[2] = {
19348 { instruction , 0 , 0 , 32,
19349 0xfc0003ff, 0xa00001f0, &NMD::DIV_D , 0,
19350 CP1_ }, /* DIV.D */
19351 { reserved_block , 0 , 0 , 32,
19352 0xfc0003ff, 0xa00003f0, 0 , 0,
19353 CP1_ }, /* DIV.fmt1~*(1) */
19357 NMD::Pool NMD::MSUBF_fmt[2] = {
19358 { instruction , 0 , 0 , 32,
19359 0xfc0003ff, 0xa00001f8, &NMD::MSUBF_S , 0,
19360 CP1_ }, /* MSUBF.S */
19361 { instruction , 0 , 0 , 32,
19362 0xfc0003ff, 0xa00003f8, &NMD::MSUBF_D , 0,
19363 CP1_ }, /* MSUBF.D */
19367 NMD::Pool NMD::POOL32F_0[64] = {
19368 { reserved_block , 0 , 0 , 32,
19369 0xfc0001ff, 0xa0000000, 0 , 0,
19370 CP1_ }, /* POOL32F_0~*(0) */
19371 { reserved_block , 0 , 0 , 32,
19372 0xfc0001ff, 0xa0000008, 0 , 0,
19373 CP1_ }, /* POOL32F_0~*(1) */
19374 { reserved_block , 0 , 0 , 32,
19375 0xfc0001ff, 0xa0000010, 0 , 0,
19376 CP1_ }, /* POOL32F_0~*(2) */
19377 { reserved_block , 0 , 0 , 32,
19378 0xfc0001ff, 0xa0000018, 0 , 0,
19379 CP1_ }, /* POOL32F_0~*(3) */
19380 { pool , RINT_fmt , 2 , 32,
19381 0xfc0001ff, 0xa0000020, 0 , 0,
19382 CP1_ }, /* RINT.fmt */
19383 { reserved_block , 0 , 0 , 32,
19384 0xfc0001ff, 0xa0000028, 0 , 0,
19385 CP1_ }, /* POOL32F_0~*(5) */
19386 { pool , ADD_fmt0 , 2 , 32,
19387 0xfc0001ff, 0xa0000030, 0 , 0,
19388 CP1_ }, /* ADD.fmt0 */
19389 { pool , SELEQZ_fmt , 2 , 32,
19390 0xfc0001ff, 0xa0000038, 0 , 0,
19391 CP1_ }, /* SELEQZ.fmt */
19392 { reserved_block , 0 , 0 , 32,
19393 0xfc0001ff, 0xa0000040, 0 , 0,
19394 CP1_ }, /* POOL32F_0~*(8) */
19395 { reserved_block , 0 , 0 , 32,
19396 0xfc0001ff, 0xa0000048, 0 , 0,
19397 CP1_ }, /* POOL32F_0~*(9) */
19398 { reserved_block , 0 , 0 , 32,
19399 0xfc0001ff, 0xa0000050, 0 , 0,
19400 CP1_ }, /* POOL32F_0~*(10) */
19401 { reserved_block , 0 , 0 , 32,
19402 0xfc0001ff, 0xa0000058, 0 , 0,
19403 CP1_ }, /* POOL32F_0~*(11) */
19404 { pool , CLASS_fmt , 2 , 32,
19405 0xfc0001ff, 0xa0000060, 0 , 0,
19406 CP1_ }, /* CLASS.fmt */
19407 { reserved_block , 0 , 0 , 32,
19408 0xfc0001ff, 0xa0000068, 0 , 0,
19409 CP1_ }, /* POOL32F_0~*(13) */
19410 { pool , SUB_fmt0 , 2 , 32,
19411 0xfc0001ff, 0xa0000070, 0 , 0,
19412 CP1_ }, /* SUB.fmt0 */
19413 { pool , SELNEZ_fmt , 2 , 32,
19414 0xfc0001ff, 0xa0000078, 0 , 0,
19415 CP1_ }, /* SELNEZ.fmt */
19416 { reserved_block , 0 , 0 , 32,
19417 0xfc0001ff, 0xa0000080, 0 , 0,
19418 CP1_ }, /* POOL32F_0~*(16) */
19419 { reserved_block , 0 , 0 , 32,
19420 0xfc0001ff, 0xa0000088, 0 , 0,
19421 CP1_ }, /* POOL32F_0~*(17) */
19422 { reserved_block , 0 , 0 , 32,
19423 0xfc0001ff, 0xa0000090, 0 , 0,
19424 CP1_ }, /* POOL32F_0~*(18) */
19425 { reserved_block , 0 , 0 , 32,
19426 0xfc0001ff, 0xa0000098, 0 , 0,
19427 CP1_ }, /* POOL32F_0~*(19) */
19428 { reserved_block , 0 , 0 , 32,
19429 0xfc0001ff, 0xa00000a0, 0 , 0,
19430 CP1_ }, /* POOL32F_0~*(20) */
19431 { reserved_block , 0 , 0 , 32,
19432 0xfc0001ff, 0xa00000a8, 0 , 0,
19433 CP1_ }, /* POOL32F_0~*(21) */
19434 { pool , MUL_fmt0 , 2 , 32,
19435 0xfc0001ff, 0xa00000b0, 0 , 0,
19436 CP1_ }, /* MUL.fmt0 */
19437 { pool , SEL_fmt , 2 , 32,
19438 0xfc0001ff, 0xa00000b8, 0 , 0,
19439 CP1_ }, /* SEL.fmt */
19440 { reserved_block , 0 , 0 , 32,
19441 0xfc0001ff, 0xa00000c0, 0 , 0,
19442 CP1_ }, /* POOL32F_0~*(24) */
19443 { reserved_block , 0 , 0 , 32,
19444 0xfc0001ff, 0xa00000c8, 0 , 0,
19445 CP1_ }, /* POOL32F_0~*(25) */
19446 { reserved_block , 0 , 0 , 32,
19447 0xfc0001ff, 0xa00000d0, 0 , 0,
19448 CP1_ }, /* POOL32F_0~*(26) */
19449 { reserved_block , 0 , 0 , 32,
19450 0xfc0001ff, 0xa00000d8, 0 , 0,
19451 CP1_ }, /* POOL32F_0~*(27) */
19452 { reserved_block , 0 , 0 , 32,
19453 0xfc0001ff, 0xa00000e0, 0 , 0,
19454 CP1_ }, /* POOL32F_0~*(28) */
19455 { reserved_block , 0 , 0 , 32,
19456 0xfc0001ff, 0xa00000e8, 0 , 0,
19457 CP1_ }, /* POOL32F_0~*(29) */
19458 { pool , DIV_fmt0 , 2 , 32,
19459 0xfc0001ff, 0xa00000f0, 0 , 0,
19460 CP1_ }, /* DIV.fmt0 */
19461 { reserved_block , 0 , 0 , 32,
19462 0xfc0001ff, 0xa00000f8, 0 , 0,
19463 CP1_ }, /* POOL32F_0~*(31) */
19464 { reserved_block , 0 , 0 , 32,
19465 0xfc0001ff, 0xa0000100, 0 , 0,
19466 CP1_ }, /* POOL32F_0~*(32) */
19467 { reserved_block , 0 , 0 , 32,
19468 0xfc0001ff, 0xa0000108, 0 , 0,
19469 CP1_ }, /* POOL32F_0~*(33) */
19470 { reserved_block , 0 , 0 , 32,
19471 0xfc0001ff, 0xa0000110, 0 , 0,
19472 CP1_ }, /* POOL32F_0~*(34) */
19473 { reserved_block , 0 , 0 , 32,
19474 0xfc0001ff, 0xa0000118, 0 , 0,
19475 CP1_ }, /* POOL32F_0~*(35) */
19476 { reserved_block , 0 , 0 , 32,
19477 0xfc0001ff, 0xa0000120, 0 , 0,
19478 CP1_ }, /* POOL32F_0~*(36) */
19479 { reserved_block , 0 , 0 , 32,
19480 0xfc0001ff, 0xa0000128, 0 , 0,
19481 CP1_ }, /* POOL32F_0~*(37) */
19482 { pool , ADD_fmt1 , 2 , 32,
19483 0xfc0001ff, 0xa0000130, 0 , 0,
19484 CP1_ }, /* ADD.fmt1 */
19485 { reserved_block , 0 , 0 , 32,
19486 0xfc0001ff, 0xa0000138, 0 , 0,
19487 CP1_ }, /* POOL32F_0~*(39) */
19488 { reserved_block , 0 , 0 , 32,
19489 0xfc0001ff, 0xa0000140, 0 , 0,
19490 CP1_ }, /* POOL32F_0~*(40) */
19491 { reserved_block , 0 , 0 , 32,
19492 0xfc0001ff, 0xa0000148, 0 , 0,
19493 CP1_ }, /* POOL32F_0~*(41) */
19494 { reserved_block , 0 , 0 , 32,
19495 0xfc0001ff, 0xa0000150, 0 , 0,
19496 CP1_ }, /* POOL32F_0~*(42) */
19497 { reserved_block , 0 , 0 , 32,
19498 0xfc0001ff, 0xa0000158, 0 , 0,
19499 CP1_ }, /* POOL32F_0~*(43) */
19500 { reserved_block , 0 , 0 , 32,
19501 0xfc0001ff, 0xa0000160, 0 , 0,
19502 CP1_ }, /* POOL32F_0~*(44) */
19503 { reserved_block , 0 , 0 , 32,
19504 0xfc0001ff, 0xa0000168, 0 , 0,
19505 CP1_ }, /* POOL32F_0~*(45) */
19506 { pool , SUB_fmt1 , 2 , 32,
19507 0xfc0001ff, 0xa0000170, 0 , 0,
19508 CP1_ }, /* SUB.fmt1 */
19509 { reserved_block , 0 , 0 , 32,
19510 0xfc0001ff, 0xa0000178, 0 , 0,
19511 CP1_ }, /* POOL32F_0~*(47) */
19512 { reserved_block , 0 , 0 , 32,
19513 0xfc0001ff, 0xa0000180, 0 , 0,
19514 CP1_ }, /* POOL32F_0~*(48) */
19515 { reserved_block , 0 , 0 , 32,
19516 0xfc0001ff, 0xa0000188, 0 , 0,
19517 CP1_ }, /* POOL32F_0~*(49) */
19518 { reserved_block , 0 , 0 , 32,
19519 0xfc0001ff, 0xa0000190, 0 , 0,
19520 CP1_ }, /* POOL32F_0~*(50) */
19521 { reserved_block , 0 , 0 , 32,
19522 0xfc0001ff, 0xa0000198, 0 , 0,
19523 CP1_ }, /* POOL32F_0~*(51) */
19524 { reserved_block , 0 , 0 , 32,
19525 0xfc0001ff, 0xa00001a0, 0 , 0,
19526 CP1_ }, /* POOL32F_0~*(52) */
19527 { reserved_block , 0 , 0 , 32,
19528 0xfc0001ff, 0xa00001a8, 0 , 0,
19529 CP1_ }, /* POOL32F_0~*(53) */
19530 { pool , MUL_fmt1 , 2 , 32,
19531 0xfc0001ff, 0xa00001b0, 0 , 0,
19532 CP1_ }, /* MUL.fmt1 */
19533 { pool , MADDF_fmt , 2 , 32,
19534 0xfc0001ff, 0xa00001b8, 0 , 0,
19535 CP1_ }, /* MADDF.fmt */
19536 { reserved_block , 0 , 0 , 32,
19537 0xfc0001ff, 0xa00001c0, 0 , 0,
19538 CP1_ }, /* POOL32F_0~*(56) */
19539 { reserved_block , 0 , 0 , 32,
19540 0xfc0001ff, 0xa00001c8, 0 , 0,
19541 CP1_ }, /* POOL32F_0~*(57) */
19542 { reserved_block , 0 , 0 , 32,
19543 0xfc0001ff, 0xa00001d0, 0 , 0,
19544 CP1_ }, /* POOL32F_0~*(58) */
19545 { reserved_block , 0 , 0 , 32,
19546 0xfc0001ff, 0xa00001d8, 0 , 0,
19547 CP1_ }, /* POOL32F_0~*(59) */
19548 { reserved_block , 0 , 0 , 32,
19549 0xfc0001ff, 0xa00001e0, 0 , 0,
19550 CP1_ }, /* POOL32F_0~*(60) */
19551 { reserved_block , 0 , 0 , 32,
19552 0xfc0001ff, 0xa00001e8, 0 , 0,
19553 CP1_ }, /* POOL32F_0~*(61) */
19554 { pool , DIV_fmt1 , 2 , 32,
19555 0xfc0001ff, 0xa00001f0, 0 , 0,
19556 CP1_ }, /* DIV.fmt1 */
19557 { pool , MSUBF_fmt , 2 , 32,
19558 0xfc0001ff, 0xa00001f8, 0 , 0,
19559 CP1_ }, /* MSUBF.fmt */
19563 NMD::Pool NMD::MIN_fmt[2] = {
19564 { instruction , 0 , 0 , 32,
19565 0xfc00023f, 0xa0000003, &NMD::MIN_S , 0,
19566 CP1_ }, /* MIN.S */
19567 { instruction , 0 , 0 , 32,
19568 0xfc00023f, 0xa0000203, &NMD::MIN_D , 0,
19569 CP1_ }, /* MIN.D */
19573 NMD::Pool NMD::MAX_fmt[2] = {
19574 { instruction , 0 , 0 , 32,
19575 0xfc00023f, 0xa000000b, &NMD::MAX_S , 0,
19576 CP1_ }, /* MAX.S */
19577 { instruction , 0 , 0 , 32,
19578 0xfc00023f, 0xa000020b, &NMD::MAX_D , 0,
19579 CP1_ }, /* MAX.D */
19583 NMD::Pool NMD::MINA_fmt[2] = {
19584 { instruction , 0 , 0 , 32,
19585 0xfc00023f, 0xa0000023, &NMD::MINA_S , 0,
19586 CP1_ }, /* MINA.S */
19587 { instruction , 0 , 0 , 32,
19588 0xfc00023f, 0xa0000223, &NMD::MINA_D , 0,
19589 CP1_ }, /* MINA.D */
19593 NMD::Pool NMD::MAXA_fmt[2] = {
19594 { instruction , 0 , 0 , 32,
19595 0xfc00023f, 0xa000002b, &NMD::MAXA_S , 0,
19596 CP1_ }, /* MAXA.S */
19597 { instruction , 0 , 0 , 32,
19598 0xfc00023f, 0xa000022b, &NMD::MAXA_D , 0,
19599 CP1_ }, /* MAXA.D */
19603 NMD::Pool NMD::CVT_L_fmt[2] = {
19604 { instruction , 0 , 0 , 32,
19605 0xfc007fff, 0xa000013b, &NMD::CVT_L_S , 0,
19606 CP1_ }, /* CVT.L.S */
19607 { instruction , 0 , 0 , 32,
19608 0xfc007fff, 0xa000413b, &NMD::CVT_L_D , 0,
19609 CP1_ }, /* CVT.L.D */
19613 NMD::Pool NMD::RSQRT_fmt[2] = {
19614 { instruction , 0 , 0 , 32,
19615 0xfc007fff, 0xa000023b, &NMD::RSQRT_S , 0,
19616 CP1_ }, /* RSQRT.S */
19617 { instruction , 0 , 0 , 32,
19618 0xfc007fff, 0xa000423b, &NMD::RSQRT_D , 0,
19619 CP1_ }, /* RSQRT.D */
19623 NMD::Pool NMD::FLOOR_L_fmt[2] = {
19624 { instruction , 0 , 0 , 32,
19625 0xfc007fff, 0xa000033b, &NMD::FLOOR_L_S , 0,
19626 CP1_ }, /* FLOOR.L.S */
19627 { instruction , 0 , 0 , 32,
19628 0xfc007fff, 0xa000433b, &NMD::FLOOR_L_D , 0,
19629 CP1_ }, /* FLOOR.L.D */
19633 NMD::Pool NMD::CVT_W_fmt[2] = {
19634 { instruction , 0 , 0 , 32,
19635 0xfc007fff, 0xa000093b, &NMD::CVT_W_S , 0,
19636 CP1_ }, /* CVT.W.S */
19637 { instruction , 0 , 0 , 32,
19638 0xfc007fff, 0xa000493b, &NMD::CVT_W_D , 0,
19639 CP1_ }, /* CVT.W.D */
19643 NMD::Pool NMD::SQRT_fmt[2] = {
19644 { instruction , 0 , 0 , 32,
19645 0xfc007fff, 0xa0000a3b, &NMD::SQRT_S , 0,
19646 CP1_ }, /* SQRT.S */
19647 { instruction , 0 , 0 , 32,
19648 0xfc007fff, 0xa0004a3b, &NMD::SQRT_D , 0,
19649 CP1_ }, /* SQRT.D */
19653 NMD::Pool NMD::FLOOR_W_fmt[2] = {
19654 { instruction , 0 , 0 , 32,
19655 0xfc007fff, 0xa0000b3b, &NMD::FLOOR_W_S , 0,
19656 CP1_ }, /* FLOOR.W.S */
19657 { instruction , 0 , 0 , 32,
19658 0xfc007fff, 0xa0004b3b, &NMD::FLOOR_W_D , 0,
19659 CP1_ }, /* FLOOR.W.D */
19663 NMD::Pool NMD::RECIP_fmt[2] = {
19664 { instruction , 0 , 0 , 32,
19665 0xfc007fff, 0xa000123b, &NMD::RECIP_S , 0,
19666 CP1_ }, /* RECIP.S */
19667 { instruction , 0 , 0 , 32,
19668 0xfc007fff, 0xa000523b, &NMD::RECIP_D , 0,
19669 CP1_ }, /* RECIP.D */
19673 NMD::Pool NMD::CEIL_L_fmt[2] = {
19674 { instruction , 0 , 0 , 32,
19675 0xfc007fff, 0xa000133b, &NMD::CEIL_L_S , 0,
19676 CP1_ }, /* CEIL.L.S */
19677 { instruction , 0 , 0 , 32,
19678 0xfc007fff, 0xa000533b, &NMD::CEIL_L_D , 0,
19679 CP1_ }, /* CEIL.L.D */
19683 NMD::Pool NMD::CEIL_W_fmt[2] = {
19684 { instruction , 0 , 0 , 32,
19685 0xfc007fff, 0xa0001b3b, &NMD::CEIL_W_S , 0,
19686 CP1_ }, /* CEIL.W.S */
19687 { instruction , 0 , 0 , 32,
19688 0xfc007fff, 0xa0005b3b, &NMD::CEIL_W_D , 0,
19689 CP1_ }, /* CEIL.W.D */
19693 NMD::Pool NMD::TRUNC_L_fmt[2] = {
19694 { instruction , 0 , 0 , 32,
19695 0xfc007fff, 0xa000233b, &NMD::TRUNC_L_S , 0,
19696 CP1_ }, /* TRUNC.L.S */
19697 { instruction , 0 , 0 , 32,
19698 0xfc007fff, 0xa000633b, &NMD::TRUNC_L_D , 0,
19699 CP1_ }, /* TRUNC.L.D */
19703 NMD::Pool NMD::TRUNC_W_fmt[2] = {
19704 { instruction , 0 , 0 , 32,
19705 0xfc007fff, 0xa0002b3b, &NMD::TRUNC_W_S , 0,
19706 CP1_ }, /* TRUNC.W.S */
19707 { instruction , 0 , 0 , 32,
19708 0xfc007fff, 0xa0006b3b, &NMD::TRUNC_W_D , 0,
19709 CP1_ }, /* TRUNC.W.D */
19713 NMD::Pool NMD::ROUND_L_fmt[2] = {
19714 { instruction , 0 , 0 , 32,
19715 0xfc007fff, 0xa000333b, &NMD::ROUND_L_S , 0,
19716 CP1_ }, /* ROUND.L.S */
19717 { instruction , 0 , 0 , 32,
19718 0xfc007fff, 0xa000733b, &NMD::ROUND_L_D , 0,
19719 CP1_ }, /* ROUND.L.D */
19723 NMD::Pool NMD::ROUND_W_fmt[2] = {
19724 { instruction , 0 , 0 , 32,
19725 0xfc007fff, 0xa0003b3b, &NMD::ROUND_W_S , 0,
19726 CP1_ }, /* ROUND.W.S */
19727 { instruction , 0 , 0 , 32,
19728 0xfc007fff, 0xa0007b3b, &NMD::ROUND_W_D , 0,
19729 CP1_ }, /* ROUND.W.D */
19733 NMD::Pool NMD::POOL32Fxf_0[64] = {
19734 { reserved_block , 0 , 0 , 32,
19735 0xfc003fff, 0xa000003b, 0 , 0,
19736 CP1_ }, /* POOL32Fxf_0~*(0) */
19737 { pool , CVT_L_fmt , 2 , 32,
19738 0xfc003fff, 0xa000013b, 0 , 0,
19739 CP1_ }, /* CVT.L.fmt */
19740 { pool , RSQRT_fmt , 2 , 32,
19741 0xfc003fff, 0xa000023b, 0 , 0,
19742 CP1_ }, /* RSQRT.fmt */
19743 { pool , FLOOR_L_fmt , 2 , 32,
19744 0xfc003fff, 0xa000033b, 0 , 0,
19745 CP1_ }, /* FLOOR.L.fmt */
19746 { reserved_block , 0 , 0 , 32,
19747 0xfc003fff, 0xa000043b, 0 , 0,
19748 CP1_ }, /* POOL32Fxf_0~*(4) */
19749 { reserved_block , 0 , 0 , 32,
19750 0xfc003fff, 0xa000053b, 0 , 0,
19751 CP1_ }, /* POOL32Fxf_0~*(5) */
19752 { reserved_block , 0 , 0 , 32,
19753 0xfc003fff, 0xa000063b, 0 , 0,
19754 CP1_ }, /* POOL32Fxf_0~*(6) */
19755 { reserved_block , 0 , 0 , 32,
19756 0xfc003fff, 0xa000073b, 0 , 0,
19757 CP1_ }, /* POOL32Fxf_0~*(7) */
19758 { reserved_block , 0 , 0 , 32,
19759 0xfc003fff, 0xa000083b, 0 , 0,
19760 CP1_ }, /* POOL32Fxf_0~*(8) */
19761 { pool , CVT_W_fmt , 2 , 32,
19762 0xfc003fff, 0xa000093b, 0 , 0,
19763 CP1_ }, /* CVT.W.fmt */
19764 { pool , SQRT_fmt , 2 , 32,
19765 0xfc003fff, 0xa0000a3b, 0 , 0,
19766 CP1_ }, /* SQRT.fmt */
19767 { pool , FLOOR_W_fmt , 2 , 32,
19768 0xfc003fff, 0xa0000b3b, 0 , 0,
19769 CP1_ }, /* FLOOR.W.fmt */
19770 { reserved_block , 0 , 0 , 32,
19771 0xfc003fff, 0xa0000c3b, 0 , 0,
19772 CP1_ }, /* POOL32Fxf_0~*(12) */
19773 { reserved_block , 0 , 0 , 32,
19774 0xfc003fff, 0xa0000d3b, 0 , 0,
19775 CP1_ }, /* POOL32Fxf_0~*(13) */
19776 { reserved_block , 0 , 0 , 32,
19777 0xfc003fff, 0xa0000e3b, 0 , 0,
19778 CP1_ }, /* POOL32Fxf_0~*(14) */
19779 { reserved_block , 0 , 0 , 32,
19780 0xfc003fff, 0xa0000f3b, 0 , 0,
19781 CP1_ }, /* POOL32Fxf_0~*(15) */
19782 { instruction , 0 , 0 , 32,
19783 0xfc003fff, 0xa000103b, &NMD::CFC1 , 0,
19784 CP1_ }, /* CFC1 */
19785 { reserved_block , 0 , 0 , 32,
19786 0xfc003fff, 0xa000113b, 0 , 0,
19787 CP1_ }, /* POOL32Fxf_0~*(17) */
19788 { pool , RECIP_fmt , 2 , 32,
19789 0xfc003fff, 0xa000123b, 0 , 0,
19790 CP1_ }, /* RECIP.fmt */
19791 { pool , CEIL_L_fmt , 2 , 32,
19792 0xfc003fff, 0xa000133b, 0 , 0,
19793 CP1_ }, /* CEIL.L.fmt */
19794 { reserved_block , 0 , 0 , 32,
19795 0xfc003fff, 0xa000143b, 0 , 0,
19796 CP1_ }, /* POOL32Fxf_0~*(20) */
19797 { reserved_block , 0 , 0 , 32,
19798 0xfc003fff, 0xa000153b, 0 , 0,
19799 CP1_ }, /* POOL32Fxf_0~*(21) */
19800 { reserved_block , 0 , 0 , 32,
19801 0xfc003fff, 0xa000163b, 0 , 0,
19802 CP1_ }, /* POOL32Fxf_0~*(22) */
19803 { reserved_block , 0 , 0 , 32,
19804 0xfc003fff, 0xa000173b, 0 , 0,
19805 CP1_ }, /* POOL32Fxf_0~*(23) */
19806 { instruction , 0 , 0 , 32,
19807 0xfc003fff, 0xa000183b, &NMD::CTC1 , 0,
19808 CP1_ }, /* CTC1 */
19809 { reserved_block , 0 , 0 , 32,
19810 0xfc003fff, 0xa000193b, 0 , 0,
19811 CP1_ }, /* POOL32Fxf_0~*(25) */
19812 { reserved_block , 0 , 0 , 32,
19813 0xfc003fff, 0xa0001a3b, 0 , 0,
19814 CP1_ }, /* POOL32Fxf_0~*(26) */
19815 { pool , CEIL_W_fmt , 2 , 32,
19816 0xfc003fff, 0xa0001b3b, 0 , 0,
19817 CP1_ }, /* CEIL.W.fmt */
19818 { reserved_block , 0 , 0 , 32,
19819 0xfc003fff, 0xa0001c3b, 0 , 0,
19820 CP1_ }, /* POOL32Fxf_0~*(28) */
19821 { reserved_block , 0 , 0 , 32,
19822 0xfc003fff, 0xa0001d3b, 0 , 0,
19823 CP1_ }, /* POOL32Fxf_0~*(29) */
19824 { reserved_block , 0 , 0 , 32,
19825 0xfc003fff, 0xa0001e3b, 0 , 0,
19826 CP1_ }, /* POOL32Fxf_0~*(30) */
19827 { reserved_block , 0 , 0 , 32,
19828 0xfc003fff, 0xa0001f3b, 0 , 0,
19829 CP1_ }, /* POOL32Fxf_0~*(31) */
19830 { instruction , 0 , 0 , 32,
19831 0xfc003fff, 0xa000203b, &NMD::MFC1 , 0,
19832 CP1_ }, /* MFC1 */
19833 { instruction , 0 , 0 , 32,
19834 0xfc003fff, 0xa000213b, &NMD::CVT_S_PL , 0,
19835 CP1_ }, /* CVT.S.PL */
19836 { reserved_block , 0 , 0 , 32,
19837 0xfc003fff, 0xa000223b, 0 , 0,
19838 CP1_ }, /* POOL32Fxf_0~*(34) */
19839 { pool , TRUNC_L_fmt , 2 , 32,
19840 0xfc003fff, 0xa000233b, 0 , 0,
19841 CP1_ }, /* TRUNC.L.fmt */
19842 { instruction , 0 , 0 , 32,
19843 0xfc003fff, 0xa000243b, &NMD::DMFC1 , 0,
19844 CP1_ | MIPS64_ }, /* DMFC1 */
19845 { reserved_block , 0 , 0 , 32,
19846 0xfc003fff, 0xa000253b, 0 , 0,
19847 CP1_ }, /* POOL32Fxf_0~*(37) */
19848 { reserved_block , 0 , 0 , 32,
19849 0xfc003fff, 0xa000263b, 0 , 0,
19850 CP1_ }, /* POOL32Fxf_0~*(38) */
19851 { reserved_block , 0 , 0 , 32,
19852 0xfc003fff, 0xa000273b, 0 , 0,
19853 CP1_ }, /* POOL32Fxf_0~*(39) */
19854 { instruction , 0 , 0 , 32,
19855 0xfc003fff, 0xa000283b, &NMD::MTC1 , 0,
19856 CP1_ }, /* MTC1 */
19857 { instruction , 0 , 0 , 32,
19858 0xfc003fff, 0xa000293b, &NMD::CVT_S_PU , 0,
19859 CP1_ }, /* CVT.S.PU */
19860 { reserved_block , 0 , 0 , 32,
19861 0xfc003fff, 0xa0002a3b, 0 , 0,
19862 CP1_ }, /* POOL32Fxf_0~*(42) */
19863 { pool , TRUNC_W_fmt , 2 , 32,
19864 0xfc003fff, 0xa0002b3b, 0 , 0,
19865 CP1_ }, /* TRUNC.W.fmt */
19866 { instruction , 0 , 0 , 32,
19867 0xfc003fff, 0xa0002c3b, &NMD::DMTC1 , 0,
19868 CP1_ | MIPS64_ }, /* DMTC1 */
19869 { reserved_block , 0 , 0 , 32,
19870 0xfc003fff, 0xa0002d3b, 0 , 0,
19871 CP1_ }, /* POOL32Fxf_0~*(45) */
19872 { reserved_block , 0 , 0 , 32,
19873 0xfc003fff, 0xa0002e3b, 0 , 0,
19874 CP1_ }, /* POOL32Fxf_0~*(46) */
19875 { reserved_block , 0 , 0 , 32,
19876 0xfc003fff, 0xa0002f3b, 0 , 0,
19877 CP1_ }, /* POOL32Fxf_0~*(47) */
19878 { instruction , 0 , 0 , 32,
19879 0xfc003fff, 0xa000303b, &NMD::MFHC1 , 0,
19880 CP1_ }, /* MFHC1 */
19881 { reserved_block , 0 , 0 , 32,
19882 0xfc003fff, 0xa000313b, 0 , 0,
19883 CP1_ }, /* POOL32Fxf_0~*(49) */
19884 { reserved_block , 0 , 0 , 32,
19885 0xfc003fff, 0xa000323b, 0 , 0,
19886 CP1_ }, /* POOL32Fxf_0~*(50) */
19887 { pool , ROUND_L_fmt , 2 , 32,
19888 0xfc003fff, 0xa000333b, 0 , 0,
19889 CP1_ }, /* ROUND.L.fmt */
19890 { reserved_block , 0 , 0 , 32,
19891 0xfc003fff, 0xa000343b, 0 , 0,
19892 CP1_ }, /* POOL32Fxf_0~*(52) */
19893 { reserved_block , 0 , 0 , 32,
19894 0xfc003fff, 0xa000353b, 0 , 0,
19895 CP1_ }, /* POOL32Fxf_0~*(53) */
19896 { reserved_block , 0 , 0 , 32,
19897 0xfc003fff, 0xa000363b, 0 , 0,
19898 CP1_ }, /* POOL32Fxf_0~*(54) */
19899 { reserved_block , 0 , 0 , 32,
19900 0xfc003fff, 0xa000373b, 0 , 0,
19901 CP1_ }, /* POOL32Fxf_0~*(55) */
19902 { instruction , 0 , 0 , 32,
19903 0xfc003fff, 0xa000383b, &NMD::MTHC1 , 0,
19904 CP1_ }, /* MTHC1 */
19905 { reserved_block , 0 , 0 , 32,
19906 0xfc003fff, 0xa000393b, 0 , 0,
19907 CP1_ }, /* POOL32Fxf_0~*(57) */
19908 { reserved_block , 0 , 0 , 32,
19909 0xfc003fff, 0xa0003a3b, 0 , 0,
19910 CP1_ }, /* POOL32Fxf_0~*(58) */
19911 { pool , ROUND_W_fmt , 2 , 32,
19912 0xfc003fff, 0xa0003b3b, 0 , 0,
19913 CP1_ }, /* ROUND.W.fmt */
19914 { reserved_block , 0 , 0 , 32,
19915 0xfc003fff, 0xa0003c3b, 0 , 0,
19916 CP1_ }, /* POOL32Fxf_0~*(60) */
19917 { reserved_block , 0 , 0 , 32,
19918 0xfc003fff, 0xa0003d3b, 0 , 0,
19919 CP1_ }, /* POOL32Fxf_0~*(61) */
19920 { reserved_block , 0 , 0 , 32,
19921 0xfc003fff, 0xa0003e3b, 0 , 0,
19922 CP1_ }, /* POOL32Fxf_0~*(62) */
19923 { reserved_block , 0 , 0 , 32,
19924 0xfc003fff, 0xa0003f3b, 0 , 0,
19925 CP1_ }, /* POOL32Fxf_0~*(63) */
19929 NMD::Pool NMD::MOV_fmt[4] = {
19930 { instruction , 0 , 0 , 32,
19931 0xfc007fff, 0xa000007b, &NMD::MOV_S , 0,
19932 CP1_ }, /* MOV.S */
19933 { instruction , 0 , 0 , 32,
19934 0xfc007fff, 0xa000207b, &NMD::MOV_D , 0,
19935 CP1_ }, /* MOV.D */
19936 { reserved_block , 0 , 0 , 32,
19937 0xfc007fff, 0xa000407b, 0 , 0,
19938 CP1_ }, /* MOV.fmt~*(2) */
19939 { reserved_block , 0 , 0 , 32,
19940 0xfc007fff, 0xa000607b, 0 , 0,
19941 CP1_ }, /* MOV.fmt~*(3) */
19945 NMD::Pool NMD::ABS_fmt[4] = {
19946 { instruction , 0 , 0 , 32,
19947 0xfc007fff, 0xa000037b, &NMD::ABS_S , 0,
19948 CP1_ }, /* ABS.S */
19949 { instruction , 0 , 0 , 32,
19950 0xfc007fff, 0xa000237b, &NMD::ABS_D , 0,
19951 CP1_ }, /* ABS.D */
19952 { reserved_block , 0 , 0 , 32,
19953 0xfc007fff, 0xa000437b, 0 , 0,
19954 CP1_ }, /* ABS.fmt~*(2) */
19955 { reserved_block , 0 , 0 , 32,
19956 0xfc007fff, 0xa000637b, 0 , 0,
19957 CP1_ }, /* ABS.fmt~*(3) */
19961 NMD::Pool NMD::NEG_fmt[4] = {
19962 { instruction , 0 , 0 , 32,
19963 0xfc007fff, 0xa0000b7b, &NMD::NEG_S , 0,
19964 CP1_ }, /* NEG.S */
19965 { instruction , 0 , 0 , 32,
19966 0xfc007fff, 0xa0002b7b, &NMD::NEG_D , 0,
19967 CP1_ }, /* NEG.D */
19968 { reserved_block , 0 , 0 , 32,
19969 0xfc007fff, 0xa0004b7b, 0 , 0,
19970 CP1_ }, /* NEG.fmt~*(2) */
19971 { reserved_block , 0 , 0 , 32,
19972 0xfc007fff, 0xa0006b7b, 0 , 0,
19973 CP1_ }, /* NEG.fmt~*(3) */
19977 NMD::Pool NMD::CVT_D_fmt[4] = {
19978 { instruction , 0 , 0 , 32,
19979 0xfc007fff, 0xa000137b, &NMD::CVT_D_S , 0,
19980 CP1_ }, /* CVT.D.S */
19981 { instruction , 0 , 0 , 32,
19982 0xfc007fff, 0xa000337b, &NMD::CVT_D_W , 0,
19983 CP1_ }, /* CVT.D.W */
19984 { instruction , 0 , 0 , 32,
19985 0xfc007fff, 0xa000537b, &NMD::CVT_D_L , 0,
19986 CP1_ }, /* CVT.D.L */
19987 { reserved_block , 0 , 0 , 32,
19988 0xfc007fff, 0xa000737b, 0 , 0,
19989 CP1_ }, /* CVT.D.fmt~*(3) */
19993 NMD::Pool NMD::CVT_S_fmt[4] = {
19994 { instruction , 0 , 0 , 32,
19995 0xfc007fff, 0xa0001b7b, &NMD::CVT_S_D , 0,
19996 CP1_ }, /* CVT.S.D */
19997 { instruction , 0 , 0 , 32,
19998 0xfc007fff, 0xa0003b7b, &NMD::CVT_S_W , 0,
19999 CP1_ }, /* CVT.S.W */
20000 { instruction , 0 , 0 , 32,
20001 0xfc007fff, 0xa0005b7b, &NMD::CVT_S_L , 0,
20002 CP1_ }, /* CVT.S.L */
20003 { reserved_block , 0 , 0 , 32,
20004 0xfc007fff, 0xa0007b7b, 0 , 0,
20005 CP1_ }, /* CVT.S.fmt~*(3) */
20009 NMD::Pool NMD::POOL32Fxf_1[32] = {
20010 { pool , MOV_fmt , 4 , 32,
20011 0xfc001fff, 0xa000007b, 0 , 0,
20012 CP1_ }, /* MOV.fmt */
20013 { reserved_block , 0 , 0 , 32,
20014 0xfc001fff, 0xa000017b, 0 , 0,
20015 CP1_ }, /* POOL32Fxf_1~*(1) */
20016 { reserved_block , 0 , 0 , 32,
20017 0xfc001fff, 0xa000027b, 0 , 0,
20018 CP1_ }, /* POOL32Fxf_1~*(2) */
20019 { pool , ABS_fmt , 4 , 32,
20020 0xfc001fff, 0xa000037b, 0 , 0,
20021 CP1_ }, /* ABS.fmt */
20022 { reserved_block , 0 , 0 , 32,
20023 0xfc001fff, 0xa000047b, 0 , 0,
20024 CP1_ }, /* POOL32Fxf_1~*(4) */
20025 { reserved_block , 0 , 0 , 32,
20026 0xfc001fff, 0xa000057b, 0 , 0,
20027 CP1_ }, /* POOL32Fxf_1~*(5) */
20028 { reserved_block , 0 , 0 , 32,
20029 0xfc001fff, 0xa000067b, 0 , 0,
20030 CP1_ }, /* POOL32Fxf_1~*(6) */
20031 { reserved_block , 0 , 0 , 32,
20032 0xfc001fff, 0xa000077b, 0 , 0,
20033 CP1_ }, /* POOL32Fxf_1~*(7) */
20034 { reserved_block , 0 , 0 , 32,
20035 0xfc001fff, 0xa000087b, 0 , 0,
20036 CP1_ }, /* POOL32Fxf_1~*(8) */
20037 { reserved_block , 0 , 0 , 32,
20038 0xfc001fff, 0xa000097b, 0 , 0,
20039 CP1_ }, /* POOL32Fxf_1~*(9) */
20040 { reserved_block , 0 , 0 , 32,
20041 0xfc001fff, 0xa0000a7b, 0 , 0,
20042 CP1_ }, /* POOL32Fxf_1~*(10) */
20043 { pool , NEG_fmt , 4 , 32,
20044 0xfc001fff, 0xa0000b7b, 0 , 0,
20045 CP1_ }, /* NEG.fmt */
20046 { reserved_block , 0 , 0 , 32,
20047 0xfc001fff, 0xa0000c7b, 0 , 0,
20048 CP1_ }, /* POOL32Fxf_1~*(12) */
20049 { reserved_block , 0 , 0 , 32,
20050 0xfc001fff, 0xa0000d7b, 0 , 0,
20051 CP1_ }, /* POOL32Fxf_1~*(13) */
20052 { reserved_block , 0 , 0 , 32,
20053 0xfc001fff, 0xa0000e7b, 0 , 0,
20054 CP1_ }, /* POOL32Fxf_1~*(14) */
20055 { reserved_block , 0 , 0 , 32,
20056 0xfc001fff, 0xa0000f7b, 0 , 0,
20057 CP1_ }, /* POOL32Fxf_1~*(15) */
20058 { reserved_block , 0 , 0 , 32,
20059 0xfc001fff, 0xa000107b, 0 , 0,
20060 CP1_ }, /* POOL32Fxf_1~*(16) */
20061 { reserved_block , 0 , 0 , 32,
20062 0xfc001fff, 0xa000117b, 0 , 0,
20063 CP1_ }, /* POOL32Fxf_1~*(17) */
20064 { reserved_block , 0 , 0 , 32,
20065 0xfc001fff, 0xa000127b, 0 , 0,
20066 CP1_ }, /* POOL32Fxf_1~*(18) */
20067 { pool , CVT_D_fmt , 4 , 32,
20068 0xfc001fff, 0xa000137b, 0 , 0,
20069 CP1_ }, /* CVT.D.fmt */
20070 { reserved_block , 0 , 0 , 32,
20071 0xfc001fff, 0xa000147b, 0 , 0,
20072 CP1_ }, /* POOL32Fxf_1~*(20) */
20073 { reserved_block , 0 , 0 , 32,
20074 0xfc001fff, 0xa000157b, 0 , 0,
20075 CP1_ }, /* POOL32Fxf_1~*(21) */
20076 { reserved_block , 0 , 0 , 32,
20077 0xfc001fff, 0xa000167b, 0 , 0,
20078 CP1_ }, /* POOL32Fxf_1~*(22) */
20079 { reserved_block , 0 , 0 , 32,
20080 0xfc001fff, 0xa000177b, 0 , 0,
20081 CP1_ }, /* POOL32Fxf_1~*(23) */
20082 { reserved_block , 0 , 0 , 32,
20083 0xfc001fff, 0xa000187b, 0 , 0,
20084 CP1_ }, /* POOL32Fxf_1~*(24) */
20085 { reserved_block , 0 , 0 , 32,
20086 0xfc001fff, 0xa000197b, 0 , 0,
20087 CP1_ }, /* POOL32Fxf_1~*(25) */
20088 { reserved_block , 0 , 0 , 32,
20089 0xfc001fff, 0xa0001a7b, 0 , 0,
20090 CP1_ }, /* POOL32Fxf_1~*(26) */
20091 { pool , CVT_S_fmt , 4 , 32,
20092 0xfc001fff, 0xa0001b7b, 0 , 0,
20093 CP1_ }, /* CVT.S.fmt */
20094 { reserved_block , 0 , 0 , 32,
20095 0xfc001fff, 0xa0001c7b, 0 , 0,
20096 CP1_ }, /* POOL32Fxf_1~*(28) */
20097 { reserved_block , 0 , 0 , 32,
20098 0xfc001fff, 0xa0001d7b, 0 , 0,
20099 CP1_ }, /* POOL32Fxf_1~*(29) */
20100 { reserved_block , 0 , 0 , 32,
20101 0xfc001fff, 0xa0001e7b, 0 , 0,
20102 CP1_ }, /* POOL32Fxf_1~*(30) */
20103 { reserved_block , 0 , 0 , 32,
20104 0xfc001fff, 0xa0001f7b, 0 , 0,
20105 CP1_ }, /* POOL32Fxf_1~*(31) */
20109 NMD::Pool NMD::POOL32Fxf[4] = {
20110 { pool , POOL32Fxf_0 , 64 , 32,
20111 0xfc0000ff, 0xa000003b, 0 , 0,
20112 CP1_ }, /* POOL32Fxf_0 */
20113 { pool , POOL32Fxf_1 , 32 , 32,
20114 0xfc0000ff, 0xa000007b, 0 , 0,
20115 CP1_ }, /* POOL32Fxf_1 */
20116 { reserved_block , 0 , 0 , 32,
20117 0xfc0000ff, 0xa00000bb, 0 , 0,
20118 CP1_ }, /* POOL32Fxf~*(2) */
20119 { reserved_block , 0 , 0 , 32,
20120 0xfc0000ff, 0xa00000fb, 0 , 0,
20121 CP1_ }, /* POOL32Fxf~*(3) */
20125 NMD::Pool NMD::POOL32F_3[8] = {
20126 { pool , MIN_fmt , 2 , 32,
20127 0xfc00003f, 0xa0000003, 0 , 0,
20128 CP1_ }, /* MIN.fmt */
20129 { pool , MAX_fmt , 2 , 32,
20130 0xfc00003f, 0xa000000b, 0 , 0,
20131 CP1_ }, /* MAX.fmt */
20132 { reserved_block , 0 , 0 , 32,
20133 0xfc00003f, 0xa0000013, 0 , 0,
20134 CP1_ }, /* POOL32F_3~*(2) */
20135 { reserved_block , 0 , 0 , 32,
20136 0xfc00003f, 0xa000001b, 0 , 0,
20137 CP1_ }, /* POOL32F_3~*(3) */
20138 { pool , MINA_fmt , 2 , 32,
20139 0xfc00003f, 0xa0000023, 0 , 0,
20140 CP1_ }, /* MINA.fmt */
20141 { pool , MAXA_fmt , 2 , 32,
20142 0xfc00003f, 0xa000002b, 0 , 0,
20143 CP1_ }, /* MAXA.fmt */
20144 { reserved_block , 0 , 0 , 32,
20145 0xfc00003f, 0xa0000033, 0 , 0,
20146 CP1_ }, /* POOL32F_3~*(6) */
20147 { pool , POOL32Fxf , 4 , 32,
20148 0xfc00003f, 0xa000003b, 0 , 0,
20149 CP1_ }, /* POOL32Fxf */
20153 NMD::Pool NMD::CMP_condn_S[32] = {
20154 { instruction , 0 , 0 , 32,
20155 0xfc0007ff, 0xa0000005, &NMD::CMP_AF_S , 0,
20156 CP1_ }, /* CMP.AF.S */
20157 { instruction , 0 , 0 , 32,
20158 0xfc0007ff, 0xa0000045, &NMD::CMP_UN_S , 0,
20159 CP1_ }, /* CMP.UN.S */
20160 { instruction , 0 , 0 , 32,
20161 0xfc0007ff, 0xa0000085, &NMD::CMP_EQ_S , 0,
20162 CP1_ }, /* CMP.EQ.S */
20163 { instruction , 0 , 0 , 32,
20164 0xfc0007ff, 0xa00000c5, &NMD::CMP_UEQ_S , 0,
20165 CP1_ }, /* CMP.UEQ.S */
20166 { instruction , 0 , 0 , 32,
20167 0xfc0007ff, 0xa0000105, &NMD::CMP_LT_S , 0,
20168 CP1_ }, /* CMP.LT.S */
20169 { instruction , 0 , 0 , 32,
20170 0xfc0007ff, 0xa0000145, &NMD::CMP_ULT_S , 0,
20171 CP1_ }, /* CMP.ULT.S */
20172 { instruction , 0 , 0 , 32,
20173 0xfc0007ff, 0xa0000185, &NMD::CMP_LE_S , 0,
20174 CP1_ }, /* CMP.LE.S */
20175 { instruction , 0 , 0 , 32,
20176 0xfc0007ff, 0xa00001c5, &NMD::CMP_ULE_S , 0,
20177 CP1_ }, /* CMP.ULE.S */
20178 { instruction , 0 , 0 , 32,
20179 0xfc0007ff, 0xa0000205, &NMD::CMP_SAF_S , 0,
20180 CP1_ }, /* CMP.SAF.S */
20181 { instruction , 0 , 0 , 32,
20182 0xfc0007ff, 0xa0000245, &NMD::CMP_SUN_S , 0,
20183 CP1_ }, /* CMP.SUN.S */
20184 { instruction , 0 , 0 , 32,
20185 0xfc0007ff, 0xa0000285, &NMD::CMP_SEQ_S , 0,
20186 CP1_ }, /* CMP.SEQ.S */
20187 { instruction , 0 , 0 , 32,
20188 0xfc0007ff, 0xa00002c5, &NMD::CMP_SUEQ_S , 0,
20189 CP1_ }, /* CMP.SUEQ.S */
20190 { instruction , 0 , 0 , 32,
20191 0xfc0007ff, 0xa0000305, &NMD::CMP_SLT_S , 0,
20192 CP1_ }, /* CMP.SLT.S */
20193 { instruction , 0 , 0 , 32,
20194 0xfc0007ff, 0xa0000345, &NMD::CMP_SULT_S , 0,
20195 CP1_ }, /* CMP.SULT.S */
20196 { instruction , 0 , 0 , 32,
20197 0xfc0007ff, 0xa0000385, &NMD::CMP_SLE_S , 0,
20198 CP1_ }, /* CMP.SLE.S */
20199 { instruction , 0 , 0 , 32,
20200 0xfc0007ff, 0xa00003c5, &NMD::CMP_SULE_S , 0,
20201 CP1_ }, /* CMP.SULE.S */
20202 { reserved_block , 0 , 0 , 32,
20203 0xfc0007ff, 0xa0000405, 0 , 0,
20204 CP1_ }, /* CMP.condn.S~*(16) */
20205 { instruction , 0 , 0 , 32,
20206 0xfc0007ff, 0xa0000445, &NMD::CMP_OR_S , 0,
20207 CP1_ }, /* CMP.OR.S */
20208 { instruction , 0 , 0 , 32,
20209 0xfc0007ff, 0xa0000485, &NMD::CMP_UNE_S , 0,
20210 CP1_ }, /* CMP.UNE.S */
20211 { instruction , 0 , 0 , 32,
20212 0xfc0007ff, 0xa00004c5, &NMD::CMP_NE_S , 0,
20213 CP1_ }, /* CMP.NE.S */
20214 { reserved_block , 0 , 0 , 32,
20215 0xfc0007ff, 0xa0000505, 0 , 0,
20216 CP1_ }, /* CMP.condn.S~*(20) */
20217 { reserved_block , 0 , 0 , 32,
20218 0xfc0007ff, 0xa0000545, 0 , 0,
20219 CP1_ }, /* CMP.condn.S~*(21) */
20220 { reserved_block , 0 , 0 , 32,
20221 0xfc0007ff, 0xa0000585, 0 , 0,
20222 CP1_ }, /* CMP.condn.S~*(22) */
20223 { reserved_block , 0 , 0 , 32,
20224 0xfc0007ff, 0xa00005c5, 0 , 0,
20225 CP1_ }, /* CMP.condn.S~*(23) */
20226 { reserved_block , 0 , 0 , 32,
20227 0xfc0007ff, 0xa0000605, 0 , 0,
20228 CP1_ }, /* CMP.condn.S~*(24) */
20229 { instruction , 0 , 0 , 32,
20230 0xfc0007ff, 0xa0000645, &NMD::CMP_SOR_S , 0,
20231 CP1_ }, /* CMP.SOR.S */
20232 { instruction , 0 , 0 , 32,
20233 0xfc0007ff, 0xa0000685, &NMD::CMP_SUNE_S , 0,
20234 CP1_ }, /* CMP.SUNE.S */
20235 { instruction , 0 , 0 , 32,
20236 0xfc0007ff, 0xa00006c5, &NMD::CMP_SNE_S , 0,
20237 CP1_ }, /* CMP.SNE.S */
20238 { reserved_block , 0 , 0 , 32,
20239 0xfc0007ff, 0xa0000705, 0 , 0,
20240 CP1_ }, /* CMP.condn.S~*(28) */
20241 { reserved_block , 0 , 0 , 32,
20242 0xfc0007ff, 0xa0000745, 0 , 0,
20243 CP1_ }, /* CMP.condn.S~*(29) */
20244 { reserved_block , 0 , 0 , 32,
20245 0xfc0007ff, 0xa0000785, 0 , 0,
20246 CP1_ }, /* CMP.condn.S~*(30) */
20247 { reserved_block , 0 , 0 , 32,
20248 0xfc0007ff, 0xa00007c5, 0 , 0,
20249 CP1_ }, /* CMP.condn.S~*(31) */
20253 NMD::Pool NMD::CMP_condn_D[32] = {
20254 { instruction , 0 , 0 , 32,
20255 0xfc0007ff, 0xa0000015, &NMD::CMP_AF_D , 0,
20256 CP1_ }, /* CMP.AF.D */
20257 { instruction , 0 , 0 , 32,
20258 0xfc0007ff, 0xa0000055, &NMD::CMP_UN_D , 0,
20259 CP1_ }, /* CMP.UN.D */
20260 { instruction , 0 , 0 , 32,
20261 0xfc0007ff, 0xa0000095, &NMD::CMP_EQ_D , 0,
20262 CP1_ }, /* CMP.EQ.D */
20263 { instruction , 0 , 0 , 32,
20264 0xfc0007ff, 0xa00000d5, &NMD::CMP_UEQ_D , 0,
20265 CP1_ }, /* CMP.UEQ.D */
20266 { instruction , 0 , 0 , 32,
20267 0xfc0007ff, 0xa0000115, &NMD::CMP_LT_D , 0,
20268 CP1_ }, /* CMP.LT.D */
20269 { instruction , 0 , 0 , 32,
20270 0xfc0007ff, 0xa0000155, &NMD::CMP_ULT_D , 0,
20271 CP1_ }, /* CMP.ULT.D */
20272 { instruction , 0 , 0 , 32,
20273 0xfc0007ff, 0xa0000195, &NMD::CMP_LE_D , 0,
20274 CP1_ }, /* CMP.LE.D */
20275 { instruction , 0 , 0 , 32,
20276 0xfc0007ff, 0xa00001d5, &NMD::CMP_ULE_D , 0,
20277 CP1_ }, /* CMP.ULE.D */
20278 { instruction , 0 , 0 , 32,
20279 0xfc0007ff, 0xa0000215, &NMD::CMP_SAF_D , 0,
20280 CP1_ }, /* CMP.SAF.D */
20281 { instruction , 0 , 0 , 32,
20282 0xfc0007ff, 0xa0000255, &NMD::CMP_SUN_D , 0,
20283 CP1_ }, /* CMP.SUN.D */
20284 { instruction , 0 , 0 , 32,
20285 0xfc0007ff, 0xa0000295, &NMD::CMP_SEQ_D , 0,
20286 CP1_ }, /* CMP.SEQ.D */
20287 { instruction , 0 , 0 , 32,
20288 0xfc0007ff, 0xa00002d5, &NMD::CMP_SUEQ_D , 0,
20289 CP1_ }, /* CMP.SUEQ.D */
20290 { instruction , 0 , 0 , 32,
20291 0xfc0007ff, 0xa0000315, &NMD::CMP_SLT_D , 0,
20292 CP1_ }, /* CMP.SLT.D */
20293 { instruction , 0 , 0 , 32,
20294 0xfc0007ff, 0xa0000355, &NMD::CMP_SULT_D , 0,
20295 CP1_ }, /* CMP.SULT.D */
20296 { instruction , 0 , 0 , 32,
20297 0xfc0007ff, 0xa0000395, &NMD::CMP_SLE_D , 0,
20298 CP1_ }, /* CMP.SLE.D */
20299 { instruction , 0 , 0 , 32,
20300 0xfc0007ff, 0xa00003d5, &NMD::CMP_SULE_D , 0,
20301 CP1_ }, /* CMP.SULE.D */
20302 { reserved_block , 0 , 0 , 32,
20303 0xfc0007ff, 0xa0000415, 0 , 0,
20304 CP1_ }, /* CMP.condn.D~*(16) */
20305 { instruction , 0 , 0 , 32,
20306 0xfc0007ff, 0xa0000455, &NMD::CMP_OR_D , 0,
20307 CP1_ }, /* CMP.OR.D */
20308 { instruction , 0 , 0 , 32,
20309 0xfc0007ff, 0xa0000495, &NMD::CMP_UNE_D , 0,
20310 CP1_ }, /* CMP.UNE.D */
20311 { instruction , 0 , 0 , 32,
20312 0xfc0007ff, 0xa00004d5, &NMD::CMP_NE_D , 0,
20313 CP1_ }, /* CMP.NE.D */
20314 { reserved_block , 0 , 0 , 32,
20315 0xfc0007ff, 0xa0000515, 0 , 0,
20316 CP1_ }, /* CMP.condn.D~*(20) */
20317 { reserved_block , 0 , 0 , 32,
20318 0xfc0007ff, 0xa0000555, 0 , 0,
20319 CP1_ }, /* CMP.condn.D~*(21) */
20320 { reserved_block , 0 , 0 , 32,
20321 0xfc0007ff, 0xa0000595, 0 , 0,
20322 CP1_ }, /* CMP.condn.D~*(22) */
20323 { reserved_block , 0 , 0 , 32,
20324 0xfc0007ff, 0xa00005d5, 0 , 0,
20325 CP1_ }, /* CMP.condn.D~*(23) */
20326 { reserved_block , 0 , 0 , 32,
20327 0xfc0007ff, 0xa0000615, 0 , 0,
20328 CP1_ }, /* CMP.condn.D~*(24) */
20329 { instruction , 0 , 0 , 32,
20330 0xfc0007ff, 0xa0000655, &NMD::CMP_SOR_D , 0,
20331 CP1_ }, /* CMP.SOR.D */
20332 { instruction , 0 , 0 , 32,
20333 0xfc0007ff, 0xa0000695, &NMD::CMP_SUNE_D , 0,
20334 CP1_ }, /* CMP.SUNE.D */
20335 { instruction , 0 , 0 , 32,
20336 0xfc0007ff, 0xa00006d5, &NMD::CMP_SNE_D , 0,
20337 CP1_ }, /* CMP.SNE.D */
20338 { reserved_block , 0 , 0 , 32,
20339 0xfc0007ff, 0xa0000715, 0 , 0,
20340 CP1_ }, /* CMP.condn.D~*(28) */
20341 { reserved_block , 0 , 0 , 32,
20342 0xfc0007ff, 0xa0000755, 0 , 0,
20343 CP1_ }, /* CMP.condn.D~*(29) */
20344 { reserved_block , 0 , 0 , 32,
20345 0xfc0007ff, 0xa0000795, 0 , 0,
20346 CP1_ }, /* CMP.condn.D~*(30) */
20347 { reserved_block , 0 , 0 , 32,
20348 0xfc0007ff, 0xa00007d5, 0 , 0,
20349 CP1_ }, /* CMP.condn.D~*(31) */
20353 NMD::Pool NMD::POOL32F_5[8] = {
20354 { pool , CMP_condn_S , 32 , 32,
20355 0xfc00003f, 0xa0000005, 0 , 0,
20356 CP1_ }, /* CMP.condn.S */
20357 { reserved_block , 0 , 0 , 32,
20358 0xfc00003f, 0xa000000d, 0 , 0,
20359 CP1_ }, /* POOL32F_5~*(1) */
20360 { pool , CMP_condn_D , 32 , 32,
20361 0xfc00003f, 0xa0000015, 0 , 0,
20362 CP1_ }, /* CMP.condn.D */
20363 { reserved_block , 0 , 0 , 32,
20364 0xfc00003f, 0xa000001d, 0 , 0,
20365 CP1_ }, /* POOL32F_5~*(3) */
20366 { reserved_block , 0 , 0 , 32,
20367 0xfc00003f, 0xa0000025, 0 , 0,
20368 CP1_ }, /* POOL32F_5~*(4) */
20369 { reserved_block , 0 , 0 , 32,
20370 0xfc00003f, 0xa000002d, 0 , 0,
20371 CP1_ }, /* POOL32F_5~*(5) */
20372 { reserved_block , 0 , 0 , 32,
20373 0xfc00003f, 0xa0000035, 0 , 0,
20374 CP1_ }, /* POOL32F_5~*(6) */
20375 { reserved_block , 0 , 0 , 32,
20376 0xfc00003f, 0xa000003d, 0 , 0,
20377 CP1_ }, /* POOL32F_5~*(7) */
20381 NMD::Pool NMD::POOL32F[8] = {
20382 { pool , POOL32F_0 , 64 , 32,
20383 0xfc000007, 0xa0000000, 0 , 0,
20384 CP1_ }, /* POOL32F_0 */
20385 { reserved_block , 0 , 0 , 32,
20386 0xfc000007, 0xa0000001, 0 , 0,
20387 CP1_ }, /* POOL32F~*(1) */
20388 { reserved_block , 0 , 0 , 32,
20389 0xfc000007, 0xa0000002, 0 , 0,
20390 CP1_ }, /* POOL32F~*(2) */
20391 { pool , POOL32F_3 , 8 , 32,
20392 0xfc000007, 0xa0000003, 0 , 0,
20393 CP1_ }, /* POOL32F_3 */
20394 { reserved_block , 0 , 0 , 32,
20395 0xfc000007, 0xa0000004, 0 , 0,
20396 CP1_ }, /* POOL32F~*(4) */
20397 { pool , POOL32F_5 , 8 , 32,
20398 0xfc000007, 0xa0000005, 0 , 0,
20399 CP1_ }, /* POOL32F_5 */
20400 { reserved_block , 0 , 0 , 32,
20401 0xfc000007, 0xa0000006, 0 , 0,
20402 CP1_ }, /* POOL32F~*(6) */
20403 { reserved_block , 0 , 0 , 32,
20404 0xfc000007, 0xa0000007, 0 , 0,
20405 CP1_ }, /* POOL32F~*(7) */
20409 NMD::Pool NMD::POOL32S_0[64] = {
20410 { reserved_block , 0 , 0 , 32,
20411 0xfc0001ff, 0xc0000000, 0 , 0,
20412 0x0 }, /* POOL32S_0~*(0) */
20413 { instruction , 0 , 0 , 32,
20414 0xfc0001ff, 0xc0000008, &NMD::DLSA , 0,
20415 MIPS64_ }, /* DLSA */
20416 { instruction , 0 , 0 , 32,
20417 0xfc0001ff, 0xc0000010, &NMD::DSLLV , 0,
20418 MIPS64_ }, /* DSLLV */
20419 { instruction , 0 , 0 , 32,
20420 0xfc0001ff, 0xc0000018, &NMD::DMUL , 0,
20421 MIPS64_ }, /* DMUL */
20422 { reserved_block , 0 , 0 , 32,
20423 0xfc0001ff, 0xc0000020, 0 , 0,
20424 0x0 }, /* POOL32S_0~*(4) */
20425 { reserved_block , 0 , 0 , 32,
20426 0xfc0001ff, 0xc0000028, 0 , 0,
20427 0x0 }, /* POOL32S_0~*(5) */
20428 { reserved_block , 0 , 0 , 32,
20429 0xfc0001ff, 0xc0000030, 0 , 0,
20430 0x0 }, /* POOL32S_0~*(6) */
20431 { reserved_block , 0 , 0 , 32,
20432 0xfc0001ff, 0xc0000038, 0 , 0,
20433 0x0 }, /* POOL32S_0~*(7) */
20434 { reserved_block , 0 , 0 , 32,
20435 0xfc0001ff, 0xc0000040, 0 , 0,
20436 0x0 }, /* POOL32S_0~*(8) */
20437 { reserved_block , 0 , 0 , 32,
20438 0xfc0001ff, 0xc0000048, 0 , 0,
20439 0x0 }, /* POOL32S_0~*(9) */
20440 { instruction , 0 , 0 , 32,
20441 0xfc0001ff, 0xc0000050, &NMD::DSRLV , 0,
20442 MIPS64_ }, /* DSRLV */
20443 { instruction , 0 , 0 , 32,
20444 0xfc0001ff, 0xc0000058, &NMD::DMUH , 0,
20445 MIPS64_ }, /* DMUH */
20446 { reserved_block , 0 , 0 , 32,
20447 0xfc0001ff, 0xc0000060, 0 , 0,
20448 0x0 }, /* POOL32S_0~*(12) */
20449 { reserved_block , 0 , 0 , 32,
20450 0xfc0001ff, 0xc0000068, 0 , 0,
20451 0x0 }, /* POOL32S_0~*(13) */
20452 { reserved_block , 0 , 0 , 32,
20453 0xfc0001ff, 0xc0000070, 0 , 0,
20454 0x0 }, /* POOL32S_0~*(14) */
20455 { reserved_block , 0 , 0 , 32,
20456 0xfc0001ff, 0xc0000078, 0 , 0,
20457 0x0 }, /* POOL32S_0~*(15) */
20458 { reserved_block , 0 , 0 , 32,
20459 0xfc0001ff, 0xc0000080, 0 , 0,
20460 0x0 }, /* POOL32S_0~*(16) */
20461 { reserved_block , 0 , 0 , 32,
20462 0xfc0001ff, 0xc0000088, 0 , 0,
20463 0x0 }, /* POOL32S_0~*(17) */
20464 { instruction , 0 , 0 , 32,
20465 0xfc0001ff, 0xc0000090, &NMD::DSRAV , 0,
20466 MIPS64_ }, /* DSRAV */
20467 { instruction , 0 , 0 , 32,
20468 0xfc0001ff, 0xc0000098, &NMD::DMULU , 0,
20469 MIPS64_ }, /* DMULU */
20470 { reserved_block , 0 , 0 , 32,
20471 0xfc0001ff, 0xc00000a0, 0 , 0,
20472 0x0 }, /* POOL32S_0~*(20) */
20473 { reserved_block , 0 , 0 , 32,
20474 0xfc0001ff, 0xc00000a8, 0 , 0,
20475 0x0 }, /* POOL32S_0~*(21) */
20476 { reserved_block , 0 , 0 , 32,
20477 0xfc0001ff, 0xc00000b0, 0 , 0,
20478 0x0 }, /* POOL32S_0~*(22) */
20479 { reserved_block , 0 , 0 , 32,
20480 0xfc0001ff, 0xc00000b8, 0 , 0,
20481 0x0 }, /* POOL32S_0~*(23) */
20482 { reserved_block , 0 , 0 , 32,
20483 0xfc0001ff, 0xc00000c0, 0 , 0,
20484 0x0 }, /* POOL32S_0~*(24) */
20485 { reserved_block , 0 , 0 , 32,
20486 0xfc0001ff, 0xc00000c8, 0 , 0,
20487 0x0 }, /* POOL32S_0~*(25) */
20488 { instruction , 0 , 0 , 32,
20489 0xfc0001ff, 0xc00000d0, &NMD::DROTRV , 0,
20490 MIPS64_ }, /* DROTRV */
20491 { instruction , 0 , 0 , 32,
20492 0xfc0001ff, 0xc00000d8, &NMD::DMUHU , 0,
20493 MIPS64_ }, /* DMUHU */
20494 { reserved_block , 0 , 0 , 32,
20495 0xfc0001ff, 0xc00000e0, 0 , 0,
20496 0x0 }, /* POOL32S_0~*(28) */
20497 { reserved_block , 0 , 0 , 32,
20498 0xfc0001ff, 0xc00000e8, 0 , 0,
20499 0x0 }, /* POOL32S_0~*(29) */
20500 { reserved_block , 0 , 0 , 32,
20501 0xfc0001ff, 0xc00000f0, 0 , 0,
20502 0x0 }, /* POOL32S_0~*(30) */
20503 { reserved_block , 0 , 0 , 32,
20504 0xfc0001ff, 0xc00000f8, 0 , 0,
20505 0x0 }, /* POOL32S_0~*(31) */
20506 { reserved_block , 0 , 0 , 32,
20507 0xfc0001ff, 0xc0000100, 0 , 0,
20508 0x0 }, /* POOL32S_0~*(32) */
20509 { reserved_block , 0 , 0 , 32,
20510 0xfc0001ff, 0xc0000108, 0 , 0,
20511 0x0 }, /* POOL32S_0~*(33) */
20512 { instruction , 0 , 0 , 32,
20513 0xfc0001ff, 0xc0000110, &NMD::DADD , 0,
20514 MIPS64_ }, /* DADD */
20515 { instruction , 0 , 0 , 32,
20516 0xfc0001ff, 0xc0000118, &NMD::DDIV , 0,
20517 MIPS64_ }, /* DDIV */
20518 { reserved_block , 0 , 0 , 32,
20519 0xfc0001ff, 0xc0000120, 0 , 0,
20520 0x0 }, /* POOL32S_0~*(36) */
20521 { reserved_block , 0 , 0 , 32,
20522 0xfc0001ff, 0xc0000128, 0 , 0,
20523 0x0 }, /* POOL32S_0~*(37) */
20524 { reserved_block , 0 , 0 , 32,
20525 0xfc0001ff, 0xc0000130, 0 , 0,
20526 0x0 }, /* POOL32S_0~*(38) */
20527 { reserved_block , 0 , 0 , 32,
20528 0xfc0001ff, 0xc0000138, 0 , 0,
20529 0x0 }, /* POOL32S_0~*(39) */
20530 { reserved_block , 0 , 0 , 32,
20531 0xfc0001ff, 0xc0000140, 0 , 0,
20532 0x0 }, /* POOL32S_0~*(40) */
20533 { reserved_block , 0 , 0 , 32,
20534 0xfc0001ff, 0xc0000148, 0 , 0,
20535 0x0 }, /* POOL32S_0~*(41) */
20536 { instruction , 0 , 0 , 32,
20537 0xfc0001ff, 0xc0000150, &NMD::DADDU , 0,
20538 MIPS64_ }, /* DADDU */
20539 { instruction , 0 , 0 , 32,
20540 0xfc0001ff, 0xc0000158, &NMD::DMOD , 0,
20541 MIPS64_ }, /* DMOD */
20542 { reserved_block , 0 , 0 , 32,
20543 0xfc0001ff, 0xc0000160, 0 , 0,
20544 0x0 }, /* POOL32S_0~*(44) */
20545 { reserved_block , 0 , 0 , 32,
20546 0xfc0001ff, 0xc0000168, 0 , 0,
20547 0x0 }, /* POOL32S_0~*(45) */
20548 { reserved_block , 0 , 0 , 32,
20549 0xfc0001ff, 0xc0000170, 0 , 0,
20550 0x0 }, /* POOL32S_0~*(46) */
20551 { reserved_block , 0 , 0 , 32,
20552 0xfc0001ff, 0xc0000178, 0 , 0,
20553 0x0 }, /* POOL32S_0~*(47) */
20554 { reserved_block , 0 , 0 , 32,
20555 0xfc0001ff, 0xc0000180, 0 , 0,
20556 0x0 }, /* POOL32S_0~*(48) */
20557 { reserved_block , 0 , 0 , 32,
20558 0xfc0001ff, 0xc0000188, 0 , 0,
20559 0x0 }, /* POOL32S_0~*(49) */
20560 { instruction , 0 , 0 , 32,
20561 0xfc0001ff, 0xc0000190, &NMD::DSUB , 0,
20562 MIPS64_ }, /* DSUB */
20563 { instruction , 0 , 0 , 32,
20564 0xfc0001ff, 0xc0000198, &NMD::DDIVU , 0,
20565 MIPS64_ }, /* DDIVU */
20566 { reserved_block , 0 , 0 , 32,
20567 0xfc0001ff, 0xc00001a0, 0 , 0,
20568 0x0 }, /* POOL32S_0~*(52) */
20569 { reserved_block , 0 , 0 , 32,
20570 0xfc0001ff, 0xc00001a8, 0 , 0,
20571 0x0 }, /* POOL32S_0~*(53) */
20572 { reserved_block , 0 , 0 , 32,
20573 0xfc0001ff, 0xc00001b0, 0 , 0,
20574 0x0 }, /* POOL32S_0~*(54) */
20575 { reserved_block , 0 , 0 , 32,
20576 0xfc0001ff, 0xc00001b8, 0 , 0,
20577 0x0 }, /* POOL32S_0~*(55) */
20578 { reserved_block , 0 , 0 , 32,
20579 0xfc0001ff, 0xc00001c0, 0 , 0,
20580 0x0 }, /* POOL32S_0~*(56) */
20581 { reserved_block , 0 , 0 , 32,
20582 0xfc0001ff, 0xc00001c8, 0 , 0,
20583 0x0 }, /* POOL32S_0~*(57) */
20584 { instruction , 0 , 0 , 32,
20585 0xfc0001ff, 0xc00001d0, &NMD::DSUBU , 0,
20586 MIPS64_ }, /* DSUBU */
20587 { instruction , 0 , 0 , 32,
20588 0xfc0001ff, 0xc00001d8, &NMD::DMODU , 0,
20589 MIPS64_ }, /* DMODU */
20590 { reserved_block , 0 , 0 , 32,
20591 0xfc0001ff, 0xc00001e0, 0 , 0,
20592 0x0 }, /* POOL32S_0~*(60) */
20593 { reserved_block , 0 , 0 , 32,
20594 0xfc0001ff, 0xc00001e8, 0 , 0,
20595 0x0 }, /* POOL32S_0~*(61) */
20596 { reserved_block , 0 , 0 , 32,
20597 0xfc0001ff, 0xc00001f0, 0 , 0,
20598 0x0 }, /* POOL32S_0~*(62) */
20599 { reserved_block , 0 , 0 , 32,
20600 0xfc0001ff, 0xc00001f8, 0 , 0,
20601 0x0 }, /* POOL32S_0~*(63) */
20605 NMD::Pool NMD::POOL32Sxf_4[128] = {
20606 { reserved_block , 0 , 0 , 32,
20607 0xfc00ffff, 0xc000013c, 0 , 0,
20608 0x0 }, /* POOL32Sxf_4~*(0) */
20609 { reserved_block , 0 , 0 , 32,
20610 0xfc00ffff, 0xc000033c, 0 , 0,
20611 0x0 }, /* POOL32Sxf_4~*(1) */
20612 { reserved_block , 0 , 0 , 32,
20613 0xfc00ffff, 0xc000053c, 0 , 0,
20614 0x0 }, /* POOL32Sxf_4~*(2) */
20615 { reserved_block , 0 , 0 , 32,
20616 0xfc00ffff, 0xc000073c, 0 , 0,
20617 0x0 }, /* POOL32Sxf_4~*(3) */
20618 { reserved_block , 0 , 0 , 32,
20619 0xfc00ffff, 0xc000093c, 0 , 0,
20620 0x0 }, /* POOL32Sxf_4~*(4) */
20621 { reserved_block , 0 , 0 , 32,
20622 0xfc00ffff, 0xc0000b3c, 0 , 0,
20623 0x0 }, /* POOL32Sxf_4~*(5) */
20624 { reserved_block , 0 , 0 , 32,
20625 0xfc00ffff, 0xc0000d3c, 0 , 0,
20626 0x0 }, /* POOL32Sxf_4~*(6) */
20627 { reserved_block , 0 , 0 , 32,
20628 0xfc00ffff, 0xc0000f3c, 0 , 0,
20629 0x0 }, /* POOL32Sxf_4~*(7) */
20630 { reserved_block , 0 , 0 , 32,
20631 0xfc00ffff, 0xc000113c, 0 , 0,
20632 0x0 }, /* POOL32Sxf_4~*(8) */
20633 { reserved_block , 0 , 0 , 32,
20634 0xfc00ffff, 0xc000133c, 0 , 0,
20635 0x0 }, /* POOL32Sxf_4~*(9) */
20636 { reserved_block , 0 , 0 , 32,
20637 0xfc00ffff, 0xc000153c, 0 , 0,
20638 0x0 }, /* POOL32Sxf_4~*(10) */
20639 { reserved_block , 0 , 0 , 32,
20640 0xfc00ffff, 0xc000173c, 0 , 0,
20641 0x0 }, /* POOL32Sxf_4~*(11) */
20642 { reserved_block , 0 , 0 , 32,
20643 0xfc00ffff, 0xc000193c, 0 , 0,
20644 0x0 }, /* POOL32Sxf_4~*(12) */
20645 { reserved_block , 0 , 0 , 32,
20646 0xfc00ffff, 0xc0001b3c, 0 , 0,
20647 0x0 }, /* POOL32Sxf_4~*(13) */
20648 { reserved_block , 0 , 0 , 32,
20649 0xfc00ffff, 0xc0001d3c, 0 , 0,
20650 0x0 }, /* POOL32Sxf_4~*(14) */
20651 { reserved_block , 0 , 0 , 32,
20652 0xfc00ffff, 0xc0001f3c, 0 , 0,
20653 0x0 }, /* POOL32Sxf_4~*(15) */
20654 { reserved_block , 0 , 0 , 32,
20655 0xfc00ffff, 0xc000213c, 0 , 0,
20656 0x0 }, /* POOL32Sxf_4~*(16) */
20657 { reserved_block , 0 , 0 , 32,
20658 0xfc00ffff, 0xc000233c, 0 , 0,
20659 0x0 }, /* POOL32Sxf_4~*(17) */
20660 { reserved_block , 0 , 0 , 32,
20661 0xfc00ffff, 0xc000253c, 0 , 0,
20662 0x0 }, /* POOL32Sxf_4~*(18) */
20663 { reserved_block , 0 , 0 , 32,
20664 0xfc00ffff, 0xc000273c, 0 , 0,
20665 0x0 }, /* POOL32Sxf_4~*(19) */
20666 { reserved_block , 0 , 0 , 32,
20667 0xfc00ffff, 0xc000293c, 0 , 0,
20668 0x0 }, /* POOL32Sxf_4~*(20) */
20669 { reserved_block , 0 , 0 , 32,
20670 0xfc00ffff, 0xc0002b3c, 0 , 0,
20671 0x0 }, /* POOL32Sxf_4~*(21) */
20672 { reserved_block , 0 , 0 , 32,
20673 0xfc00ffff, 0xc0002d3c, 0 , 0,
20674 0x0 }, /* POOL32Sxf_4~*(22) */
20675 { reserved_block , 0 , 0 , 32,
20676 0xfc00ffff, 0xc0002f3c, 0 , 0,
20677 0x0 }, /* POOL32Sxf_4~*(23) */
20678 { reserved_block , 0 , 0 , 32,
20679 0xfc00ffff, 0xc000313c, 0 , 0,
20680 0x0 }, /* POOL32Sxf_4~*(24) */
20681 { reserved_block , 0 , 0 , 32,
20682 0xfc00ffff, 0xc000333c, 0 , 0,
20683 0x0 }, /* POOL32Sxf_4~*(25) */
20684 { reserved_block , 0 , 0 , 32,
20685 0xfc00ffff, 0xc000353c, 0 , 0,
20686 0x0 }, /* POOL32Sxf_4~*(26) */
20687 { reserved_block , 0 , 0 , 32,
20688 0xfc00ffff, 0xc000373c, 0 , 0,
20689 0x0 }, /* POOL32Sxf_4~*(27) */
20690 { reserved_block , 0 , 0 , 32,
20691 0xfc00ffff, 0xc000393c, 0 , 0,
20692 0x0 }, /* POOL32Sxf_4~*(28) */
20693 { reserved_block , 0 , 0 , 32,
20694 0xfc00ffff, 0xc0003b3c, 0 , 0,
20695 0x0 }, /* POOL32Sxf_4~*(29) */
20696 { reserved_block , 0 , 0 , 32,
20697 0xfc00ffff, 0xc0003d3c, 0 , 0,
20698 0x0 }, /* POOL32Sxf_4~*(30) */
20699 { reserved_block , 0 , 0 , 32,
20700 0xfc00ffff, 0xc0003f3c, 0 , 0,
20701 0x0 }, /* POOL32Sxf_4~*(31) */
20702 { reserved_block , 0 , 0 , 32,
20703 0xfc00ffff, 0xc000413c, 0 , 0,
20704 0x0 }, /* POOL32Sxf_4~*(32) */
20705 { reserved_block , 0 , 0 , 32,
20706 0xfc00ffff, 0xc000433c, 0 , 0,
20707 0x0 }, /* POOL32Sxf_4~*(33) */
20708 { reserved_block , 0 , 0 , 32,
20709 0xfc00ffff, 0xc000453c, 0 , 0,
20710 0x0 }, /* POOL32Sxf_4~*(34) */
20711 { reserved_block , 0 , 0 , 32,
20712 0xfc00ffff, 0xc000473c, 0 , 0,
20713 0x0 }, /* POOL32Sxf_4~*(35) */
20714 { reserved_block , 0 , 0 , 32,
20715 0xfc00ffff, 0xc000493c, 0 , 0,
20716 0x0 }, /* POOL32Sxf_4~*(36) */
20717 { instruction , 0 , 0 , 32,
20718 0xfc00ffff, 0xc0004b3c, &NMD::DCLO , 0,
20719 MIPS64_ }, /* DCLO */
20720 { reserved_block , 0 , 0 , 32,
20721 0xfc00ffff, 0xc0004d3c, 0 , 0,
20722 0x0 }, /* POOL32Sxf_4~*(38) */
20723 { reserved_block , 0 , 0 , 32,
20724 0xfc00ffff, 0xc0004f3c, 0 , 0,
20725 0x0 }, /* POOL32Sxf_4~*(39) */
20726 { reserved_block , 0 , 0 , 32,
20727 0xfc00ffff, 0xc000513c, 0 , 0,
20728 0x0 }, /* POOL32Sxf_4~*(40) */
20729 { reserved_block , 0 , 0 , 32,
20730 0xfc00ffff, 0xc000533c, 0 , 0,
20731 0x0 }, /* POOL32Sxf_4~*(41) */
20732 { reserved_block , 0 , 0 , 32,
20733 0xfc00ffff, 0xc000553c, 0 , 0,
20734 0x0 }, /* POOL32Sxf_4~*(42) */
20735 { reserved_block , 0 , 0 , 32,
20736 0xfc00ffff, 0xc000573c, 0 , 0,
20737 0x0 }, /* POOL32Sxf_4~*(43) */
20738 { reserved_block , 0 , 0 , 32,
20739 0xfc00ffff, 0xc000593c, 0 , 0,
20740 0x0 }, /* POOL32Sxf_4~*(44) */
20741 { instruction , 0 , 0 , 32,
20742 0xfc00ffff, 0xc0005b3c, &NMD::DCLZ , 0,
20743 MIPS64_ }, /* DCLZ */
20744 { reserved_block , 0 , 0 , 32,
20745 0xfc00ffff, 0xc0005d3c, 0 , 0,
20746 0x0 }, /* POOL32Sxf_4~*(46) */
20747 { reserved_block , 0 , 0 , 32,
20748 0xfc00ffff, 0xc0005f3c, 0 , 0,
20749 0x0 }, /* POOL32Sxf_4~*(47) */
20750 { reserved_block , 0 , 0 , 32,
20751 0xfc00ffff, 0xc000613c, 0 , 0,
20752 0x0 }, /* POOL32Sxf_4~*(48) */
20753 { reserved_block , 0 , 0 , 32,
20754 0xfc00ffff, 0xc000633c, 0 , 0,
20755 0x0 }, /* POOL32Sxf_4~*(49) */
20756 { reserved_block , 0 , 0 , 32,
20757 0xfc00ffff, 0xc000653c, 0 , 0,
20758 0x0 }, /* POOL32Sxf_4~*(50) */
20759 { reserved_block , 0 , 0 , 32,
20760 0xfc00ffff, 0xc000673c, 0 , 0,
20761 0x0 }, /* POOL32Sxf_4~*(51) */
20762 { reserved_block , 0 , 0 , 32,
20763 0xfc00ffff, 0xc000693c, 0 , 0,
20764 0x0 }, /* POOL32Sxf_4~*(52) */
20765 { reserved_block , 0 , 0 , 32,
20766 0xfc00ffff, 0xc0006b3c, 0 , 0,
20767 0x0 }, /* POOL32Sxf_4~*(53) */
20768 { reserved_block , 0 , 0 , 32,
20769 0xfc00ffff, 0xc0006d3c, 0 , 0,
20770 0x0 }, /* POOL32Sxf_4~*(54) */
20771 { reserved_block , 0 , 0 , 32,
20772 0xfc00ffff, 0xc0006f3c, 0 , 0,
20773 0x0 }, /* POOL32Sxf_4~*(55) */
20774 { reserved_block , 0 , 0 , 32,
20775 0xfc00ffff, 0xc000713c, 0 , 0,
20776 0x0 }, /* POOL32Sxf_4~*(56) */
20777 { reserved_block , 0 , 0 , 32,
20778 0xfc00ffff, 0xc000733c, 0 , 0,
20779 0x0 }, /* POOL32Sxf_4~*(57) */
20780 { reserved_block , 0 , 0 , 32,
20781 0xfc00ffff, 0xc000753c, 0 , 0,
20782 0x0 }, /* POOL32Sxf_4~*(58) */
20783 { reserved_block , 0 , 0 , 32,
20784 0xfc00ffff, 0xc000773c, 0 , 0,
20785 0x0 }, /* POOL32Sxf_4~*(59) */
20786 { reserved_block , 0 , 0 , 32,
20787 0xfc00ffff, 0xc000793c, 0 , 0,
20788 0x0 }, /* POOL32Sxf_4~*(60) */
20789 { reserved_block , 0 , 0 , 32,
20790 0xfc00ffff, 0xc0007b3c, 0 , 0,
20791 0x0 }, /* POOL32Sxf_4~*(61) */
20792 { reserved_block , 0 , 0 , 32,
20793 0xfc00ffff, 0xc0007d3c, 0 , 0,
20794 0x0 }, /* POOL32Sxf_4~*(62) */
20795 { reserved_block , 0 , 0 , 32,
20796 0xfc00ffff, 0xc0007f3c, 0 , 0,
20797 0x0 }, /* POOL32Sxf_4~*(63) */
20798 { reserved_block , 0 , 0 , 32,
20799 0xfc00ffff, 0xc000813c, 0 , 0,
20800 0x0 }, /* POOL32Sxf_4~*(64) */
20801 { reserved_block , 0 , 0 , 32,
20802 0xfc00ffff, 0xc000833c, 0 , 0,
20803 0x0 }, /* POOL32Sxf_4~*(65) */
20804 { reserved_block , 0 , 0 , 32,
20805 0xfc00ffff, 0xc000853c, 0 , 0,
20806 0x0 }, /* POOL32Sxf_4~*(66) */
20807 { reserved_block , 0 , 0 , 32,
20808 0xfc00ffff, 0xc000873c, 0 , 0,
20809 0x0 }, /* POOL32Sxf_4~*(67) */
20810 { reserved_block , 0 , 0 , 32,
20811 0xfc00ffff, 0xc000893c, 0 , 0,
20812 0x0 }, /* POOL32Sxf_4~*(68) */
20813 { reserved_block , 0 , 0 , 32,
20814 0xfc00ffff, 0xc0008b3c, 0 , 0,
20815 0x0 }, /* POOL32Sxf_4~*(69) */
20816 { reserved_block , 0 , 0 , 32,
20817 0xfc00ffff, 0xc0008d3c, 0 , 0,
20818 0x0 }, /* POOL32Sxf_4~*(70) */
20819 { reserved_block , 0 , 0 , 32,
20820 0xfc00ffff, 0xc0008f3c, 0 , 0,
20821 0x0 }, /* POOL32Sxf_4~*(71) */
20822 { reserved_block , 0 , 0 , 32,
20823 0xfc00ffff, 0xc000913c, 0 , 0,
20824 0x0 }, /* POOL32Sxf_4~*(72) */
20825 { reserved_block , 0 , 0 , 32,
20826 0xfc00ffff, 0xc000933c, 0 , 0,
20827 0x0 }, /* POOL32Sxf_4~*(73) */
20828 { reserved_block , 0 , 0 , 32,
20829 0xfc00ffff, 0xc000953c, 0 , 0,
20830 0x0 }, /* POOL32Sxf_4~*(74) */
20831 { reserved_block , 0 , 0 , 32,
20832 0xfc00ffff, 0xc000973c, 0 , 0,
20833 0x0 }, /* POOL32Sxf_4~*(75) */
20834 { reserved_block , 0 , 0 , 32,
20835 0xfc00ffff, 0xc000993c, 0 , 0,
20836 0x0 }, /* POOL32Sxf_4~*(76) */
20837 { reserved_block , 0 , 0 , 32,
20838 0xfc00ffff, 0xc0009b3c, 0 , 0,
20839 0x0 }, /* POOL32Sxf_4~*(77) */
20840 { reserved_block , 0 , 0 , 32,
20841 0xfc00ffff, 0xc0009d3c, 0 , 0,
20842 0x0 }, /* POOL32Sxf_4~*(78) */
20843 { reserved_block , 0 , 0 , 32,
20844 0xfc00ffff, 0xc0009f3c, 0 , 0,
20845 0x0 }, /* POOL32Sxf_4~*(79) */
20846 { reserved_block , 0 , 0 , 32,
20847 0xfc00ffff, 0xc000a13c, 0 , 0,
20848 0x0 }, /* POOL32Sxf_4~*(80) */
20849 { reserved_block , 0 , 0 , 32,
20850 0xfc00ffff, 0xc000a33c, 0 , 0,
20851 0x0 }, /* POOL32Sxf_4~*(81) */
20852 { reserved_block , 0 , 0 , 32,
20853 0xfc00ffff, 0xc000a53c, 0 , 0,
20854 0x0 }, /* POOL32Sxf_4~*(82) */
20855 { reserved_block , 0 , 0 , 32,
20856 0xfc00ffff, 0xc000a73c, 0 , 0,
20857 0x0 }, /* POOL32Sxf_4~*(83) */
20858 { reserved_block , 0 , 0 , 32,
20859 0xfc00ffff, 0xc000a93c, 0 , 0,
20860 0x0 }, /* POOL32Sxf_4~*(84) */
20861 { reserved_block , 0 , 0 , 32,
20862 0xfc00ffff, 0xc000ab3c, 0 , 0,
20863 0x0 }, /* POOL32Sxf_4~*(85) */
20864 { reserved_block , 0 , 0 , 32,
20865 0xfc00ffff, 0xc000ad3c, 0 , 0,
20866 0x0 }, /* POOL32Sxf_4~*(86) */
20867 { reserved_block , 0 , 0 , 32,
20868 0xfc00ffff, 0xc000af3c, 0 , 0,
20869 0x0 }, /* POOL32Sxf_4~*(87) */
20870 { reserved_block , 0 , 0 , 32,
20871 0xfc00ffff, 0xc000b13c, 0 , 0,
20872 0x0 }, /* POOL32Sxf_4~*(88) */
20873 { reserved_block , 0 , 0 , 32,
20874 0xfc00ffff, 0xc000b33c, 0 , 0,
20875 0x0 }, /* POOL32Sxf_4~*(89) */
20876 { reserved_block , 0 , 0 , 32,
20877 0xfc00ffff, 0xc000b53c, 0 , 0,
20878 0x0 }, /* POOL32Sxf_4~*(90) */
20879 { reserved_block , 0 , 0 , 32,
20880 0xfc00ffff, 0xc000b73c, 0 , 0,
20881 0x0 }, /* POOL32Sxf_4~*(91) */
20882 { reserved_block , 0 , 0 , 32,
20883 0xfc00ffff, 0xc000b93c, 0 , 0,
20884 0x0 }, /* POOL32Sxf_4~*(92) */
20885 { reserved_block , 0 , 0 , 32,
20886 0xfc00ffff, 0xc000bb3c, 0 , 0,
20887 0x0 }, /* POOL32Sxf_4~*(93) */
20888 { reserved_block , 0 , 0 , 32,
20889 0xfc00ffff, 0xc000bd3c, 0 , 0,
20890 0x0 }, /* POOL32Sxf_4~*(94) */
20891 { reserved_block , 0 , 0 , 32,
20892 0xfc00ffff, 0xc000bf3c, 0 , 0,
20893 0x0 }, /* POOL32Sxf_4~*(95) */
20894 { reserved_block , 0 , 0 , 32,
20895 0xfc00ffff, 0xc000c13c, 0 , 0,
20896 0x0 }, /* POOL32Sxf_4~*(96) */
20897 { reserved_block , 0 , 0 , 32,
20898 0xfc00ffff, 0xc000c33c, 0 , 0,
20899 0x0 }, /* POOL32Sxf_4~*(97) */
20900 { reserved_block , 0 , 0 , 32,
20901 0xfc00ffff, 0xc000c53c, 0 , 0,
20902 0x0 }, /* POOL32Sxf_4~*(98) */
20903 { reserved_block , 0 , 0 , 32,
20904 0xfc00ffff, 0xc000c73c, 0 , 0,
20905 0x0 }, /* POOL32Sxf_4~*(99) */
20906 { reserved_block , 0 , 0 , 32,
20907 0xfc00ffff, 0xc000c93c, 0 , 0,
20908 0x0 }, /* POOL32Sxf_4~*(100) */
20909 { reserved_block , 0 , 0 , 32,
20910 0xfc00ffff, 0xc000cb3c, 0 , 0,
20911 0x0 }, /* POOL32Sxf_4~*(101) */
20912 { reserved_block , 0 , 0 , 32,
20913 0xfc00ffff, 0xc000cd3c, 0 , 0,
20914 0x0 }, /* POOL32Sxf_4~*(102) */
20915 { reserved_block , 0 , 0 , 32,
20916 0xfc00ffff, 0xc000cf3c, 0 , 0,
20917 0x0 }, /* POOL32Sxf_4~*(103) */
20918 { reserved_block , 0 , 0 , 32,
20919 0xfc00ffff, 0xc000d13c, 0 , 0,
20920 0x0 }, /* POOL32Sxf_4~*(104) */
20921 { reserved_block , 0 , 0 , 32,
20922 0xfc00ffff, 0xc000d33c, 0 , 0,
20923 0x0 }, /* POOL32Sxf_4~*(105) */
20924 { reserved_block , 0 , 0 , 32,
20925 0xfc00ffff, 0xc000d53c, 0 , 0,
20926 0x0 }, /* POOL32Sxf_4~*(106) */
20927 { reserved_block , 0 , 0 , 32,
20928 0xfc00ffff, 0xc000d73c, 0 , 0,
20929 0x0 }, /* POOL32Sxf_4~*(107) */
20930 { reserved_block , 0 , 0 , 32,
20931 0xfc00ffff, 0xc000d93c, 0 , 0,
20932 0x0 }, /* POOL32Sxf_4~*(108) */
20933 { reserved_block , 0 , 0 , 32,
20934 0xfc00ffff, 0xc000db3c, 0 , 0,
20935 0x0 }, /* POOL32Sxf_4~*(109) */
20936 { reserved_block , 0 , 0 , 32,
20937 0xfc00ffff, 0xc000dd3c, 0 , 0,
20938 0x0 }, /* POOL32Sxf_4~*(110) */
20939 { reserved_block , 0 , 0 , 32,
20940 0xfc00ffff, 0xc000df3c, 0 , 0,
20941 0x0 }, /* POOL32Sxf_4~*(111) */
20942 { reserved_block , 0 , 0 , 32,
20943 0xfc00ffff, 0xc000e13c, 0 , 0,
20944 0x0 }, /* POOL32Sxf_4~*(112) */
20945 { reserved_block , 0 , 0 , 32,
20946 0xfc00ffff, 0xc000e33c, 0 , 0,
20947 0x0 }, /* POOL32Sxf_4~*(113) */
20948 { reserved_block , 0 , 0 , 32,
20949 0xfc00ffff, 0xc000e53c, 0 , 0,
20950 0x0 }, /* POOL32Sxf_4~*(114) */
20951 { reserved_block , 0 , 0 , 32,
20952 0xfc00ffff, 0xc000e73c, 0 , 0,
20953 0x0 }, /* POOL32Sxf_4~*(115) */
20954 { reserved_block , 0 , 0 , 32,
20955 0xfc00ffff, 0xc000e93c, 0 , 0,
20956 0x0 }, /* POOL32Sxf_4~*(116) */
20957 { reserved_block , 0 , 0 , 32,
20958 0xfc00ffff, 0xc000eb3c, 0 , 0,
20959 0x0 }, /* POOL32Sxf_4~*(117) */
20960 { reserved_block , 0 , 0 , 32,
20961 0xfc00ffff, 0xc000ed3c, 0 , 0,
20962 0x0 }, /* POOL32Sxf_4~*(118) */
20963 { reserved_block , 0 , 0 , 32,
20964 0xfc00ffff, 0xc000ef3c, 0 , 0,
20965 0x0 }, /* POOL32Sxf_4~*(119) */
20966 { reserved_block , 0 , 0 , 32,
20967 0xfc00ffff, 0xc000f13c, 0 , 0,
20968 0x0 }, /* POOL32Sxf_4~*(120) */
20969 { reserved_block , 0 , 0 , 32,
20970 0xfc00ffff, 0xc000f33c, 0 , 0,
20971 0x0 }, /* POOL32Sxf_4~*(121) */
20972 { reserved_block , 0 , 0 , 32,
20973 0xfc00ffff, 0xc000f53c, 0 , 0,
20974 0x0 }, /* POOL32Sxf_4~*(122) */
20975 { reserved_block , 0 , 0 , 32,
20976 0xfc00ffff, 0xc000f73c, 0 , 0,
20977 0x0 }, /* POOL32Sxf_4~*(123) */
20978 { reserved_block , 0 , 0 , 32,
20979 0xfc00ffff, 0xc000f93c, 0 , 0,
20980 0x0 }, /* POOL32Sxf_4~*(124) */
20981 { reserved_block , 0 , 0 , 32,
20982 0xfc00ffff, 0xc000fb3c, 0 , 0,
20983 0x0 }, /* POOL32Sxf_4~*(125) */
20984 { reserved_block , 0 , 0 , 32,
20985 0xfc00ffff, 0xc000fd3c, 0 , 0,
20986 0x0 }, /* POOL32Sxf_4~*(126) */
20987 { reserved_block , 0 , 0 , 32,
20988 0xfc00ffff, 0xc000ff3c, 0 , 0,
20989 0x0 }, /* POOL32Sxf_4~*(127) */
20993 NMD::Pool NMD::POOL32Sxf[8] = {
20994 { reserved_block , 0 , 0 , 32,
20995 0xfc0001ff, 0xc000003c, 0 , 0,
20996 0x0 }, /* POOL32Sxf~*(0) */
20997 { reserved_block , 0 , 0 , 32,
20998 0xfc0001ff, 0xc000007c, 0 , 0,
20999 0x0 }, /* POOL32Sxf~*(1) */
21000 { reserved_block , 0 , 0 , 32,
21001 0xfc0001ff, 0xc00000bc, 0 , 0,
21002 0x0 }, /* POOL32Sxf~*(2) */
21003 { reserved_block , 0 , 0 , 32,
21004 0xfc0001ff, 0xc00000fc, 0 , 0,
21005 0x0 }, /* POOL32Sxf~*(3) */
21006 { pool , POOL32Sxf_4 , 128 , 32,
21007 0xfc0001ff, 0xc000013c, 0 , 0,
21008 0x0 }, /* POOL32Sxf_4 */
21009 { reserved_block , 0 , 0 , 32,
21010 0xfc0001ff, 0xc000017c, 0 , 0,
21011 0x0 }, /* POOL32Sxf~*(5) */
21012 { reserved_block , 0 , 0 , 32,
21013 0xfc0001ff, 0xc00001bc, 0 , 0,
21014 0x0 }, /* POOL32Sxf~*(6) */
21015 { reserved_block , 0 , 0 , 32,
21016 0xfc0001ff, 0xc00001fc, 0 , 0,
21017 0x0 }, /* POOL32Sxf~*(7) */
21021 NMD::Pool NMD::POOL32S_4[8] = {
21022 { instruction , 0 , 0 , 32,
21023 0xfc00003f, 0xc0000004, &NMD::EXTD , 0,
21024 MIPS64_ }, /* EXTD */
21025 { instruction , 0 , 0 , 32,
21026 0xfc00003f, 0xc000000c, &NMD::EXTD32 , 0,
21027 MIPS64_ }, /* EXTD32 */
21028 { reserved_block , 0 , 0 , 32,
21029 0xfc00003f, 0xc0000014, 0 , 0,
21030 0x0 }, /* POOL32S_4~*(2) */
21031 { reserved_block , 0 , 0 , 32,
21032 0xfc00003f, 0xc000001c, 0 , 0,
21033 0x0 }, /* POOL32S_4~*(3) */
21034 { reserved_block , 0 , 0 , 32,
21035 0xfc00003f, 0xc0000024, 0 , 0,
21036 0x0 }, /* POOL32S_4~*(4) */
21037 { reserved_block , 0 , 0 , 32,
21038 0xfc00003f, 0xc000002c, 0 , 0,
21039 0x0 }, /* POOL32S_4~*(5) */
21040 { reserved_block , 0 , 0 , 32,
21041 0xfc00003f, 0xc0000034, 0 , 0,
21042 0x0 }, /* POOL32S_4~*(6) */
21043 { pool , POOL32Sxf , 8 , 32,
21044 0xfc00003f, 0xc000003c, 0 , 0,
21045 0x0 }, /* POOL32Sxf */
21049 NMD::Pool NMD::POOL32S[8] = {
21050 { pool , POOL32S_0 , 64 , 32,
21051 0xfc000007, 0xc0000000, 0 , 0,
21052 0x0 }, /* POOL32S_0 */
21053 { reserved_block , 0 , 0 , 32,
21054 0xfc000007, 0xc0000001, 0 , 0,
21055 0x0 }, /* POOL32S~*(1) */
21056 { reserved_block , 0 , 0 , 32,
21057 0xfc000007, 0xc0000002, 0 , 0,
21058 0x0 }, /* POOL32S~*(2) */
21059 { reserved_block , 0 , 0 , 32,
21060 0xfc000007, 0xc0000003, 0 , 0,
21061 0x0 }, /* POOL32S~*(3) */
21062 { pool , POOL32S_4 , 8 , 32,
21063 0xfc000007, 0xc0000004, 0 , 0,
21064 0x0 }, /* POOL32S_4 */
21065 { reserved_block , 0 , 0 , 32,
21066 0xfc000007, 0xc0000005, 0 , 0,
21067 0x0 }, /* POOL32S~*(5) */
21068 { reserved_block , 0 , 0 , 32,
21069 0xfc000007, 0xc0000006, 0 , 0,
21070 0x0 }, /* POOL32S~*(6) */
21071 { reserved_block , 0 , 0 , 32,
21072 0xfc000007, 0xc0000007, 0 , 0,
21073 0x0 }, /* POOL32S~*(7) */
21077 NMD::Pool NMD::P_LUI[2] = {
21078 { instruction , 0 , 0 , 32,
21079 0xfc000002, 0xe0000000, &NMD::LUI , 0,
21080 0x0 }, /* LUI */
21081 { instruction , 0 , 0 , 32,
21082 0xfc000002, 0xe0000002, &NMD::ALUIPC , 0,
21083 0x0 }, /* ALUIPC */
21087 NMD::Pool NMD::P_GP_LH[2] = {
21088 { instruction , 0 , 0 , 32,
21089 0xfc1c0001, 0x44100000, &NMD::LH_GP_ , 0,
21090 0x0 }, /* LH[GP] */
21091 { instruction , 0 , 0 , 32,
21092 0xfc1c0001, 0x44100001, &NMD::LHU_GP_ , 0,
21093 0x0 }, /* LHU[GP] */
21097 NMD::Pool NMD::P_GP_SH[2] = {
21098 { instruction , 0 , 0 , 32,
21099 0xfc1c0001, 0x44140000, &NMD::SH_GP_ , 0,
21100 0x0 }, /* SH[GP] */
21101 { reserved_block , 0 , 0 , 32,
21102 0xfc1c0001, 0x44140001, 0 , 0,
21103 0x0 }, /* P.GP.SH~*(1) */
21107 NMD::Pool NMD::P_GP_CP1[4] = {
21108 { instruction , 0 , 0 , 32,
21109 0xfc1c0003, 0x44180000, &NMD::LWC1_GP_ , 0,
21110 CP1_ }, /* LWC1[GP] */
21111 { instruction , 0 , 0 , 32,
21112 0xfc1c0003, 0x44180001, &NMD::SWC1_GP_ , 0,
21113 CP1_ }, /* SWC1[GP] */
21114 { instruction , 0 , 0 , 32,
21115 0xfc1c0003, 0x44180002, &NMD::LDC1_GP_ , 0,
21116 CP1_ }, /* LDC1[GP] */
21117 { instruction , 0 , 0 , 32,
21118 0xfc1c0003, 0x44180003, &NMD::SDC1_GP_ , 0,
21119 CP1_ }, /* SDC1[GP] */
21123 NMD::Pool NMD::P_GP_M64[4] = {
21124 { instruction , 0 , 0 , 32,
21125 0xfc1c0003, 0x441c0000, &NMD::LWU_GP_ , 0,
21126 MIPS64_ }, /* LWU[GP] */
21127 { reserved_block , 0 , 0 , 32,
21128 0xfc1c0003, 0x441c0001, 0 , 0,
21129 0x0 }, /* P.GP.M64~*(1) */
21130 { reserved_block , 0 , 0 , 32,
21131 0xfc1c0003, 0x441c0002, 0 , 0,
21132 0x0 }, /* P.GP.M64~*(2) */
21133 { reserved_block , 0 , 0 , 32,
21134 0xfc1c0003, 0x441c0003, 0 , 0,
21135 0x0 }, /* P.GP.M64~*(3) */
21139 NMD::Pool NMD::P_GP_BH[8] = {
21140 { instruction , 0 , 0 , 32,
21141 0xfc1c0000, 0x44000000, &NMD::LB_GP_ , 0,
21142 0x0 }, /* LB[GP] */
21143 { instruction , 0 , 0 , 32,
21144 0xfc1c0000, 0x44040000, &NMD::SB_GP_ , 0,
21145 0x0 }, /* SB[GP] */
21146 { instruction , 0 , 0 , 32,
21147 0xfc1c0000, 0x44080000, &NMD::LBU_GP_ , 0,
21148 0x0 }, /* LBU[GP] */
21149 { instruction , 0 , 0 , 32,
21150 0xfc1c0000, 0x440c0000, &NMD::ADDIU_GP_B_ , 0,
21151 0x0 }, /* ADDIU[GP.B] */
21152 { pool , P_GP_LH , 2 , 32,
21153 0xfc1c0000, 0x44100000, 0 , 0,
21154 0x0 }, /* P.GP.LH */
21155 { pool , P_GP_SH , 2 , 32,
21156 0xfc1c0000, 0x44140000, 0 , 0,
21157 0x0 }, /* P.GP.SH */
21158 { pool , P_GP_CP1 , 4 , 32,
21159 0xfc1c0000, 0x44180000, 0 , 0,
21160 0x0 }, /* P.GP.CP1 */
21161 { pool , P_GP_M64 , 4 , 32,
21162 0xfc1c0000, 0x441c0000, 0 , 0,
21163 0x0 }, /* P.GP.M64 */
21167 NMD::Pool NMD::P_LS_U12[16] = {
21168 { instruction , 0 , 0 , 32,
21169 0xfc00f000, 0x84000000, &NMD::LB_U12_ , 0,
21170 0x0 }, /* LB[U12] */
21171 { instruction , 0 , 0 , 32,
21172 0xfc00f000, 0x84001000, &NMD::SB_U12_ , 0,
21173 0x0 }, /* SB[U12] */
21174 { instruction , 0 , 0 , 32,
21175 0xfc00f000, 0x84002000, &NMD::LBU_U12_ , 0,
21176 0x0 }, /* LBU[U12] */
21177 { instruction , 0 , 0 , 32,
21178 0xfc00f000, 0x84003000, &NMD::PREF_U12_ , 0,
21179 0x0 }, /* PREF[U12] */
21180 { instruction , 0 , 0 , 32,
21181 0xfc00f000, 0x84004000, &NMD::LH_U12_ , 0,
21182 0x0 }, /* LH[U12] */
21183 { instruction , 0 , 0 , 32,
21184 0xfc00f000, 0x84005000, &NMD::SH_U12_ , 0,
21185 0x0 }, /* SH[U12] */
21186 { instruction , 0 , 0 , 32,
21187 0xfc00f000, 0x84006000, &NMD::LHU_U12_ , 0,
21188 0x0 }, /* LHU[U12] */
21189 { instruction , 0 , 0 , 32,
21190 0xfc00f000, 0x84007000, &NMD::LWU_U12_ , 0,
21191 MIPS64_ }, /* LWU[U12] */
21192 { instruction , 0 , 0 , 32,
21193 0xfc00f000, 0x84008000, &NMD::LW_U12_ , 0,
21194 0x0 }, /* LW[U12] */
21195 { instruction , 0 , 0 , 32,
21196 0xfc00f000, 0x84009000, &NMD::SW_U12_ , 0,
21197 0x0 }, /* SW[U12] */
21198 { instruction , 0 , 0 , 32,
21199 0xfc00f000, 0x8400a000, &NMD::LWC1_U12_ , 0,
21200 CP1_ }, /* LWC1[U12] */
21201 { instruction , 0 , 0 , 32,
21202 0xfc00f000, 0x8400b000, &NMD::SWC1_U12_ , 0,
21203 CP1_ }, /* SWC1[U12] */
21204 { instruction , 0 , 0 , 32,
21205 0xfc00f000, 0x8400c000, &NMD::LD_U12_ , 0,
21206 MIPS64_ }, /* LD[U12] */
21207 { instruction , 0 , 0 , 32,
21208 0xfc00f000, 0x8400d000, &NMD::SD_U12_ , 0,
21209 MIPS64_ }, /* SD[U12] */
21210 { instruction , 0 , 0 , 32,
21211 0xfc00f000, 0x8400e000, &NMD::LDC1_U12_ , 0,
21212 CP1_ }, /* LDC1[U12] */
21213 { instruction , 0 , 0 , 32,
21214 0xfc00f000, 0x8400f000, &NMD::SDC1_U12_ , 0,
21215 CP1_ }, /* SDC1[U12] */
21219 NMD::Pool NMD::P_PREF_S9_[2] = {
21220 { instruction , 0 , 0 , 32,
21221 0xffe07f00, 0xa7e01800, &NMD::SYNCI , 0,
21222 0x0 }, /* SYNCI */
21223 { instruction , 0 , 0 , 32,
21224 0xfc007f00, 0xa4001800, &NMD::PREF_S9_ , &NMD::PREF_S9__cond ,
21225 0x0 }, /* PREF[S9] */
21229 NMD::Pool NMD::P_LS_S0[16] = {
21230 { instruction , 0 , 0 , 32,
21231 0xfc007f00, 0xa4000000, &NMD::LB_S9_ , 0,
21232 0x0 }, /* LB[S9] */
21233 { instruction , 0 , 0 , 32,
21234 0xfc007f00, 0xa4000800, &NMD::SB_S9_ , 0,
21235 0x0 }, /* SB[S9] */
21236 { instruction , 0 , 0 , 32,
21237 0xfc007f00, 0xa4001000, &NMD::LBU_S9_ , 0,
21238 0x0 }, /* LBU[S9] */
21239 { pool , P_PREF_S9_ , 2 , 32,
21240 0xfc007f00, 0xa4001800, 0 , 0,
21241 0x0 }, /* P.PREF[S9] */
21242 { instruction , 0 , 0 , 32,
21243 0xfc007f00, 0xa4002000, &NMD::LH_S9_ , 0,
21244 0x0 }, /* LH[S9] */
21245 { instruction , 0 , 0 , 32,
21246 0xfc007f00, 0xa4002800, &NMD::SH_S9_ , 0,
21247 0x0 }, /* SH[S9] */
21248 { instruction , 0 , 0 , 32,
21249 0xfc007f00, 0xa4003000, &NMD::LHU_S9_ , 0,
21250 0x0 }, /* LHU[S9] */
21251 { instruction , 0 , 0 , 32,
21252 0xfc007f00, 0xa4003800, &NMD::LWU_S9_ , 0,
21253 MIPS64_ }, /* LWU[S9] */
21254 { instruction , 0 , 0 , 32,
21255 0xfc007f00, 0xa4004000, &NMD::LW_S9_ , 0,
21256 0x0 }, /* LW[S9] */
21257 { instruction , 0 , 0 , 32,
21258 0xfc007f00, 0xa4004800, &NMD::SW_S9_ , 0,
21259 0x0 }, /* SW[S9] */
21260 { instruction , 0 , 0 , 32,
21261 0xfc007f00, 0xa4005000, &NMD::LWC1_S9_ , 0,
21262 CP1_ }, /* LWC1[S9] */
21263 { instruction , 0 , 0 , 32,
21264 0xfc007f00, 0xa4005800, &NMD::SWC1_S9_ , 0,
21265 CP1_ }, /* SWC1[S9] */
21266 { instruction , 0 , 0 , 32,
21267 0xfc007f00, 0xa4006000, &NMD::LD_S9_ , 0,
21268 MIPS64_ }, /* LD[S9] */
21269 { instruction , 0 , 0 , 32,
21270 0xfc007f00, 0xa4006800, &NMD::SD_S9_ , 0,
21271 MIPS64_ }, /* SD[S9] */
21272 { instruction , 0 , 0 , 32,
21273 0xfc007f00, 0xa4007000, &NMD::LDC1_S9_ , 0,
21274 CP1_ }, /* LDC1[S9] */
21275 { instruction , 0 , 0 , 32,
21276 0xfc007f00, 0xa4007800, &NMD::SDC1_S9_ , 0,
21277 CP1_ }, /* SDC1[S9] */
21281 NMD::Pool NMD::ASET_ACLR[2] = {
21282 { instruction , 0 , 0 , 32,
21283 0xfe007f00, 0xa4001100, &NMD::ASET , 0,
21284 MCU_ }, /* ASET */
21285 { instruction , 0 , 0 , 32,
21286 0xfe007f00, 0xa6001100, &NMD::ACLR , 0,
21287 MCU_ }, /* ACLR */
21291 NMD::Pool NMD::P_LL[4] = {
21292 { instruction , 0 , 0 , 32,
21293 0xfc007f03, 0xa4005100, &NMD::LL , 0,
21294 0x0 }, /* LL */
21295 { instruction , 0 , 0 , 32,
21296 0xfc007f03, 0xa4005101, &NMD::LLWP , 0,
21297 XNP_ }, /* LLWP */
21298 { reserved_block , 0 , 0 , 32,
21299 0xfc007f03, 0xa4005102, 0 , 0,
21300 0x0 }, /* P.LL~*(2) */
21301 { reserved_block , 0 , 0 , 32,
21302 0xfc007f03, 0xa4005103, 0 , 0,
21303 0x0 }, /* P.LL~*(3) */
21307 NMD::Pool NMD::P_SC[4] = {
21308 { instruction , 0 , 0 , 32,
21309 0xfc007f03, 0xa4005900, &NMD::SC , 0,
21310 0x0 }, /* SC */
21311 { instruction , 0 , 0 , 32,
21312 0xfc007f03, 0xa4005901, &NMD::SCWP , 0,
21313 XNP_ }, /* SCWP */
21314 { reserved_block , 0 , 0 , 32,
21315 0xfc007f03, 0xa4005902, 0 , 0,
21316 0x0 }, /* P.SC~*(2) */
21317 { reserved_block , 0 , 0 , 32,
21318 0xfc007f03, 0xa4005903, 0 , 0,
21319 0x0 }, /* P.SC~*(3) */
21323 NMD::Pool NMD::P_LLD[8] = {
21324 { instruction , 0 , 0 , 32,
21325 0xfc007f07, 0xa4007100, &NMD::LLD , 0,
21326 MIPS64_ }, /* LLD */
21327 { instruction , 0 , 0 , 32,
21328 0xfc007f07, 0xa4007101, &NMD::LLDP , 0,
21329 MIPS64_ }, /* LLDP */
21330 { reserved_block , 0 , 0 , 32,
21331 0xfc007f07, 0xa4007102, 0 , 0,
21332 0x0 }, /* P.LLD~*(2) */
21333 { reserved_block , 0 , 0 , 32,
21334 0xfc007f07, 0xa4007103, 0 , 0,
21335 0x0 }, /* P.LLD~*(3) */
21336 { reserved_block , 0 , 0 , 32,
21337 0xfc007f07, 0xa4007104, 0 , 0,
21338 0x0 }, /* P.LLD~*(4) */
21339 { reserved_block , 0 , 0 , 32,
21340 0xfc007f07, 0xa4007105, 0 , 0,
21341 0x0 }, /* P.LLD~*(5) */
21342 { reserved_block , 0 , 0 , 32,
21343 0xfc007f07, 0xa4007106, 0 , 0,
21344 0x0 }, /* P.LLD~*(6) */
21345 { reserved_block , 0 , 0 , 32,
21346 0xfc007f07, 0xa4007107, 0 , 0,
21347 0x0 }, /* P.LLD~*(7) */
21351 NMD::Pool NMD::P_SCD[8] = {
21352 { instruction , 0 , 0 , 32,
21353 0xfc007f07, 0xa4007900, &NMD::SCD , 0,
21354 MIPS64_ }, /* SCD */
21355 { instruction , 0 , 0 , 32,
21356 0xfc007f07, 0xa4007901, &NMD::SCDP , 0,
21357 MIPS64_ }, /* SCDP */
21358 { reserved_block , 0 , 0 , 32,
21359 0xfc007f07, 0xa4007902, 0 , 0,
21360 0x0 }, /* P.SCD~*(2) */
21361 { reserved_block , 0 , 0 , 32,
21362 0xfc007f07, 0xa4007903, 0 , 0,
21363 0x0 }, /* P.SCD~*(3) */
21364 { reserved_block , 0 , 0 , 32,
21365 0xfc007f07, 0xa4007904, 0 , 0,
21366 0x0 }, /* P.SCD~*(4) */
21367 { reserved_block , 0 , 0 , 32,
21368 0xfc007f07, 0xa4007905, 0 , 0,
21369 0x0 }, /* P.SCD~*(5) */
21370 { reserved_block , 0 , 0 , 32,
21371 0xfc007f07, 0xa4007906, 0 , 0,
21372 0x0 }, /* P.SCD~*(6) */
21373 { reserved_block , 0 , 0 , 32,
21374 0xfc007f07, 0xa4007907, 0 , 0,
21375 0x0 }, /* P.SCD~*(7) */
21379 NMD::Pool NMD::P_LS_S1[16] = {
21380 { reserved_block , 0 , 0 , 32,
21381 0xfc007f00, 0xa4000100, 0 , 0,
21382 0x0 }, /* P.LS.S1~*(0) */
21383 { reserved_block , 0 , 0 , 32,
21384 0xfc007f00, 0xa4000900, 0 , 0,
21385 0x0 }, /* P.LS.S1~*(1) */
21386 { pool , ASET_ACLR , 2 , 32,
21387 0xfc007f00, 0xa4001100, 0 , 0,
21388 0x0 }, /* ASET_ACLR */
21389 { reserved_block , 0 , 0 , 32,
21390 0xfc007f00, 0xa4001900, 0 , 0,
21391 0x0 }, /* P.LS.S1~*(3) */
21392 { instruction , 0 , 0 , 32,
21393 0xfc007f00, 0xa4002100, &NMD::UALH , 0,
21394 XMMS_ }, /* UALH */
21395 { instruction , 0 , 0 , 32,
21396 0xfc007f00, 0xa4002900, &NMD::UASH , 0,
21397 XMMS_ }, /* UASH */
21398 { reserved_block , 0 , 0 , 32,
21399 0xfc007f00, 0xa4003100, 0 , 0,
21400 0x0 }, /* P.LS.S1~*(6) */
21401 { instruction , 0 , 0 , 32,
21402 0xfc007f00, 0xa4003900, &NMD::CACHE , 0,
21403 CP0_ }, /* CACHE */
21404 { instruction , 0 , 0 , 32,
21405 0xfc007f00, 0xa4004100, &NMD::LWC2 , 0,
21406 CP2_ }, /* LWC2 */
21407 { instruction , 0 , 0 , 32,
21408 0xfc007f00, 0xa4004900, &NMD::SWC2 , 0,
21409 CP2_ }, /* SWC2 */
21410 { pool , P_LL , 4 , 32,
21411 0xfc007f00, 0xa4005100, 0 , 0,
21412 0x0 }, /* P.LL */
21413 { pool , P_SC , 4 , 32,
21414 0xfc007f00, 0xa4005900, 0 , 0,
21415 0x0 }, /* P.SC */
21416 { instruction , 0 , 0 , 32,
21417 0xfc007f00, 0xa4006100, &NMD::LDC2 , 0,
21418 CP2_ }, /* LDC2 */
21419 { instruction , 0 , 0 , 32,
21420 0xfc007f00, 0xa4006900, &NMD::SDC2 , 0,
21421 CP2_ }, /* SDC2 */
21422 { pool , P_LLD , 8 , 32,
21423 0xfc007f00, 0xa4007100, 0 , 0,
21424 0x0 }, /* P.LLD */
21425 { pool , P_SCD , 8 , 32,
21426 0xfc007f00, 0xa4007900, 0 , 0,
21427 0x0 }, /* P.SCD */
21431 NMD::Pool NMD::P_PREFE[2] = {
21432 { instruction , 0 , 0 , 32,
21433 0xffe07f00, 0xa7e01a00, &NMD::SYNCIE , 0,
21434 CP0_ | EVA_ }, /* SYNCIE */
21435 { instruction , 0 , 0 , 32,
21436 0xfc007f00, 0xa4001a00, &NMD::PREFE , &NMD::PREFE_cond ,
21437 CP0_ | EVA_ }, /* PREFE */
21441 NMD::Pool NMD::P_LLE[4] = {
21442 { instruction , 0 , 0 , 32,
21443 0xfc007f03, 0xa4005200, &NMD::LLE , 0,
21444 CP0_ | EVA_ }, /* LLE */
21445 { instruction , 0 , 0 , 32,
21446 0xfc007f03, 0xa4005201, &NMD::LLWPE , 0,
21447 CP0_ | EVA_ }, /* LLWPE */
21448 { reserved_block , 0 , 0 , 32,
21449 0xfc007f03, 0xa4005202, 0 , 0,
21450 0x0 }, /* P.LLE~*(2) */
21451 { reserved_block , 0 , 0 , 32,
21452 0xfc007f03, 0xa4005203, 0 , 0,
21453 0x0 }, /* P.LLE~*(3) */
21457 NMD::Pool NMD::P_SCE[4] = {
21458 { instruction , 0 , 0 , 32,
21459 0xfc007f03, 0xa4005a00, &NMD::SCE , 0,
21460 CP0_ | EVA_ }, /* SCE */
21461 { instruction , 0 , 0 , 32,
21462 0xfc007f03, 0xa4005a01, &NMD::SCWPE , 0,
21463 CP0_ | EVA_ }, /* SCWPE */
21464 { reserved_block , 0 , 0 , 32,
21465 0xfc007f03, 0xa4005a02, 0 , 0,
21466 0x0 }, /* P.SCE~*(2) */
21467 { reserved_block , 0 , 0 , 32,
21468 0xfc007f03, 0xa4005a03, 0 , 0,
21469 0x0 }, /* P.SCE~*(3) */
21473 NMD::Pool NMD::P_LS_E0[16] = {
21474 { instruction , 0 , 0 , 32,
21475 0xfc007f00, 0xa4000200, &NMD::LBE , 0,
21476 CP0_ | EVA_ }, /* LBE */
21477 { instruction , 0 , 0 , 32,
21478 0xfc007f00, 0xa4000a00, &NMD::SBE , 0,
21479 CP0_ | EVA_ }, /* SBE */
21480 { instruction , 0 , 0 , 32,
21481 0xfc007f00, 0xa4001200, &NMD::LBUE , 0,
21482 CP0_ | EVA_ }, /* LBUE */
21483 { pool , P_PREFE , 2 , 32,
21484 0xfc007f00, 0xa4001a00, 0 , 0,
21485 0x0 }, /* P.PREFE */
21486 { instruction , 0 , 0 , 32,
21487 0xfc007f00, 0xa4002200, &NMD::LHE , 0,
21488 CP0_ | EVA_ }, /* LHE */
21489 { instruction , 0 , 0 , 32,
21490 0xfc007f00, 0xa4002a00, &NMD::SHE , 0,
21491 CP0_ | EVA_ }, /* SHE */
21492 { instruction , 0 , 0 , 32,
21493 0xfc007f00, 0xa4003200, &NMD::LHUE , 0,
21494 CP0_ | EVA_ }, /* LHUE */
21495 { instruction , 0 , 0 , 32,
21496 0xfc007f00, 0xa4003a00, &NMD::CACHEE , 0,
21497 CP0_ | EVA_ }, /* CACHEE */
21498 { instruction , 0 , 0 , 32,
21499 0xfc007f00, 0xa4004200, &NMD::LWE , 0,
21500 CP0_ | EVA_ }, /* LWE */
21501 { instruction , 0 , 0 , 32,
21502 0xfc007f00, 0xa4004a00, &NMD::SWE , 0,
21503 CP0_ | EVA_ }, /* SWE */
21504 { pool , P_LLE , 4 , 32,
21505 0xfc007f00, 0xa4005200, 0 , 0,
21506 0x0 }, /* P.LLE */
21507 { pool , P_SCE , 4 , 32,
21508 0xfc007f00, 0xa4005a00, 0 , 0,
21509 0x0 }, /* P.SCE */
21510 { reserved_block , 0 , 0 , 32,
21511 0xfc007f00, 0xa4006200, 0 , 0,
21512 0x0 }, /* P.LS.E0~*(12) */
21513 { reserved_block , 0 , 0 , 32,
21514 0xfc007f00, 0xa4006a00, 0 , 0,
21515 0x0 }, /* P.LS.E0~*(13) */
21516 { reserved_block , 0 , 0 , 32,
21517 0xfc007f00, 0xa4007200, 0 , 0,
21518 0x0 }, /* P.LS.E0~*(14) */
21519 { reserved_block , 0 , 0 , 32,
21520 0xfc007f00, 0xa4007a00, 0 , 0,
21521 0x0 }, /* P.LS.E0~*(15) */
21525 NMD::Pool NMD::P_LS_WM[2] = {
21526 { instruction , 0 , 0 , 32,
21527 0xfc000f00, 0xa4000400, &NMD::LWM , 0,
21528 XMMS_ }, /* LWM */
21529 { instruction , 0 , 0 , 32,
21530 0xfc000f00, 0xa4000c00, &NMD::SWM , 0,
21531 XMMS_ }, /* SWM */
21535 NMD::Pool NMD::P_LS_UAWM[2] = {
21536 { instruction , 0 , 0 , 32,
21537 0xfc000f00, 0xa4000500, &NMD::UALWM , 0,
21538 XMMS_ }, /* UALWM */
21539 { instruction , 0 , 0 , 32,
21540 0xfc000f00, 0xa4000d00, &NMD::UASWM , 0,
21541 XMMS_ }, /* UASWM */
21545 NMD::Pool NMD::P_LS_DM[2] = {
21546 { instruction , 0 , 0 , 32,
21547 0xfc000f00, 0xa4000600, &NMD::LDM , 0,
21548 MIPS64_ }, /* LDM */
21549 { instruction , 0 , 0 , 32,
21550 0xfc000f00, 0xa4000e00, &NMD::SDM , 0,
21551 MIPS64_ }, /* SDM */
21555 NMD::Pool NMD::P_LS_UADM[2] = {
21556 { instruction , 0 , 0 , 32,
21557 0xfc000f00, 0xa4000700, &NMD::UALDM , 0,
21558 MIPS64_ }, /* UALDM */
21559 { instruction , 0 , 0 , 32,
21560 0xfc000f00, 0xa4000f00, &NMD::UASDM , 0,
21561 MIPS64_ }, /* UASDM */
21565 NMD::Pool NMD::P_LS_S9[8] = {
21566 { pool , P_LS_S0 , 16 , 32,
21567 0xfc000700, 0xa4000000, 0 , 0,
21568 0x0 }, /* P.LS.S0 */
21569 { pool , P_LS_S1 , 16 , 32,
21570 0xfc000700, 0xa4000100, 0 , 0,
21571 0x0 }, /* P.LS.S1 */
21572 { pool , P_LS_E0 , 16 , 32,
21573 0xfc000700, 0xa4000200, 0 , 0,
21574 0x0 }, /* P.LS.E0 */
21575 { reserved_block , 0 , 0 , 32,
21576 0xfc000700, 0xa4000300, 0 , 0,
21577 0x0 }, /* P.LS.S9~*(3) */
21578 { pool , P_LS_WM , 2 , 32,
21579 0xfc000700, 0xa4000400, 0 , 0,
21580 0x0 }, /* P.LS.WM */
21581 { pool , P_LS_UAWM , 2 , 32,
21582 0xfc000700, 0xa4000500, 0 , 0,
21583 0x0 }, /* P.LS.UAWM */
21584 { pool , P_LS_DM , 2 , 32,
21585 0xfc000700, 0xa4000600, 0 , 0,
21586 0x0 }, /* P.LS.DM */
21587 { pool , P_LS_UADM , 2 , 32,
21588 0xfc000700, 0xa4000700, 0 , 0,
21589 0x0 }, /* P.LS.UADM */
21593 NMD::Pool NMD::P_BAL[2] = {
21594 { branch_instruction , 0 , 0 , 32,
21595 0xfe000000, 0x28000000, &NMD::BC_32_ , 0,
21596 0x0 }, /* BC[32] */
21597 { call_instruction , 0 , 0 , 32,
21598 0xfe000000, 0x2a000000, &NMD::BALC_32_ , 0,
21599 0x0 }, /* BALC[32] */
21603 NMD::Pool NMD::P_BALRSC[2] = {
21604 { branch_instruction , 0 , 0 , 32,
21605 0xffe0f000, 0x48008000, &NMD::BRSC , 0,
21606 0x0 }, /* BRSC */
21607 { call_instruction , 0 , 0 , 32,
21608 0xfc00f000, 0x48008000, &NMD::BALRSC , &NMD::BALRSC_cond ,
21609 0x0 }, /* BALRSC */
21613 NMD::Pool NMD::P_J[16] = {
21614 { call_instruction , 0 , 0 , 32,
21615 0xfc00f000, 0x48000000, &NMD::JALRC_32_ , 0,
21616 0x0 }, /* JALRC[32] */
21617 { call_instruction , 0 , 0 , 32,
21618 0xfc00f000, 0x48001000, &NMD::JALRC_HB , 0,
21619 0x0 }, /* JALRC.HB */
21620 { reserved_block , 0 , 0 , 32,
21621 0xfc00f000, 0x48002000, 0 , 0,
21622 0x0 }, /* P.J~*(2) */
21623 { reserved_block , 0 , 0 , 32,
21624 0xfc00f000, 0x48003000, 0 , 0,
21625 0x0 }, /* P.J~*(3) */
21626 { reserved_block , 0 , 0 , 32,
21627 0xfc00f000, 0x48004000, 0 , 0,
21628 0x0 }, /* P.J~*(4) */
21629 { reserved_block , 0 , 0 , 32,
21630 0xfc00f000, 0x48005000, 0 , 0,
21631 0x0 }, /* P.J~*(5) */
21632 { reserved_block , 0 , 0 , 32,
21633 0xfc00f000, 0x48006000, 0 , 0,
21634 0x0 }, /* P.J~*(6) */
21635 { reserved_block , 0 , 0 , 32,
21636 0xfc00f000, 0x48007000, 0 , 0,
21637 0x0 }, /* P.J~*(7) */
21638 { pool , P_BALRSC , 2 , 32,
21639 0xfc00f000, 0x48008000, 0 , 0,
21640 0x0 }, /* P.BALRSC */
21641 { reserved_block , 0 , 0 , 32,
21642 0xfc00f000, 0x48009000, 0 , 0,
21643 0x0 }, /* P.J~*(9) */
21644 { reserved_block , 0 , 0 , 32,
21645 0xfc00f000, 0x4800a000, 0 , 0,
21646 0x0 }, /* P.J~*(10) */
21647 { reserved_block , 0 , 0 , 32,
21648 0xfc00f000, 0x4800b000, 0 , 0,
21649 0x0 }, /* P.J~*(11) */
21650 { reserved_block , 0 , 0 , 32,
21651 0xfc00f000, 0x4800c000, 0 , 0,
21652 0x0 }, /* P.J~*(12) */
21653 { reserved_block , 0 , 0 , 32,
21654 0xfc00f000, 0x4800d000, 0 , 0,
21655 0x0 }, /* P.J~*(13) */
21656 { reserved_block , 0 , 0 , 32,
21657 0xfc00f000, 0x4800e000, 0 , 0,
21658 0x0 }, /* P.J~*(14) */
21659 { reserved_block , 0 , 0 , 32,
21660 0xfc00f000, 0x4800f000, 0 , 0,
21661 0x0 }, /* P.J~*(15) */
21665 NMD::Pool NMD::P_BR3A[32] = {
21666 { branch_instruction , 0 , 0 , 32,
21667 0xfc1fc000, 0x88004000, &NMD::BC1EQZC , 0,
21668 CP1_ }, /* BC1EQZC */
21669 { branch_instruction , 0 , 0 , 32,
21670 0xfc1fc000, 0x88014000, &NMD::BC1NEZC , 0,
21671 CP1_ }, /* BC1NEZC */
21672 { branch_instruction , 0 , 0 , 32,
21673 0xfc1fc000, 0x88024000, &NMD::BC2EQZC , 0,
21674 CP2_ }, /* BC2EQZC */
21675 { branch_instruction , 0 , 0 , 32,
21676 0xfc1fc000, 0x88034000, &NMD::BC2NEZC , 0,
21677 CP2_ }, /* BC2NEZC */
21678 { branch_instruction , 0 , 0 , 32,
21679 0xfc1fc000, 0x88044000, &NMD::BPOSGE32C , 0,
21680 DSP_ }, /* BPOSGE32C */
21681 { reserved_block , 0 , 0 , 32,
21682 0xfc1fc000, 0x88054000, 0 , 0,
21683 0x0 }, /* P.BR3A~*(5) */
21684 { reserved_block , 0 , 0 , 32,
21685 0xfc1fc000, 0x88064000, 0 , 0,
21686 0x0 }, /* P.BR3A~*(6) */
21687 { reserved_block , 0 , 0 , 32,
21688 0xfc1fc000, 0x88074000, 0 , 0,
21689 0x0 }, /* P.BR3A~*(7) */
21690 { reserved_block , 0 , 0 , 32,
21691 0xfc1fc000, 0x88084000, 0 , 0,
21692 0x0 }, /* P.BR3A~*(8) */
21693 { reserved_block , 0 , 0 , 32,
21694 0xfc1fc000, 0x88094000, 0 , 0,
21695 0x0 }, /* P.BR3A~*(9) */
21696 { reserved_block , 0 , 0 , 32,
21697 0xfc1fc000, 0x880a4000, 0 , 0,
21698 0x0 }, /* P.BR3A~*(10) */
21699 { reserved_block , 0 , 0 , 32,
21700 0xfc1fc000, 0x880b4000, 0 , 0,
21701 0x0 }, /* P.BR3A~*(11) */
21702 { reserved_block , 0 , 0 , 32,
21703 0xfc1fc000, 0x880c4000, 0 , 0,
21704 0x0 }, /* P.BR3A~*(12) */
21705 { reserved_block , 0 , 0 , 32,
21706 0xfc1fc000, 0x880d4000, 0 , 0,
21707 0x0 }, /* P.BR3A~*(13) */
21708 { reserved_block , 0 , 0 , 32,
21709 0xfc1fc000, 0x880e4000, 0 , 0,
21710 0x0 }, /* P.BR3A~*(14) */
21711 { reserved_block , 0 , 0 , 32,
21712 0xfc1fc000, 0x880f4000, 0 , 0,
21713 0x0 }, /* P.BR3A~*(15) */
21714 { reserved_block , 0 , 0 , 32,
21715 0xfc1fc000, 0x88104000, 0 , 0,
21716 0x0 }, /* P.BR3A~*(16) */
21717 { reserved_block , 0 , 0 , 32,
21718 0xfc1fc000, 0x88114000, 0 , 0,
21719 0x0 }, /* P.BR3A~*(17) */
21720 { reserved_block , 0 , 0 , 32,
21721 0xfc1fc000, 0x88124000, 0 , 0,
21722 0x0 }, /* P.BR3A~*(18) */
21723 { reserved_block , 0 , 0 , 32,
21724 0xfc1fc000, 0x88134000, 0 , 0,
21725 0x0 }, /* P.BR3A~*(19) */
21726 { reserved_block , 0 , 0 , 32,
21727 0xfc1fc000, 0x88144000, 0 , 0,
21728 0x0 }, /* P.BR3A~*(20) */
21729 { reserved_block , 0 , 0 , 32,
21730 0xfc1fc000, 0x88154000, 0 , 0,
21731 0x0 }, /* P.BR3A~*(21) */
21732 { reserved_block , 0 , 0 , 32,
21733 0xfc1fc000, 0x88164000, 0 , 0,
21734 0x0 }, /* P.BR3A~*(22) */
21735 { reserved_block , 0 , 0 , 32,
21736 0xfc1fc000, 0x88174000, 0 , 0,
21737 0x0 }, /* P.BR3A~*(23) */
21738 { reserved_block , 0 , 0 , 32,
21739 0xfc1fc000, 0x88184000, 0 , 0,
21740 0x0 }, /* P.BR3A~*(24) */
21741 { reserved_block , 0 , 0 , 32,
21742 0xfc1fc000, 0x88194000, 0 , 0,
21743 0x0 }, /* P.BR3A~*(25) */
21744 { reserved_block , 0 , 0 , 32,
21745 0xfc1fc000, 0x881a4000, 0 , 0,
21746 0x0 }, /* P.BR3A~*(26) */
21747 { reserved_block , 0 , 0 , 32,
21748 0xfc1fc000, 0x881b4000, 0 , 0,
21749 0x0 }, /* P.BR3A~*(27) */
21750 { reserved_block , 0 , 0 , 32,
21751 0xfc1fc000, 0x881c4000, 0 , 0,
21752 0x0 }, /* P.BR3A~*(28) */
21753 { reserved_block , 0 , 0 , 32,
21754 0xfc1fc000, 0x881d4000, 0 , 0,
21755 0x0 }, /* P.BR3A~*(29) */
21756 { reserved_block , 0 , 0 , 32,
21757 0xfc1fc000, 0x881e4000, 0 , 0,
21758 0x0 }, /* P.BR3A~*(30) */
21759 { reserved_block , 0 , 0 , 32,
21760 0xfc1fc000, 0x881f4000, 0 , 0,
21761 0x0 }, /* P.BR3A~*(31) */
21765 NMD::Pool NMD::P_BR1[4] = {
21766 { branch_instruction , 0 , 0 , 32,
21767 0xfc00c000, 0x88000000, &NMD::BEQC_32_ , 0,
21768 0x0 }, /* BEQC[32] */
21769 { pool , P_BR3A , 32 , 32,
21770 0xfc00c000, 0x88004000, 0 , 0,
21771 0x0 }, /* P.BR3A */
21772 { branch_instruction , 0 , 0 , 32,
21773 0xfc00c000, 0x88008000, &NMD::BGEC , 0,
21774 0x0 }, /* BGEC */
21775 { branch_instruction , 0 , 0 , 32,
21776 0xfc00c000, 0x8800c000, &NMD::BGEUC , 0,
21777 0x0 }, /* BGEUC */
21781 NMD::Pool NMD::P_BR2[4] = {
21782 { branch_instruction , 0 , 0 , 32,
21783 0xfc00c000, 0xa8000000, &NMD::BNEC_32_ , 0,
21784 0x0 }, /* BNEC[32] */
21785 { reserved_block , 0 , 0 , 32,
21786 0xfc00c000, 0xa8004000, 0 , 0,
21787 0x0 }, /* P.BR2~*(1) */
21788 { branch_instruction , 0 , 0 , 32,
21789 0xfc00c000, 0xa8008000, &NMD::BLTC , 0,
21790 0x0 }, /* BLTC */
21791 { branch_instruction , 0 , 0 , 32,
21792 0xfc00c000, 0xa800c000, &NMD::BLTUC , 0,
21793 0x0 }, /* BLTUC */
21797 NMD::Pool NMD::P_BRI[8] = {
21798 { branch_instruction , 0 , 0 , 32,
21799 0xfc1c0000, 0xc8000000, &NMD::BEQIC , 0,
21800 0x0 }, /* BEQIC */
21801 { branch_instruction , 0 , 0 , 32,
21802 0xfc1c0000, 0xc8040000, &NMD::BBEQZC , 0,
21803 XMMS_ }, /* BBEQZC */
21804 { branch_instruction , 0 , 0 , 32,
21805 0xfc1c0000, 0xc8080000, &NMD::BGEIC , 0,
21806 0x0 }, /* BGEIC */
21807 { branch_instruction , 0 , 0 , 32,
21808 0xfc1c0000, 0xc80c0000, &NMD::BGEIUC , 0,
21809 0x0 }, /* BGEIUC */
21810 { branch_instruction , 0 , 0 , 32,
21811 0xfc1c0000, 0xc8100000, &NMD::BNEIC , 0,
21812 0x0 }, /* BNEIC */
21813 { branch_instruction , 0 , 0 , 32,
21814 0xfc1c0000, 0xc8140000, &NMD::BBNEZC , 0,
21815 XMMS_ }, /* BBNEZC */
21816 { branch_instruction , 0 , 0 , 32,
21817 0xfc1c0000, 0xc8180000, &NMD::BLTIC , 0,
21818 0x0 }, /* BLTIC */
21819 { branch_instruction , 0 , 0 , 32,
21820 0xfc1c0000, 0xc81c0000, &NMD::BLTIUC , 0,
21821 0x0 }, /* BLTIUC */
21825 NMD::Pool NMD::P32[32] = {
21826 { pool , P_ADDIU , 2 , 32,
21827 0xfc000000, 0x00000000, 0 , 0,
21828 0x0 }, /* P.ADDIU */
21829 { pool , P32A , 8 , 32,
21830 0xfc000000, 0x20000000, 0 , 0,
21831 0x0 }, /* P32A */
21832 { pool , P_GP_W , 4 , 32,
21833 0xfc000000, 0x40000000, 0 , 0,
21834 0x0 }, /* P.GP.W */
21835 { pool , POOL48I , 32 , 48,
21836 0xfc0000000000ull, 0x600000000000ull, 0 , 0,
21837 0x0 }, /* POOL48I */
21838 { pool , P_U12 , 16 , 32,
21839 0xfc000000, 0x80000000, 0 , 0,
21840 0x0 }, /* P.U12 */
21841 { pool , POOL32F , 8 , 32,
21842 0xfc000000, 0xa0000000, 0 , 0,
21843 CP1_ }, /* POOL32F */
21844 { pool , POOL32S , 8 , 32,
21845 0xfc000000, 0xc0000000, 0 , 0,
21846 0x0 }, /* POOL32S */
21847 { pool , P_LUI , 2 , 32,
21848 0xfc000000, 0xe0000000, 0 , 0,
21849 0x0 }, /* P.LUI */
21850 { instruction , 0 , 0 , 32,
21851 0xfc000000, 0x04000000, &NMD::ADDIUPC_32_ , 0,
21852 0x0 }, /* ADDIUPC[32] */
21853 { reserved_block , 0 , 0 , 32,
21854 0xfc000000, 0x24000000, 0 , 0,
21855 0x0 }, /* P32~*(5) */
21856 { pool , P_GP_BH , 8 , 32,
21857 0xfc000000, 0x44000000, 0 , 0,
21858 0x0 }, /* P.GP.BH */
21859 { reserved_block , 0 , 0 , 32,
21860 0xfc000000, 0x64000000, 0 , 0,
21861 0x0 }, /* P32~*(13) */
21862 { pool , P_LS_U12 , 16 , 32,
21863 0xfc000000, 0x84000000, 0 , 0,
21864 0x0 }, /* P.LS.U12 */
21865 { pool , P_LS_S9 , 8 , 32,
21866 0xfc000000, 0xa4000000, 0 , 0,
21867 0x0 }, /* P.LS.S9 */
21868 { reserved_block , 0 , 0 , 32,
21869 0xfc000000, 0xc4000000, 0 , 0,
21870 0x0 }, /* P32~*(25) */
21871 { reserved_block , 0 , 0 , 32,
21872 0xfc000000, 0xe4000000, 0 , 0,
21873 0x0 }, /* P32~*(29) */
21874 { call_instruction , 0 , 0 , 32,
21875 0xfc000000, 0x08000000, &NMD::MOVE_BALC , 0,
21876 XMMS_ }, /* MOVE.BALC */
21877 { pool , P_BAL , 2 , 32,
21878 0xfc000000, 0x28000000, 0 , 0,
21879 0x0 }, /* P.BAL */
21880 { pool , P_J , 16 , 32,
21881 0xfc000000, 0x48000000, 0 , 0,
21882 0x0 }, /* P.J */
21883 { reserved_block , 0 , 0 , 32,
21884 0xfc000000, 0x68000000, 0 , 0,
21885 0x0 }, /* P32~*(14) */
21886 { pool , P_BR1 , 4 , 32,
21887 0xfc000000, 0x88000000, 0 , 0,
21888 0x0 }, /* P.BR1 */
21889 { pool , P_BR2 , 4 , 32,
21890 0xfc000000, 0xa8000000, 0 , 0,
21891 0x0 }, /* P.BR2 */
21892 { pool , P_BRI , 8 , 32,
21893 0xfc000000, 0xc8000000, 0 , 0,
21894 0x0 }, /* P.BRI */
21895 { reserved_block , 0 , 0 , 32,
21896 0xfc000000, 0xe8000000, 0 , 0,
21897 0x0 }, /* P32~*(30) */
21898 { reserved_block , 0 , 0 , 32,
21899 0xfc000000, 0x0c000000, 0 , 0,
21900 0x0 }, /* P32~*(3) */
21901 { reserved_block , 0 , 0 , 32,
21902 0xfc000000, 0x2c000000, 0 , 0,
21903 0x0 }, /* P32~*(7) */
21904 { reserved_block , 0 , 0 , 32,
21905 0xfc000000, 0x4c000000, 0 , 0,
21906 0x0 }, /* P32~*(11) */
21907 { reserved_block , 0 , 0 , 32,
21908 0xfc000000, 0x6c000000, 0 , 0,
21909 0x0 }, /* P32~*(15) */
21910 { reserved_block , 0 , 0 , 32,
21911 0xfc000000, 0x8c000000, 0 , 0,
21912 0x0 }, /* P32~*(19) */
21913 { reserved_block , 0 , 0 , 32,
21914 0xfc000000, 0xac000000, 0 , 0,
21915 0x0 }, /* P32~*(23) */
21916 { reserved_block , 0 , 0 , 32,
21917 0xfc000000, 0xcc000000, 0 , 0,
21918 0x0 }, /* P32~*(27) */
21919 { reserved_block , 0 , 0 , 32,
21920 0xfc000000, 0xec000000, 0 , 0,
21921 0x0 }, /* P32~*(31) */
21925 NMD::Pool NMD::P16_SYSCALL[2] = {
21926 { instruction , 0 , 0 , 16,
21927 0xfffc , 0x1008 , &NMD::SYSCALL_16_ , 0,
21928 0x0 }, /* SYSCALL[16] */
21929 { instruction , 0 , 0 , 16,
21930 0xfffc , 0x100c , &NMD::HYPCALL_16_ , 0,
21931 CP0_ | VZ_ }, /* HYPCALL[16] */
21935 NMD::Pool NMD::P16_RI[4] = {
21936 { reserved_block , 0 , 0 , 16,
21937 0xfff8 , 0x1000 , 0 , 0,
21938 0x0 }, /* P16.RI~*(0) */
21939 { pool , P16_SYSCALL , 2 , 16,
21940 0xfff8 , 0x1008 , 0 , 0,
21941 0x0 }, /* P16.SYSCALL */
21942 { instruction , 0 , 0 , 16,
21943 0xfff8 , 0x1010 , &NMD::BREAK_16_ , 0,
21944 0x0 }, /* BREAK[16] */
21945 { instruction , 0 , 0 , 16,
21946 0xfff8 , 0x1018 , &NMD::SDBBP_16_ , 0,
21947 EJTAG_ }, /* SDBBP[16] */
21951 NMD::Pool NMD::P16_MV[2] = {
21952 { pool , P16_RI , 4 , 16,
21953 0xffe0 , 0x1000 , 0 , 0,
21954 0x0 }, /* P16.RI */
21955 { instruction , 0 , 0 , 16,
21956 0xfc00 , 0x1000 , &NMD::MOVE , &NMD::MOVE_cond ,
21957 0x0 }, /* MOVE */
21961 NMD::Pool NMD::P16_SHIFT[2] = {
21962 { instruction , 0 , 0 , 16,
21963 0xfc08 , 0x3000 , &NMD::SLL_16_ , 0,
21964 0x0 }, /* SLL[16] */
21965 { instruction , 0 , 0 , 16,
21966 0xfc08 , 0x3008 , &NMD::SRL_16_ , 0,
21967 0x0 }, /* SRL[16] */
21971 NMD::Pool NMD::POOL16C_00[4] = {
21972 { instruction , 0 , 0 , 16,
21973 0xfc0f , 0x5000 , &NMD::NOT_16_ , 0,
21974 0x0 }, /* NOT[16] */
21975 { instruction , 0 , 0 , 16,
21976 0xfc0f , 0x5004 , &NMD::XOR_16_ , 0,
21977 0x0 }, /* XOR[16] */
21978 { instruction , 0 , 0 , 16,
21979 0xfc0f , 0x5008 , &NMD::AND_16_ , 0,
21980 0x0 }, /* AND[16] */
21981 { instruction , 0 , 0 , 16,
21982 0xfc0f , 0x500c , &NMD::OR_16_ , 0,
21983 0x0 }, /* OR[16] */
21987 NMD::Pool NMD::POOL16C_0[2] = {
21988 { pool , POOL16C_00 , 4 , 16,
21989 0xfc03 , 0x5000 , 0 , 0,
21990 0x0 }, /* POOL16C_00 */
21991 { reserved_block , 0 , 0 , 16,
21992 0xfc03 , 0x5002 , 0 , 0,
21993 0x0 }, /* POOL16C_0~*(1) */
21997 NMD::Pool NMD::P16C[2] = {
21998 { pool , POOL16C_0 , 2 , 16,
21999 0xfc01 , 0x5000 , 0 , 0,
22000 0x0 }, /* POOL16C_0 */
22001 { instruction , 0 , 0 , 16,
22002 0xfc01 , 0x5001 , &NMD::LWXS_16_ , 0,
22003 0x0 }, /* LWXS[16] */
22007 NMD::Pool NMD::P16_A1[2] = {
22008 { reserved_block , 0 , 0 , 16,
22009 0xfc40 , 0x7000 , 0 , 0,
22010 0x0 }, /* P16.A1~*(0) */
22011 { instruction , 0 , 0 , 16,
22012 0xfc40 , 0x7040 , &NMD::ADDIU_R1_SP_ , 0,
22013 0x0 }, /* ADDIU[R1.SP] */
22017 NMD::Pool NMD::P_ADDIU_RS5_[2] = {
22018 { instruction , 0 , 0 , 16,
22019 0xffe8 , 0x9008 , &NMD::NOP_16_ , 0,
22020 0x0 }, /* NOP[16] */
22021 { instruction , 0 , 0 , 16,
22022 0xfc08 , 0x9008 , &NMD::ADDIU_RS5_ , &NMD::ADDIU_RS5__cond ,
22023 0x0 }, /* ADDIU[RS5] */
22027 NMD::Pool NMD::P16_A2[2] = {
22028 { instruction , 0 , 0 , 16,
22029 0xfc08 , 0x9000 , &NMD::ADDIU_R2_ , 0,
22030 0x0 }, /* ADDIU[R2] */
22031 { pool , P_ADDIU_RS5_ , 2 , 16,
22032 0xfc08 , 0x9008 , 0 , 0,
22033 0x0 }, /* P.ADDIU[RS5] */
22037 NMD::Pool NMD::P16_ADDU[2] = {
22038 { instruction , 0 , 0 , 16,
22039 0xfc01 , 0xb000 , &NMD::ADDU_16_ , 0,
22040 0x0 }, /* ADDU[16] */
22041 { instruction , 0 , 0 , 16,
22042 0xfc01 , 0xb001 , &NMD::SUBU_16_ , 0,
22043 0x0 }, /* SUBU[16] */
22047 NMD::Pool NMD::P16_JRC[2] = {
22048 { branch_instruction , 0 , 0 , 16,
22049 0xfc1f , 0xd800 , &NMD::JRC , 0,
22050 0x0 }, /* JRC */
22051 { call_instruction , 0 , 0 , 16,
22052 0xfc1f , 0xd810 , &NMD::JALRC_16_ , 0,
22053 0x0 }, /* JALRC[16] */
22057 NMD::Pool NMD::P16_BR1[2] = {
22058 { branch_instruction , 0 , 0 , 16,
22059 0xfc00 , 0xd800 , &NMD::BEQC_16_ , &NMD::BEQC_16__cond ,
22060 XMMS_ }, /* BEQC[16] */
22061 { branch_instruction , 0 , 0 , 16,
22062 0xfc00 , 0xd800 , &NMD::BNEC_16_ , &NMD::BNEC_16__cond ,
22063 XMMS_ }, /* BNEC[16] */
22067 NMD::Pool NMD::P16_BR[2] = {
22068 { pool , P16_JRC , 2 , 16,
22069 0xfc0f , 0xd800 , 0 , 0,
22070 0x0 }, /* P16.JRC */
22071 { pool , P16_BR1 , 2 , 16,
22072 0xfc00 , 0xd800 , 0 , &NMD::P16_BR1_cond ,
22073 0x0 }, /* P16.BR1 */
22077 NMD::Pool NMD::P16_SR[2] = {
22078 { instruction , 0 , 0 , 16,
22079 0xfd00 , 0x1c00 , &NMD::SAVE_16_ , 0,
22080 0x0 }, /* SAVE[16] */
22081 { return_instruction , 0 , 0 , 16,
22082 0xfd00 , 0x1d00 , &NMD::RESTORE_JRC_16_ , 0,
22083 0x0 }, /* RESTORE.JRC[16] */
22087 NMD::Pool NMD::P16_4X4[4] = {
22088 { instruction , 0 , 0 , 16,
22089 0xfd08 , 0x3c00 , &NMD::ADDU_4X4_ , 0,
22090 XMMS_ }, /* ADDU[4X4] */
22091 { instruction , 0 , 0 , 16,
22092 0xfd08 , 0x3c08 , &NMD::MUL_4X4_ , 0,
22093 XMMS_ }, /* MUL[4X4] */
22094 { reserved_block , 0 , 0 , 16,
22095 0xfd08 , 0x3d00 , 0 , 0,
22096 0x0 }, /* P16.4X4~*(2) */
22097 { reserved_block , 0 , 0 , 16,
22098 0xfd08 , 0x3d08 , 0 , 0,
22099 0x0 }, /* P16.4X4~*(3) */
22103 NMD::Pool NMD::P16_LB[4] = {
22104 { instruction , 0 , 0 , 16,
22105 0xfc0c , 0x5c00 , &NMD::LB_16_ , 0,
22106 0x0 }, /* LB[16] */
22107 { instruction , 0 , 0 , 16,
22108 0xfc0c , 0x5c04 , &NMD::SB_16_ , 0,
22109 0x0 }, /* SB[16] */
22110 { instruction , 0 , 0 , 16,
22111 0xfc0c , 0x5c08 , &NMD::LBU_16_ , 0,
22112 0x0 }, /* LBU[16] */
22113 { reserved_block , 0 , 0 , 16,
22114 0xfc0c , 0x5c0c , 0 , 0,
22115 0x0 }, /* P16.LB~*(3) */
22119 NMD::Pool NMD::P16_LH[4] = {
22120 { instruction , 0 , 0 , 16,
22121 0xfc09 , 0x7c00 , &NMD::LH_16_ , 0,
22122 0x0 }, /* LH[16] */
22123 { instruction , 0 , 0 , 16,
22124 0xfc09 , 0x7c01 , &NMD::SH_16_ , 0,
22125 0x0 }, /* SH[16] */
22126 { instruction , 0 , 0 , 16,
22127 0xfc09 , 0x7c08 , &NMD::LHU_16_ , 0,
22128 0x0 }, /* LHU[16] */
22129 { reserved_block , 0 , 0 , 16,
22130 0xfc09 , 0x7c09 , 0 , 0,
22131 0x0 }, /* P16.LH~*(3) */
22135 NMD::Pool NMD::P16[32] = {
22136 { pool , P16_MV , 2 , 16,
22137 0xfc00 , 0x1000 , 0 , 0,
22138 0x0 }, /* P16.MV */
22139 { pool , P16_SHIFT , 2 , 16,
22140 0xfc00 , 0x3000 , 0 , 0,
22141 0x0 }, /* P16.SHIFT */
22142 { pool , P16C , 2 , 16,
22143 0xfc00 , 0x5000 , 0 , 0,
22144 0x0 }, /* P16C */
22145 { pool , P16_A1 , 2 , 16,
22146 0xfc00 , 0x7000 , 0 , 0,
22147 0x0 }, /* P16.A1 */
22148 { pool , P16_A2 , 2 , 16,
22149 0xfc00 , 0x9000 , 0 , 0,
22150 0x0 }, /* P16.A2 */
22151 { pool , P16_ADDU , 2 , 16,
22152 0xfc00 , 0xb000 , 0 , 0,
22153 0x0 }, /* P16.ADDU */
22154 { instruction , 0 , 0 , 16,
22155 0xfc00 , 0xd000 , &NMD::LI_16_ , 0,
22156 0x0 }, /* LI[16] */
22157 { instruction , 0 , 0 , 16,
22158 0xfc00 , 0xf000 , &NMD::ANDI_16_ , 0,
22159 0x0 }, /* ANDI[16] */
22160 { instruction , 0 , 0 , 16,
22161 0xfc00 , 0x1400 , &NMD::LW_16_ , 0,
22162 0x0 }, /* LW[16] */
22163 { instruction , 0 , 0 , 16,
22164 0xfc00 , 0x3400 , &NMD::LW_SP_ , 0,
22165 0x0 }, /* LW[SP] */
22166 { instruction , 0 , 0 , 16,
22167 0xfc00 , 0x5400 , &NMD::LW_GP16_ , 0,
22168 0x0 }, /* LW[GP16] */
22169 { instruction , 0 , 0 , 16,
22170 0xfc00 , 0x7400 , &NMD::LW_4X4_ , 0,
22171 XMMS_ }, /* LW[4X4] */
22172 { instruction , 0 , 0 , 16,
22173 0xfc00 , 0x9400 , &NMD::SW_16_ , 0,
22174 0x0 }, /* SW[16] */
22175 { instruction , 0 , 0 , 16,
22176 0xfc00 , 0xb400 , &NMD::SW_SP_ , 0,
22177 0x0 }, /* SW[SP] */
22178 { instruction , 0 , 0 , 16,
22179 0xfc00 , 0xd400 , &NMD::SW_GP16_ , 0,
22180 0x0 }, /* SW[GP16] */
22181 { instruction , 0 , 0 , 16,
22182 0xfc00 , 0xf400 , &NMD::SW_4X4_ , 0,
22183 XMMS_ }, /* SW[4X4] */
22184 { branch_instruction , 0 , 0 , 16,
22185 0xfc00 , 0x1800 , &NMD::BC_16_ , 0,
22186 0x0 }, /* BC[16] */
22187 { call_instruction , 0 , 0 , 16,
22188 0xfc00 , 0x3800 , &NMD::BALC_16_ , 0,
22189 0x0 }, /* BALC[16] */
22190 { reserved_block , 0 , 0 , 16,
22191 0xfc00 , 0x5800 , 0 , 0,
22192 0x0 }, /* P16~*(10) */
22193 { reserved_block , 0 , 0 , 16,
22194 0xfc00 , 0x7800 , 0 , 0,
22195 0x0 }, /* P16~*(14) */
22196 { branch_instruction , 0 , 0 , 16,
22197 0xfc00 , 0x9800 , &NMD::BEQZC_16_ , 0,
22198 0x0 }, /* BEQZC[16] */
22199 { branch_instruction , 0 , 0 , 16,
22200 0xfc00 , 0xb800 , &NMD::BNEZC_16_ , 0,
22201 0x0 }, /* BNEZC[16] */
22202 { pool , P16_BR , 2 , 16,
22203 0xfc00 , 0xd800 , 0 , 0,
22204 0x0 }, /* P16.BR */
22205 { reserved_block , 0 , 0 , 16,
22206 0xfc00 , 0xf800 , 0 , 0,
22207 0x0 }, /* P16~*(30) */
22208 { pool , P16_SR , 2 , 16,
22209 0xfc00 , 0x1c00 , 0 , 0,
22210 0x0 }, /* P16.SR */
22211 { pool , P16_4X4 , 4 , 16,
22212 0xfc00 , 0x3c00 , 0 , 0,
22213 0x0 }, /* P16.4X4 */
22214 { pool , P16_LB , 4 , 16,
22215 0xfc00 , 0x5c00 , 0 , 0,
22216 0x0 }, /* P16.LB */
22217 { pool , P16_LH , 4 , 16,
22218 0xfc00 , 0x7c00 , 0 , 0,
22219 0x0 }, /* P16.LH */
22220 { reserved_block , 0 , 0 , 16,
22221 0xfc00 , 0x9c00 , 0 , 0,
22222 0x0 }, /* P16~*(19) */
22223 { instruction , 0 , 0 , 16,
22224 0xfc00 , 0xbc00 , &NMD::MOVEP , 0,
22225 XMMS_ }, /* MOVEP */
22226 { reserved_block , 0 , 0 , 16,
22227 0xfc00 , 0xdc00 , 0 , 0,
22228 0x0 }, /* P16~*(27) */
22229 { instruction , 0 , 0 , 16,
22230 0xfc00 , 0xfc00 , &NMD::MOVEP_REV_ , 0,
22231 XMMS_ }, /* MOVEP[REV] */
22235 NMD::Pool NMD::MAJOR[2] = {
22236 { pool , P32 , 32 , 32,
22237 0x10000000, 0x00000000, 0 , 0,
22238 0x0 }, /* P32 */
22239 { pool , P16 , 32 , 16,
22240 0x1000 , 0x1000 , 0 , 0,
22241 0x0 }, /* P16 */