2 * Source file for nanoMIPS disassembler component of QEMU
4 * Copyright (C) 2018 Wave Computing, Inc.
5 * Copyright (C) 2018 Matthew Fortune <matthew.fortune@mips.com>
6 * Copyright (C) 2018 Aleksandar Markovic <amarkovic@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 2 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/>.
24 #include "qemu/osdep.h"
25 #include "disas/bfd.h"
36 #define IMGASSERTONCE(test)
39 int nanomips_dis(char *buf
,
46 uint16 bits
[3] = {one
, two
, three
};
48 NMD::TABLE_ENTRY_TYPE type
;
49 NMD
d(address
, NMD::ALL_ATTRIBUTES
);
50 int size
= d
.Disassemble(bits
, disasm
, type
);
52 strcpy(buf
, disasm
.c_str());
56 int print_insn_nanomips(bfd_vma memaddr
, struct disassemble_info
*info
)
60 uint16_t insn1
= 0, insn2
= 0, insn3
= 0;
63 info
->bytes_per_chunk
= 2;
64 info
->display_endian
= info
->endian
;
65 info
->insn_info_valid
= 1;
66 info
->branch_delay_insns
= 0;
68 info
->insn_type
= dis_nonbranch
;
72 status
= (*info
->read_memory_func
)(memaddr
, buffer
, 2, info
);
74 (*info
->memory_error_func
)(status
, memaddr
, info
);
78 if (info
->endian
== BFD_ENDIAN_BIG
) {
79 insn1
= bfd_getb16(buffer
);
81 insn1
= bfd_getl16(buffer
);
83 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn1
);
85 /* Handle 32-bit opcodes. */
86 if ((insn1
& 0x1000) == 0) {
87 status
= (*info
->read_memory_func
)(memaddr
+ 2, buffer
, 2, info
);
89 (*info
->memory_error_func
)(status
, memaddr
+ 2, info
);
93 if (info
->endian
== BFD_ENDIAN_BIG
) {
94 insn2
= bfd_getb16(buffer
);
96 insn2
= bfd_getl16(buffer
);
98 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn2
);
100 (*info
->fprintf_func
)(info
->stream
, " ");
102 /* Handle 48-bit opcodes. */
103 if ((insn1
>> 10) == 0x18) {
104 status
= (*info
->read_memory_func
)(memaddr
+ 4, buffer
, 2, info
);
106 (*info
->memory_error_func
)(status
, memaddr
+ 4, info
);
110 if (info
->endian
== BFD_ENDIAN_BIG
) {
111 insn3
= bfd_getb16(buffer
);
113 insn3
= bfd_getl16(buffer
);
115 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn3
);
117 (*info
->fprintf_func
)(info
->stream
, " ");
120 int length
= nanomips_dis(buf
, memaddr
, insn1
, insn2
, insn3
);
122 /* FIXME: Should probably use a hash table on the major opcode here. */
124 (*info
->fprintf_func
) (info
->stream
, "%s", buf
);
129 info
->insn_type
= dis_noninsn
;
131 return insn3
? 6 : insn2
? 4 : 2;
137 address
addr32(address a
)
142 std::string
format(const char *format
, ...)
146 va_start(args
, format
);
147 int err
= vsprintf(buffer
, format
, args
);
155 std::string
format(const char *format
,
160 sprintf(buffer
, format
, s
.c_str());
165 std::string
format(const char *format
,
171 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str());
176 std::string
format(const char *format
,
183 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str());
188 std::string
format(const char *format
,
196 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str(),
202 std::string
format(const char *format
,
211 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str(),
212 s4
.c_str(), s5
.c_str());
217 std::string
format(const char *format
,
223 sprintf(buffer
, format
, d
, s2
.c_str());
228 std::string
format(const char *format
,
235 sprintf(buffer
, format
, s1
.c_str(), d
, s2
.c_str());
240 std::string
format(const char *format
,
247 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), d
);
254 return static_cast<char>(c
);
259 std::string
to_string(img::address a
)
262 sprintf(buffer
, "0x%" PRIx64
, a
);
267 uint64
extract_bits(uint64 data
, uint32 bit_offset
, uint32 bit_size
)
269 return (data
<< (64 - (bit_size
+ bit_offset
))) >> (64 - bit_size
);
273 int64
sign_extend(int64 data
, int msb
)
275 uint64 shift
= 63 - msb
;
276 return (data
<< shift
) >> shift
;
280 uint64
NMD::renumber_registers(uint64 index
, uint64
*register_list
,
281 size_t register_list_size
)
283 if (index
< register_list_size
) {
284 return register_list
[index
];
287 throw std::runtime_error(img::format(
288 "Invalid register mapping index %" PRIu64
289 ", size of list = %zu",
290 index
, register_list_size
));
295 * NMD::decode_gpr_gpr3() - decoder for 'gpr3' gpr encoding type
297 * Map a 3-bit code to the 5-bit register space according to this pattern:
302 * | | | └-----------------------┐
303 * | | └-----------------------┐ |
304 * | └-----------------------┐ | |
305 * └-----------------------┐ | | |
307 * ┌-------┘ | | | | | | |
308 * | ┌-------┘ | | | | | |
309 * | | ┌-------┘ | | | | |
310 * | | | ┌-------┘ | | | |
312 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
315 * Used in handling following instructions:
344 uint64
NMD::decode_gpr_gpr3(uint64 d
)
346 static uint64 register_list
[] = { 16, 17, 18, 19, 4, 5, 6, 7 };
347 return renumber_registers(d
, register_list
,
348 sizeof(register_list
) / sizeof(register_list
[0]));
353 * NMD::decode_gpr_gpr3_src_store() - decoder for 'gpr3.src.store' gpr encoding
356 * Map a 3-bit code to the 5-bit register space according to this pattern:
360 * | | | | | | | └-----------------------┐
361 * | | | └-----------------------┐ |
362 * | | └-----------------------┐ | |
363 * | └-----------------------┐ | | |
364 * └-----------------------┐ | | | |
366 * ┌-------┘ | | | | | | |
367 * | ┌-------┘ | | | | | |
368 * | | ┌-------┘ | | | | |
371 * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
374 * This pattern is the same one used for 'gpr3' gpr encoding type, except for
375 * the input value 0, that is mapped to the output value 0 instead of 16.
377 * Used in handling following instructions:
384 uint64
NMD::decode_gpr_gpr3_src_store(uint64 d
)
386 static uint64 register_list
[] = { 0, 17, 18, 19, 4, 5, 6, 7 };
387 return renumber_registers(d
, register_list
,
388 sizeof(register_list
) / sizeof(register_list
[0]));
392 uint64
NMD::encode_rd1_from_rd(uint64 d
)
394 static uint64 register_list
[] = { 4, 5 };
395 return renumber_registers(d
, register_list
,
396 sizeof(register_list
) / sizeof(register_list
[0]));
400 uint64
NMD::encode_gpr4_zero(uint64 d
)
402 static uint64 register_list
[] = { 8, 9, 10, 0, 4, 5, 6, 7,
403 16, 17, 18, 19, 20, 21, 22, 23 };
404 return renumber_registers(d
, register_list
,
405 sizeof(register_list
) / sizeof(register_list
[0]));
409 uint64
NMD::decode_gpr_gpr4(uint64 d
)
411 static uint64 register_list
[] = { 8, 9, 10, 11, 4, 5, 6, 7,
412 16, 17, 18, 19, 20, 21, 22, 23 };
413 return renumber_registers(d
, register_list
,
414 sizeof(register_list
) / sizeof(register_list
[0]));
418 uint64
NMD::encode_rd2_reg1(uint64 d
)
420 static uint64 register_list
[] = { 4, 5, 6, 7 };
421 return renumber_registers(d
, register_list
,
422 sizeof(register_list
) / sizeof(register_list
[0]));
426 uint64
NMD::encode_rd2_reg2(uint64 d
)
428 static uint64 register_list
[] = { 5, 6, 7, 8 };
429 return renumber_registers(d
, register_list
,
430 sizeof(register_list
) / sizeof(register_list
[0]));
434 uint64
NMD::copy(uint64 d
)
440 int64
NMD::copy(int64 d
)
446 int64
NMD::neg_copy(uint64 d
)
452 int64
NMD::neg_copy(int64 d
)
458 /* strange wrapper around gpr3 */
459 uint64
NMD::encode_rs3_and_check_rs3_ge_rt3(uint64 d
)
461 return decode_gpr_gpr3(d
);
465 /* strange wrapper around gpr3 */
466 uint64
NMD::encode_rs3_and_check_rs3_lt_rt3(uint64 d
)
468 return decode_gpr_gpr3(d
);
472 /* nop - done by extraction function */
473 uint64
NMD::encode_s_from_address(uint64 d
)
479 /* nop - done by extraction function */
480 uint64
NMD::encode_u_from_address(uint64 d
)
486 /* nop - done by extraction function */
487 uint64
NMD::encode_s_from_s_hi(uint64 d
)
493 uint64
NMD::encode_count3_from_count(uint64 d
)
495 IMGASSERTONCE(d
< 8);
496 return d
== 0ull ? 8ull : d
;
500 uint64
NMD::encode_shift3_from_shift(uint64 d
)
502 IMGASSERTONCE(d
< 8);
503 return d
== 0ull ? 8ull : d
;
507 /* special value for load literal */
508 int64
NMD::encode_eu_from_s_li16(uint64 d
)
510 IMGASSERTONCE(d
< 128);
511 return d
== 127 ? -1 : (int64
)d
;
515 uint64
NMD::encode_msbd_from_size(uint64 d
)
517 IMGASSERTONCE(d
< 32);
522 uint64
NMD::encode_eu_from_u_andi16(uint64 d
)
524 IMGASSERTONCE(d
< 16);
535 uint64
NMD::encode_msbd_from_pos_and_size(uint64 d
)
542 /* save16 / restore16 ???? */
543 uint64
NMD::encode_rt1_from_rt(uint64 d
)
550 uint64
NMD::encode_lsb_from_pos_and_size(uint64 d
)
556 std::string
NMD::save_restore_list(uint64 rt
, uint64 count
, uint64 gp
)
560 for (uint64 counter
= 0; counter
!= count
; counter
++) {
561 bool use_gp
= gp
&& (counter
== count
- 1);
562 uint64 this_rt
= use_gp
? 28 : ((rt
& 0x10) | (rt
+ counter
)) & 0x1f;
563 str
+= img::format(",%s", GPR(this_rt
));
570 std::string
NMD::GPR(uint64 reg
)
572 static const char *gpr_reg
[32] = {
573 "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
574 "a4", "a5", "a6", "a7", "r12", "r13", "r14", "r15",
575 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
576 "r24", "r25", "k0", "k1", "gp", "sp", "fp", "ra"
583 throw std::runtime_error(img::format("Invalid GPR register index %" PRIu64
,
588 std::string
NMD::FPR(uint64 reg
)
590 static const char *fpr_reg
[32] = {
591 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
592 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
593 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
594 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
601 throw std::runtime_error(img::format("Invalid FPR register index %" PRIu64
,
606 std::string
NMD::AC(uint64 reg
)
608 static const char *ac_reg
[4] = {
609 "ac0", "ac1", "ac2", "ac3"
616 throw std::runtime_error(img::format("Invalid AC register index %" PRIu64
,
621 std::string
NMD::IMMEDIATE(uint64 value
)
623 return img::format("0x%" PRIx64
, value
);
627 std::string
NMD::IMMEDIATE(int64 value
)
629 return img::format("%" PRId64
, value
);
633 std::string
NMD::CPR(uint64 reg
)
635 /* needs more work */
636 return img::format("CP%" PRIu64
, reg
);
640 std::string
NMD::ADDRESS(uint64 value
, int instruction_size
)
642 /* token for string replace */
643 /* const char TOKEN_REPLACE = (char)0xa2; */
644 img::address address
= m_pc
+ value
+ instruction_size
;
645 /* symbol replacement */
646 /* return img::as_char(TOKEN_REPLACE) + to_string(address); */
647 return to_string(address
);
651 uint64
NMD::extract_op_code_value(const uint16
* data
, int size
)
657 return ((uint64
)data
[0] << 16) | data
[1];
659 return ((uint64
)data
[0] << 32) | ((uint64
)data
[1] << 16) | data
[2];
666 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
667 NMD::TABLE_ENTRY_TYPE
& type
)
669 return Disassemble(data
, dis
, type
, MAJOR
, 2);
674 * Recurse through tables until the instruction is found then return
675 * the string and size
678 * pointer to a word stream,
679 * disassember table and size
681 * instruction size - negative is error
682 * disassembly string - on error will constain error string
684 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
685 NMD::TABLE_ENTRY_TYPE
& type
, const Pool
*table
,
690 for (int i
= 0; i
< table_size
; i
++) {
691 uint64 op_code
= extract_op_code_value(data
,
692 table
[i
].instructions_size
);
693 if ((op_code
& table
[i
].mask
) == table
[i
].value
) {
695 conditional_function cond
= table
[i
].condition
;
696 if ((cond
== 0) || (this->*cond
)(op_code
)) {
699 if (table
[i
].type
== pool
) {
700 return Disassemble(data
, dis
, type
,
702 table
[i
].next_table_size
);
703 } else if ((table
[i
].type
== instruction
) ||
704 (table
[i
].type
== call_instruction
) ||
705 (table
[i
].type
== branch_instruction
) ||
706 (table
[i
].type
== return_instruction
)) {
707 if ((table
[i
].attributes
!= 0) &&
708 (m_requested_instruction_categories
&
709 table
[i
].attributes
) == 0) {
711 * failed due to instruction having
712 * an ASE attribute and the requested version
713 * not having that attribute
715 dis
= "ASE attribute missmatch";
718 disassembly_function dis_fn
= table
[i
].disassembly
;
720 dis
= "disassembler failure - bad table entry";
723 type
= table
[i
].type
;
724 dis
= (this->*dis_fn
)(op_code
);
725 return table
[i
].instructions_size
;
727 dis
= "reserved instruction";
731 catch (std::runtime_error
& e
)
734 return -3; /* runtime error */
740 catch (std::exception
& e
)
743 return -4; /* runtime error */
746 dis
= "failed to disassemble";
747 return -1; /* failed to disassemble */
751 uint64
NMD::extract_code_18_to_0(uint64 instruction
)
754 value
|= extract_bits(instruction
, 0, 19);
759 uint64
NMD::extract_shift3_2_1_0(uint64 instruction
)
762 value
|= extract_bits(instruction
, 0, 3);
767 uint64
NMD::extract_u_11_10_9_8_7_6_5_4_3__s3(uint64 instruction
)
770 value
|= extract_bits(instruction
, 3, 9) << 3;
775 uint64
NMD::extract_count_3_2_1_0(uint64 instruction
)
778 value
|= extract_bits(instruction
, 0, 4);
783 uint64
NMD::extract_rtz3_9_8_7(uint64 instruction
)
786 value
|= extract_bits(instruction
, 7, 3);
791 uint64
NMD::extract_u_17_to_1__s1(uint64 instruction
)
794 value
|= extract_bits(instruction
, 1, 17) << 1;
799 int64
NMD::extract_s__se9_20_19_18_17_16_15_14_13_12_11(uint64 instruction
)
802 value
|= extract_bits(instruction
, 11, 10);
803 value
= sign_extend(value
, 9);
808 int64
NMD::extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(uint64 instruction
)
811 value
|= extract_bits(instruction
, 0, 1) << 11;
812 value
|= extract_bits(instruction
, 1, 10) << 1;
813 value
= sign_extend(value
, 11);
818 uint64
NMD::extract_u_10(uint64 instruction
)
821 value
|= extract_bits(instruction
, 10, 1);
826 uint64
NMD::extract_rtz4_27_26_25_23_22_21(uint64 instruction
)
829 value
|= extract_bits(instruction
, 21, 3);
830 value
|= extract_bits(instruction
, 25, 1) << 3;
835 uint64
NMD::extract_sa_15_14_13_12_11(uint64 instruction
)
838 value
|= extract_bits(instruction
, 11, 5);
843 uint64
NMD::extract_shift_4_3_2_1_0(uint64 instruction
)
846 value
|= extract_bits(instruction
, 0, 5);
851 uint64
NMD::extract_shiftx_10_9_8_7__s1(uint64 instruction
)
854 value
|= extract_bits(instruction
, 7, 4) << 1;
859 uint64
NMD::extract_hint_25_24_23_22_21(uint64 instruction
)
862 value
|= extract_bits(instruction
, 21, 5);
867 uint64
NMD::extract_count3_14_13_12(uint64 instruction
)
870 value
|= extract_bits(instruction
, 12, 3);
875 int64
NMD::extract_s__se31_0_11_to_2_20_to_12_s12(uint64 instruction
)
878 value
|= extract_bits(instruction
, 0, 1) << 31;
879 value
|= extract_bits(instruction
, 2, 10) << 21;
880 value
|= extract_bits(instruction
, 12, 9) << 12;
881 value
= sign_extend(value
, 31);
886 int64
NMD::extract_s__se7_0_6_5_4_3_2_1_s1(uint64 instruction
)
889 value
|= extract_bits(instruction
, 0, 1) << 7;
890 value
|= extract_bits(instruction
, 1, 6) << 1;
891 value
= sign_extend(value
, 7);
896 uint64
NMD::extract_u2_10_9(uint64 instruction
)
899 value
|= extract_bits(instruction
, 9, 2);
904 uint64
NMD::extract_code_25_24_23_22_21_20_19_18_17_16(uint64 instruction
)
907 value
|= extract_bits(instruction
, 16, 10);
912 uint64
NMD::extract_rs_20_19_18_17_16(uint64 instruction
)
915 value
|= extract_bits(instruction
, 16, 5);
920 uint64
NMD::extract_u_2_1__s1(uint64 instruction
)
923 value
|= extract_bits(instruction
, 1, 2) << 1;
928 uint64
NMD::extract_stripe_6(uint64 instruction
)
931 value
|= extract_bits(instruction
, 6, 1);
936 uint64
NMD::extract_ac_13_12(uint64 instruction
)
939 value
|= extract_bits(instruction
, 14, 2);
944 uint64
NMD::extract_shift_20_19_18_17_16(uint64 instruction
)
947 value
|= extract_bits(instruction
, 16, 5);
952 uint64
NMD::extract_rdl_25_24(uint64 instruction
)
955 value
|= extract_bits(instruction
, 24, 1);
960 int64
NMD::extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(uint64 instruction
)
963 value
|= extract_bits(instruction
, 0, 1) << 10;
964 value
|= extract_bits(instruction
, 1, 9) << 1;
965 value
= sign_extend(value
, 10);
970 uint64
NMD::extract_eu_6_5_4_3_2_1_0(uint64 instruction
)
973 value
|= extract_bits(instruction
, 0, 7);
978 uint64
NMD::extract_shift_5_4_3_2_1_0(uint64 instruction
)
981 value
|= extract_bits(instruction
, 0, 6);
986 uint64
NMD::extract_count_19_18_17_16(uint64 instruction
)
989 value
|= extract_bits(instruction
, 16, 4);
994 uint64
NMD::extract_code_2_1_0(uint64 instruction
)
997 value
|= extract_bits(instruction
, 0, 3);
1002 uint64
NMD::extract_u_11_10_9_8_7_6_5_4_3_2_1_0(uint64 instruction
)
1005 value
|= extract_bits(instruction
, 0, 12);
1010 uint64
NMD::extract_rs_4_3_2_1_0(uint64 instruction
)
1013 value
|= extract_bits(instruction
, 0, 5);
1018 uint64
NMD::extract_u_20_to_3__s3(uint64 instruction
)
1021 value
|= extract_bits(instruction
, 3, 18) << 3;
1026 uint64
NMD::extract_u_3_2_1_0__s2(uint64 instruction
)
1029 value
|= extract_bits(instruction
, 0, 4) << 2;
1034 uint64
NMD::extract_cofun_25_24_23(uint64 instruction
)
1037 value
|= extract_bits(instruction
, 3, 23);
1042 uint64
NMD::extract_u_2_1_0__s2(uint64 instruction
)
1045 value
|= extract_bits(instruction
, 0, 3) << 2;
1050 uint64
NMD::extract_rd3_3_2_1(uint64 instruction
)
1053 value
|= extract_bits(instruction
, 1, 3);
1058 uint64
NMD::extract_sa_15_14_13_12(uint64 instruction
)
1061 value
|= extract_bits(instruction
, 12, 4);
1066 uint64
NMD::extract_rt_25_24_23_22_21(uint64 instruction
)
1069 value
|= extract_bits(instruction
, 21, 5);
1074 uint64
NMD::extract_ru_7_6_5_4_3(uint64 instruction
)
1077 value
|= extract_bits(instruction
, 3, 5);
1082 uint64
NMD::extract_u_17_to_0(uint64 instruction
)
1085 value
|= extract_bits(instruction
, 0, 18);
1090 uint64
NMD::extract_rsz4_4_2_1_0(uint64 instruction
)
1093 value
|= extract_bits(instruction
, 0, 3);
1094 value
|= extract_bits(instruction
, 4, 1) << 3;
1099 int64
NMD::extract_s__se21_0_20_to_1_s1(uint64 instruction
)
1102 value
|= extract_bits(instruction
, 0, 1) << 21;
1103 value
|= extract_bits(instruction
, 1, 20) << 1;
1104 value
= sign_extend(value
, 21);
1109 uint64
NMD::extract_op_25_to_3(uint64 instruction
)
1112 value
|= extract_bits(instruction
, 3, 23);
1117 uint64
NMD::extract_rs4_4_2_1_0(uint64 instruction
)
1120 value
|= extract_bits(instruction
, 0, 3);
1121 value
|= extract_bits(instruction
, 4, 1) << 3;
1126 uint64
NMD::extract_bit_23_22_21(uint64 instruction
)
1129 value
|= extract_bits(instruction
, 21, 3);
1134 uint64
NMD::extract_rt_41_40_39_38_37(uint64 instruction
)
1137 value
|= extract_bits(instruction
, 37, 5);
1142 int64
NMD::extract_shift__se5_21_20_19_18_17_16(uint64 instruction
)
1145 value
|= extract_bits(instruction
, 16, 6);
1146 value
= sign_extend(value
, 5);
1151 uint64
NMD::extract_rd2_3_8(uint64 instruction
)
1154 value
|= extract_bits(instruction
, 3, 1) << 1;
1155 value
|= extract_bits(instruction
, 8, 1);
1160 uint64
NMD::extract_code_17_to_0(uint64 instruction
)
1163 value
|= extract_bits(instruction
, 0, 18);
1168 uint64
NMD::extract_size_20_19_18_17_16(uint64 instruction
)
1171 value
|= extract_bits(instruction
, 16, 5);
1176 int64
NMD::extract_s__se8_15_7_6_5_4_3_2_s2(uint64 instruction
)
1179 value
|= extract_bits(instruction
, 2, 6) << 2;
1180 value
|= extract_bits(instruction
, 15, 1) << 8;
1181 value
= sign_extend(value
, 8);
1186 uint64
NMD::extract_u_15_to_0(uint64 instruction
)
1189 value
|= extract_bits(instruction
, 0, 16);
1194 uint64
NMD::extract_fs_20_19_18_17_16(uint64 instruction
)
1197 value
|= extract_bits(instruction
, 16, 5);
1202 int64
NMD::extract_s__se8_15_7_6_5_4_3_2_1_0(uint64 instruction
)
1205 value
|= extract_bits(instruction
, 0, 8);
1206 value
|= extract_bits(instruction
, 15, 1) << 8;
1207 value
= sign_extend(value
, 8);
1212 uint64
NMD::extract_stype_20_19_18_17_16(uint64 instruction
)
1215 value
|= extract_bits(instruction
, 16, 5);
1220 uint64
NMD::extract_rtl_11(uint64 instruction
)
1223 value
|= extract_bits(instruction
, 9, 1);
1228 uint64
NMD::extract_hs_20_19_18_17_16(uint64 instruction
)
1231 value
|= extract_bits(instruction
, 16, 5);
1236 uint64
NMD::extract_sel_13_12_11(uint64 instruction
)
1239 value
|= extract_bits(instruction
, 11, 3);
1244 uint64
NMD::extract_lsb_4_3_2_1_0(uint64 instruction
)
1247 value
|= extract_bits(instruction
, 0, 5);
1252 uint64
NMD::extract_gp_2(uint64 instruction
)
1255 value
|= extract_bits(instruction
, 2, 1);
1260 uint64
NMD::extract_rt3_9_8_7(uint64 instruction
)
1263 value
|= extract_bits(instruction
, 7, 3);
1268 uint64
NMD::extract_ft_25_24_23_22_21(uint64 instruction
)
1271 value
|= extract_bits(instruction
, 21, 5);
1276 uint64
NMD::extract_u_17_16_15_14_13_12_11(uint64 instruction
)
1279 value
|= extract_bits(instruction
, 11, 7);
1284 uint64
NMD::extract_cs_20_19_18_17_16(uint64 instruction
)
1287 value
|= extract_bits(instruction
, 16, 5);
1292 uint64
NMD::extract_rt4_9_7_6_5(uint64 instruction
)
1295 value
|= extract_bits(instruction
, 5, 3);
1296 value
|= extract_bits(instruction
, 9, 1) << 3;
1301 uint64
NMD::extract_msbt_10_9_8_7_6(uint64 instruction
)
1304 value
|= extract_bits(instruction
, 6, 5);
1309 uint64
NMD::extract_u_5_4_3_2_1_0__s2(uint64 instruction
)
1312 value
|= extract_bits(instruction
, 0, 6) << 2;
1317 uint64
NMD::extract_sa_15_14_13(uint64 instruction
)
1320 value
|= extract_bits(instruction
, 13, 3);
1325 int64
NMD::extract_s__se14_0_13_to_1_s1(uint64 instruction
)
1328 value
|= extract_bits(instruction
, 0, 1) << 14;
1329 value
|= extract_bits(instruction
, 1, 13) << 1;
1330 value
= sign_extend(value
, 14);
1335 uint64
NMD::extract_rs3_6_5_4(uint64 instruction
)
1338 value
|= extract_bits(instruction
, 4, 3);
1343 uint64
NMD::extract_u_31_to_0__s32(uint64 instruction
)
1346 value
|= extract_bits(instruction
, 0, 32) << 32;
1351 uint64
NMD::extract_shift_10_9_8_7_6(uint64 instruction
)
1354 value
|= extract_bits(instruction
, 6, 5);
1359 uint64
NMD::extract_cs_25_24_23_22_21(uint64 instruction
)
1362 value
|= extract_bits(instruction
, 21, 5);
1367 uint64
NMD::extract_shiftx_11_10_9_8_7_6(uint64 instruction
)
1370 value
|= extract_bits(instruction
, 6, 6);
1375 uint64
NMD::extract_rt_9_8_7_6_5(uint64 instruction
)
1378 value
|= extract_bits(instruction
, 5, 5);
1383 uint64
NMD::extract_op_25_24_23_22_21(uint64 instruction
)
1386 value
|= extract_bits(instruction
, 21, 5);
1391 uint64
NMD::extract_u_6_5_4_3_2_1_0__s2(uint64 instruction
)
1394 value
|= extract_bits(instruction
, 0, 7) << 2;
1399 uint64
NMD::extract_bit_16_15_14_13_12_11(uint64 instruction
)
1402 value
|= extract_bits(instruction
, 11, 6);
1407 uint64
NMD::extract_mask_20_19_18_17_16_15_14(uint64 instruction
)
1410 value
|= extract_bits(instruction
, 14, 7);
1415 uint64
NMD::extract_eu_3_2_1_0(uint64 instruction
)
1418 value
|= extract_bits(instruction
, 0, 4);
1423 uint64
NMD::extract_u_7_6_5_4__s4(uint64 instruction
)
1426 value
|= extract_bits(instruction
, 4, 4) << 4;
1431 int64
NMD::extract_s__se8_15_7_6_5_4_3_s3(uint64 instruction
)
1434 value
|= extract_bits(instruction
, 3, 5) << 3;
1435 value
|= extract_bits(instruction
, 15, 1) << 8;
1436 value
= sign_extend(value
, 8);
1441 uint64
NMD::extract_ft_15_14_13_12_11(uint64 instruction
)
1444 value
|= extract_bits(instruction
, 11, 5);
1449 int64
NMD::extract_s__se31_15_to_0_31_to_16(uint64 instruction
)
1452 value
|= extract_bits(instruction
, 0, 16) << 16;
1453 value
|= extract_bits(instruction
, 16, 16);
1454 value
= sign_extend(value
, 31);
1459 uint64
NMD::extract_u_20_19_18_17_16_15_14_13(uint64 instruction
)
1462 value
|= extract_bits(instruction
, 13, 8);
1467 uint64
NMD::extract_u_17_to_2__s2(uint64 instruction
)
1470 value
|= extract_bits(instruction
, 2, 16) << 2;
1475 uint64
NMD::extract_rd_15_14_13_12_11(uint64 instruction
)
1478 value
|= extract_bits(instruction
, 11, 5);
1483 uint64
NMD::extract_c0s_20_19_18_17_16(uint64 instruction
)
1486 value
|= extract_bits(instruction
, 16, 5);
1491 uint64
NMD::extract_code_1_0(uint64 instruction
)
1494 value
|= extract_bits(instruction
, 0, 2);
1499 int64
NMD::extract_s__se25_0_24_to_1_s1(uint64 instruction
)
1502 value
|= extract_bits(instruction
, 0, 1) << 25;
1503 value
|= extract_bits(instruction
, 1, 24) << 1;
1504 value
= sign_extend(value
, 25);
1509 uint64
NMD::extract_u_1_0(uint64 instruction
)
1512 value
|= extract_bits(instruction
, 0, 2);
1517 uint64
NMD::extract_u_3_8__s2(uint64 instruction
)
1520 value
|= extract_bits(instruction
, 3, 1) << 3;
1521 value
|= extract_bits(instruction
, 8, 1) << 2;
1526 uint64
NMD::extract_fd_15_14_13_12_11(uint64 instruction
)
1529 value
|= extract_bits(instruction
, 11, 5);
1534 uint64
NMD::extract_u_4_3_2_1_0__s2(uint64 instruction
)
1537 value
|= extract_bits(instruction
, 0, 5) << 2;
1542 uint64
NMD::extract_rtz4_9_7_6_5(uint64 instruction
)
1545 value
|= extract_bits(instruction
, 5, 3);
1546 value
|= extract_bits(instruction
, 9, 1) << 3;
1551 uint64
NMD::extract_sel_15_14_13_12_11(uint64 instruction
)
1554 value
|= extract_bits(instruction
, 11, 5);
1559 uint64
NMD::extract_ct_25_24_23_22_21(uint64 instruction
)
1562 value
|= extract_bits(instruction
, 21, 5);
1567 uint64
NMD::extract_u_20_to_2__s2(uint64 instruction
)
1570 value
|= extract_bits(instruction
, 2, 19) << 2;
1575 int64
NMD::extract_s__se3_4_2_1_0(uint64 instruction
)
1578 value
|= extract_bits(instruction
, 0, 3);
1579 value
|= extract_bits(instruction
, 4, 1) << 3;
1580 value
= sign_extend(value
, 3);
1585 uint64
NMD::extract_u_3_2_1_0__s1(uint64 instruction
)
1588 value
|= extract_bits(instruction
, 0, 4) << 1;
1594 bool NMD::ADDIU_32__cond(uint64 instruction
)
1596 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1601 bool NMD::ADDIU_RS5__cond(uint64 instruction
)
1603 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1608 bool NMD::BALRSC_cond(uint64 instruction
)
1610 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1615 bool NMD::BEQC_16__cond(uint64 instruction
)
1617 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1618 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1619 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1620 return rs3
< rt3
&& u
!= 0;
1624 bool NMD::BNEC_16__cond(uint64 instruction
)
1626 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1627 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1628 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1629 return rs3
>= rt3
&& u
!= 0;
1633 bool NMD::MOVE_cond(uint64 instruction
)
1635 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1640 bool NMD::P16_BR1_cond(uint64 instruction
)
1642 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1647 bool NMD::PREF_S9__cond(uint64 instruction
)
1649 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1654 bool NMD::PREFE_cond(uint64 instruction
)
1656 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1661 bool NMD::SLTU_cond(uint64 instruction
)
1663 uint64 rd
= extract_rd_15_14_13_12_11(instruction
);
1670 * ABS.D fd, fs - Floating Point Absolute Value
1673 * 10987654321098765432109876543210
1674 * 010001 00000 000101
1679 std::string
NMD::ABS_D(uint64 instruction
)
1681 uint64 fd_value
= extract_ft_25_24_23_22_21(instruction
);
1682 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1684 std::string fs
= FPR(copy(fs_value
));
1685 std::string fd
= FPR(copy(fd_value
));
1687 return img::format("ABS.D %s, %s", fd
, fs
);
1692 * ABS.S fd, fs - Floating Point Absolute Value
1695 * 10987654321098765432109876543210
1696 * 010001 00000 000101
1701 std::string
NMD::ABS_S(uint64 instruction
)
1703 uint64 fd_value
= extract_ft_25_24_23_22_21(instruction
);
1704 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1706 std::string fs
= FPR(copy(fs_value
));
1707 std::string fd
= FPR(copy(fd_value
));
1709 return img::format("ABS.S %s, %s", fd
, fs
);
1714 * ABSQ_S.PH rt, rs - Find Absolute Value of Two Fractional Halfwords
1717 * 10987654321098765432109876543210
1718 * 001000 0001000100111111
1722 std::string
NMD::ABSQ_S_PH(uint64 instruction
)
1724 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1725 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1727 std::string rt
= GPR(copy(rt_value
));
1728 std::string rs
= GPR(copy(rs_value
));
1730 return img::format("ABSQ_S.PH %s, %s", rt
, rs
);
1735 * ABSQ_S.QB rt, rs - Find Absolute Value of Four Fractional Byte Values
1738 * 10987654321098765432109876543210
1739 * 001000 0000000100111111
1743 std::string
NMD::ABSQ_S_QB(uint64 instruction
)
1745 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1746 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1748 std::string rt
= GPR(copy(rt_value
));
1749 std::string rs
= GPR(copy(rs_value
));
1751 return img::format("ABSQ_S.QB %s, %s", rt
, rs
);
1759 * 10987654321098765432109876543210
1760 * 001000 0010000100111111
1764 std::string
NMD::ABSQ_S_W(uint64 instruction
)
1766 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1767 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1769 std::string rt
= GPR(copy(rt_value
));
1770 std::string rs
= GPR(copy(rs_value
));
1772 return img::format("ABSQ_S.W %s, %s", rt
, rs
);
1780 * 10987654321098765432109876543210
1781 * 001000 0010000100111111
1785 std::string
NMD::ACLR(uint64 instruction
)
1787 uint64 bit_value
= extract_bit_23_22_21(instruction
);
1788 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1789 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
1791 std::string bit
= IMMEDIATE(copy(bit_value
));
1792 std::string s
= IMMEDIATE(copy(s_value
));
1793 std::string rs
= GPR(copy(rs_value
));
1795 return img::format("ACLR %s, %s(%s)", bit
, s
, rs
);
1803 * 10987654321098765432109876543210
1804 * 001000 0010000100111111
1808 std::string
NMD::ADD(uint64 instruction
)
1810 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1811 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1812 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
1814 std::string rd
= GPR(copy(rd_value
));
1815 std::string rs
= GPR(copy(rs_value
));
1816 std::string rt
= GPR(copy(rt_value
));
1818 return img::format("ADD %s, %s, %s", rd
, rs
, rt
);
1823 * ADD.D fd, fs, ft - Floating Point Add
1826 * 10987654321098765432109876543210
1833 std::string
NMD::ADD_D(uint64 instruction
)
1835 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
1836 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1837 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
1839 std::string ft
= FPR(copy(ft_value
));
1840 std::string fs
= FPR(copy(fs_value
));
1841 std::string fd
= FPR(copy(fd_value
));
1843 return img::format("ADD.D %s, %s, %s", fd
, fs
, ft
);
1848 * ADD.S fd, fs, ft - Floating Point Add
1851 * 10987654321098765432109876543210
1858 std::string
NMD::ADD_S(uint64 instruction
)
1860 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
1861 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1862 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
1864 std::string ft
= FPR(copy(ft_value
));
1865 std::string fs
= FPR(copy(fs_value
));
1866 std::string fd
= FPR(copy(fd_value
));
1868 return img::format("ADD.S %s, %s, %s", fd
, fs
, ft
);
1876 * 10987654321098765432109876543210
1877 * 001000 0010000100111111
1881 std::string
NMD::ADDIU_32_(uint64 instruction
)
1883 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1884 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1885 uint64 u_value
= extract_u_15_to_0(instruction
);
1887 std::string rt
= GPR(copy(rt_value
));
1888 std::string rs
= GPR(copy(rs_value
));
1889 std::string u
= IMMEDIATE(copy(u_value
));
1891 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
1899 * 10987654321098765432109876543210
1900 * 001000 0010000100111111
1904 std::string
NMD::ADDIU_48_(uint64 instruction
)
1906 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
1907 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
1909 std::string rt
= GPR(copy(rt_value
));
1910 std::string s
= IMMEDIATE(copy(s_value
));
1912 return img::format("ADDIU %s, %s", rt
, s
);
1920 * 10987654321098765432109876543210
1921 * 001000 0010000100111111
1925 std::string
NMD::ADDIU_GP48_(uint64 instruction
)
1927 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
1928 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
1930 std::string rt
= GPR(copy(rt_value
));
1931 std::string s
= IMMEDIATE(copy(s_value
));
1933 return img::format("ADDIU %s, $%d, %s", rt
, 28, s
);
1941 * 10987654321098765432109876543210
1942 * 001000 0010000100111111
1946 std::string
NMD::ADDIU_GP_B_(uint64 instruction
)
1948 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1949 uint64 u_value
= extract_u_17_to_0(instruction
);
1951 std::string rt
= GPR(copy(rt_value
));
1952 std::string u
= IMMEDIATE(copy(u_value
));
1954 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
1962 * 10987654321098765432109876543210
1963 * 001000 0010000100111111
1967 std::string
NMD::ADDIU_GP_W_(uint64 instruction
)
1969 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1970 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
1972 std::string rt
= GPR(copy(rt_value
));
1973 std::string u
= IMMEDIATE(copy(u_value
));
1975 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
1983 * 10987654321098765432109876543210
1984 * 001000 0010000100111111
1988 std::string
NMD::ADDIU_NEG_(uint64 instruction
)
1990 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1991 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1992 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
1994 std::string rt
= GPR(copy(rt_value
));
1995 std::string rs
= GPR(copy(rs_value
));
1996 std::string u
= IMMEDIATE(neg_copy(u_value
));
1998 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
2006 * 10987654321098765432109876543210
2007 * 001000 0010000100111111
2011 std::string
NMD::ADDIU_R1_SP_(uint64 instruction
)
2013 uint64 u_value
= extract_u_5_4_3_2_1_0__s2(instruction
);
2014 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2016 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2017 std::string u
= IMMEDIATE(copy(u_value
));
2019 return img::format("ADDIU %s, $%d, %s", rt3
, 29, u
);
2027 * 10987654321098765432109876543210
2028 * 001000 0010000100111111
2032 std::string
NMD::ADDIU_R2_(uint64 instruction
)
2034 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2035 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2036 uint64 u_value
= extract_u_2_1_0__s2(instruction
);
2038 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2039 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2040 std::string u
= IMMEDIATE(copy(u_value
));
2042 return img::format("ADDIU %s, %s, %s", rt3
, rs3
, u
);
2047 * ADDIU[RS5] rt, s5 - Add Signed Word and Set Carry Bit
2054 std::string
NMD::ADDIU_RS5_(uint64 instruction
)
2056 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
2057 int64 s_value
= extract_s__se3_4_2_1_0(instruction
);
2059 std::string rt
= GPR(copy(rt_value
));
2060 std::string s
= IMMEDIATE(copy(s_value
));
2062 return img::format("ADDIU %s, %s", rt
, s
);
2070 * 10987654321098765432109876543210
2071 * 001000 x1110000101
2076 std::string
NMD::ADDIUPC_32_(uint64 instruction
)
2078 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2079 int64 s_value
= extract_s__se21_0_20_to_1_s1(instruction
);
2081 std::string rt
= GPR(copy(rt_value
));
2082 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2084 return img::format("ADDIUPC %s, %s", rt
, s
);
2092 * 10987654321098765432109876543210
2093 * 001000 x1110000101
2098 std::string
NMD::ADDIUPC_48_(uint64 instruction
)
2100 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2101 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
2103 std::string rt
= GPR(copy(rt_value
));
2104 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
2106 return img::format("ADDIUPC %s, %s", rt
, s
);
2111 * ADDQ.PH rd, rt, rs - Add Fractional Halfword Vectors
2114 * 10987654321098765432109876543210
2115 * 001000 00000001101
2120 std::string
NMD::ADDQ_PH(uint64 instruction
)
2122 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2123 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2124 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2126 std::string rd
= GPR(copy(rd_value
));
2127 std::string rs
= GPR(copy(rs_value
));
2128 std::string rt
= GPR(copy(rt_value
));
2130 return img::format("ADDQ.PH %s, %s, %s", rd
, rs
, rt
);
2135 * ADDQ_S.PH rd, rt, rs - Add Fractional Halfword Vectors
2138 * 10987654321098765432109876543210
2139 * 001000 10000001101
2144 std::string
NMD::ADDQ_S_PH(uint64 instruction
)
2146 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2147 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2148 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2150 std::string rd
= GPR(copy(rd_value
));
2151 std::string rs
= GPR(copy(rs_value
));
2152 std::string rt
= GPR(copy(rt_value
));
2154 return img::format("ADDQ_S.PH %s, %s, %s", rd
, rs
, rt
);
2159 * ADDQ_S.W rd, rt, rs - Add Fractional Words
2162 * 10987654321098765432109876543210
2163 * 001000 x1100000101
2168 std::string
NMD::ADDQ_S_W(uint64 instruction
)
2170 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2171 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2172 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2174 std::string rd
= GPR(copy(rd_value
));
2175 std::string rs
= GPR(copy(rs_value
));
2176 std::string rt
= GPR(copy(rt_value
));
2178 return img::format("ADDQ_S.W %s, %s, %s", rd
, rs
, rt
);
2183 * ADDQH.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2187 * 10987654321098765432109876543210
2188 * 001000 00001001101
2193 std::string
NMD::ADDQH_PH(uint64 instruction
)
2195 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2196 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2197 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2199 std::string rd
= GPR(copy(rd_value
));
2200 std::string rs
= GPR(copy(rs_value
));
2201 std::string rt
= GPR(copy(rt_value
));
2203 return img::format("ADDQH.PH %s, %s, %s", rd
, rs
, rt
);
2208 * ADDQH_R.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2212 * 10987654321098765432109876543210
2213 * 001000 10001001101
2218 std::string
NMD::ADDQH_R_PH(uint64 instruction
)
2220 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2221 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2222 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2224 std::string rd
= GPR(copy(rd_value
));
2225 std::string rs
= GPR(copy(rs_value
));
2226 std::string rt
= GPR(copy(rt_value
));
2228 return img::format("ADDQH_R.PH %s, %s, %s", rd
, rs
, rt
);
2233 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2236 * 10987654321098765432109876543210
2237 * 001000 00010001101
2242 std::string
NMD::ADDQH_R_W(uint64 instruction
)
2244 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2245 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2246 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2248 std::string rd
= GPR(copy(rd_value
));
2249 std::string rs
= GPR(copy(rs_value
));
2250 std::string rt
= GPR(copy(rt_value
));
2252 return img::format("ADDQH_R.W %s, %s, %s", rd
, rs
, rt
);
2257 * ADDQH.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2260 * 10987654321098765432109876543210
2261 * 001000 10010001101
2266 std::string
NMD::ADDQH_W(uint64 instruction
)
2268 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2269 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2270 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2272 std::string rd
= GPR(copy(rd_value
));
2273 std::string rs
= GPR(copy(rs_value
));
2274 std::string rt
= GPR(copy(rt_value
));
2276 return img::format("ADDQH.W %s, %s, %s", rd
, rs
, rt
);
2281 * ADDSC rd, rt, rs - Add Signed Word and Set Carry Bit
2284 * 10987654321098765432109876543210
2285 * 001000 x1110000101
2290 std::string
NMD::ADDSC(uint64 instruction
)
2292 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2293 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2294 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2296 std::string rd
= GPR(copy(rd_value
));
2297 std::string rs
= GPR(copy(rs_value
));
2298 std::string rt
= GPR(copy(rt_value
));
2300 return img::format("ADDSC %s, %s, %s", rd
, rs
, rt
);
2305 * ADDU[16] rd3, rs3, rt3 -
2313 std::string
NMD::ADDU_16_(uint64 instruction
)
2315 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2316 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2317 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
2319 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2320 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2321 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
2323 return img::format("ADDU %s, %s, %s", rd3
, rs3
, rt3
);
2331 * 10987654321098765432109876543210
2332 * 001000 x1110000101
2337 std::string
NMD::ADDU_32_(uint64 instruction
)
2339 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2340 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2341 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2343 std::string rd
= GPR(copy(rd_value
));
2344 std::string rs
= GPR(copy(rs_value
));
2345 std::string rt
= GPR(copy(rt_value
));
2347 return img::format("ADDU %s, %s, %s", rd
, rs
, rt
);
2355 * 10987654321098765432109876543210
2356 * 001000 x1110000101
2361 std::string
NMD::ADDU_4X4_(uint64 instruction
)
2363 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
2364 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
2366 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
2367 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
2369 return img::format("ADDU %s, %s", rs4
, rt4
);
2374 * ADDU.PH rd, rt, rs - Unsigned Add Integer Halfwords
2377 * 10987654321098765432109876543210
2378 * 001000 00100001101
2383 std::string
NMD::ADDU_PH(uint64 instruction
)
2385 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2386 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2387 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2389 std::string rd
= GPR(copy(rd_value
));
2390 std::string rs
= GPR(copy(rs_value
));
2391 std::string rt
= GPR(copy(rt_value
));
2393 return img::format("ADDU.PH %s, %s, %s", rd
, rs
, rt
);
2398 * ADDU.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2401 * 10987654321098765432109876543210
2402 * 001000 00011001101
2407 std::string
NMD::ADDU_QB(uint64 instruction
)
2409 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2410 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2411 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2413 std::string rd
= GPR(copy(rd_value
));
2414 std::string rs
= GPR(copy(rs_value
));
2415 std::string rt
= GPR(copy(rt_value
));
2417 return img::format("ADDU.QB %s, %s, %s", rd
, rs
, rt
);
2422 * ADDU_S.PH rd, rt, rs - Unsigned Add Integer Halfwords
2425 * 10987654321098765432109876543210
2426 * 001000 10100001101
2431 std::string
NMD::ADDU_S_PH(uint64 instruction
)
2433 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2434 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2435 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2437 std::string rd
= GPR(copy(rd_value
));
2438 std::string rs
= GPR(copy(rs_value
));
2439 std::string rt
= GPR(copy(rt_value
));
2441 return img::format("ADDU_S.PH %s, %s, %s", rd
, rs
, rt
);
2446 * ADDU_S.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2449 * 10987654321098765432109876543210
2450 * 001000 10011001101
2455 std::string
NMD::ADDU_S_QB(uint64 instruction
)
2457 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2458 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2459 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2461 std::string rd
= GPR(copy(rd_value
));
2462 std::string rs
= GPR(copy(rs_value
));
2463 std::string rt
= GPR(copy(rt_value
));
2465 return img::format("ADDU_S.QB %s, %s, %s", rd
, rs
, rt
);
2470 * ADDUH.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2474 * 10987654321098765432109876543210
2475 * 001000 00101001101
2480 std::string
NMD::ADDUH_QB(uint64 instruction
)
2482 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2483 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2484 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2486 std::string rd
= GPR(copy(rd_value
));
2487 std::string rs
= GPR(copy(rs_value
));
2488 std::string rt
= GPR(copy(rt_value
));
2490 return img::format("ADDUH.QB %s, %s, %s", rd
, rs
, rt
);
2495 * ADDUH_R.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2499 * 10987654321098765432109876543210
2500 * 001000 10101001101
2505 std::string
NMD::ADDUH_R_QB(uint64 instruction
)
2507 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2508 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2509 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2511 std::string rd
= GPR(copy(rd_value
));
2512 std::string rs
= GPR(copy(rs_value
));
2513 std::string rt
= GPR(copy(rt_value
));
2515 return img::format("ADDUH_R.QB %s, %s, %s", rd
, rs
, rt
);
2519 * ADDWC rd, rt, rs - Add Word with Carry Bit
2522 * 10987654321098765432109876543210
2523 * 001000 x1111000101
2528 std::string
NMD::ADDWC(uint64 instruction
)
2530 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2531 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2532 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2534 std::string rd
= GPR(copy(rd_value
));
2535 std::string rs
= GPR(copy(rs_value
));
2536 std::string rt
= GPR(copy(rt_value
));
2538 return img::format("ADDWC %s, %s, %s", rd
, rs
, rt
);
2546 * 10987654321098765432109876543210
2547 * 001000 x1110000101
2552 std::string
NMD::ALUIPC(uint64 instruction
)
2554 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2555 int64 s_value
= extract_s__se31_0_11_to_2_20_to_12_s12(instruction
);
2557 std::string rt
= GPR(copy(rt_value
));
2558 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2560 return img::format("ALUIPC %s, %%pcrel_hi(%s)", rt
, s
);
2565 * AND[16] rt3, rs3 -
2573 std::string
NMD::AND_16_(uint64 instruction
)
2575 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2576 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2578 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2579 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2581 return img::format("AND %s, %s", rs3
, rt3
);
2589 * 10987654321098765432109876543210
2590 * 001000 x1110000101
2595 std::string
NMD::AND_32_(uint64 instruction
)
2597 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2598 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2599 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2601 std::string rd
= GPR(copy(rd_value
));
2602 std::string rs
= GPR(copy(rs_value
));
2603 std::string rt
= GPR(copy(rt_value
));
2605 return img::format("AND %s, %s, %s", rd
, rs
, rt
);
2618 std::string
NMD::ANDI_16_(uint64 instruction
)
2620 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2621 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2622 uint64 eu_value
= extract_eu_3_2_1_0(instruction
);
2624 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2625 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2626 std::string eu
= IMMEDIATE(encode_eu_from_u_andi16(eu_value
));
2628 return img::format("ANDI %s, %s, %s", rt3
, rs3
, eu
);
2636 * 10987654321098765432109876543210
2637 * 001000 x1110000101
2642 std::string
NMD::ANDI_32_(uint64 instruction
)
2644 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2645 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2646 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
2648 std::string rt
= GPR(copy(rt_value
));
2649 std::string rs
= GPR(copy(rs_value
));
2650 std::string u
= IMMEDIATE(copy(u_value
));
2652 return img::format("ANDI %s, %s, %s", rt
, rs
, u
);
2660 * 10987654321098765432109876543210
2661 * 001000 x1110000101
2666 std::string
NMD::APPEND(uint64 instruction
)
2668 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2669 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2670 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
2672 std::string rt
= GPR(copy(rt_value
));
2673 std::string rs
= GPR(copy(rs_value
));
2674 std::string sa
= IMMEDIATE(copy(sa_value
));
2676 return img::format("APPEND %s, %s, %s", rt
, rs
, sa
);
2684 * 10987654321098765432109876543210
2685 * 001000 x1110000101
2690 std::string
NMD::ASET(uint64 instruction
)
2692 uint64 bit_value
= extract_bit_23_22_21(instruction
);
2693 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2694 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
2696 std::string bit
= IMMEDIATE(copy(bit_value
));
2697 std::string s
= IMMEDIATE(copy(s_value
));
2698 std::string rs
= GPR(copy(rs_value
));
2700 return img::format("ASET %s, %s(%s)", bit
, s
, rs
);
2708 * 10987654321098765432109876543210
2709 * 001000 x1110000101
2714 std::string
NMD::BALC_16_(uint64 instruction
)
2716 int64 s_value
= extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(instruction
);
2718 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2720 return img::format("BALC %s", s
);
2728 * 10987654321098765432109876543210
2729 * 001000 x1110000101
2734 std::string
NMD::BALC_32_(uint64 instruction
)
2736 int64 s_value
= extract_s__se25_0_24_to_1_s1(instruction
);
2738 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2740 return img::format("BALC %s", s
);
2748 * 10987654321098765432109876543210
2749 * 001000 x1110000101
2754 std::string
NMD::BALRSC(uint64 instruction
)
2756 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2757 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2759 std::string rt
= GPR(copy(rt_value
));
2760 std::string rs
= GPR(copy(rs_value
));
2762 return img::format("BALRSC %s, %s", rt
, rs
);
2770 * 10987654321098765432109876543210
2771 * 001000 x1110000101
2776 std::string
NMD::BBEQZC(uint64 instruction
)
2778 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2779 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2780 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
2782 std::string rt
= GPR(copy(rt_value
));
2783 std::string bit
= IMMEDIATE(copy(bit_value
));
2784 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2786 return img::format("BBEQZC %s, %s, %s", rt
, bit
, s
);
2794 * 10987654321098765432109876543210
2795 * 001000 x1110000101
2800 std::string
NMD::BBNEZC(uint64 instruction
)
2802 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2803 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2804 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
2806 std::string rt
= GPR(copy(rt_value
));
2807 std::string bit
= IMMEDIATE(copy(bit_value
));
2808 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2810 return img::format("BBNEZC %s, %s, %s", rt
, bit
, s
);
2818 * 10987654321098765432109876543210
2819 * 001000 x1110000101
2824 std::string
NMD::BC_16_(uint64 instruction
)
2826 int64 s_value
= extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(instruction
);
2828 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2830 return img::format("BC %s", s
);
2838 * 10987654321098765432109876543210
2839 * 001000 x1110000101
2844 std::string
NMD::BC_32_(uint64 instruction
)
2846 int64 s_value
= extract_s__se25_0_24_to_1_s1(instruction
);
2848 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2850 return img::format("BC %s", s
);
2858 * 10987654321098765432109876543210
2859 * 001000 x1110000101
2864 std::string
NMD::BC1EQZC(uint64 instruction
)
2866 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
2867 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2869 std::string ft
= FPR(copy(ft_value
));
2870 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2872 return img::format("BC1EQZC %s, %s", ft
, s
);
2880 * 10987654321098765432109876543210
2881 * 001000 x1110000101
2886 std::string
NMD::BC1NEZC(uint64 instruction
)
2888 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
2889 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2891 std::string ft
= FPR(copy(ft_value
));
2892 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2894 return img::format("BC1NEZC %s, %s", ft
, s
);
2902 * 10987654321098765432109876543210
2903 * 001000 x1110000101
2908 std::string
NMD::BC2EQZC(uint64 instruction
)
2910 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
2911 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2913 std::string ct
= CPR(copy(ct_value
));
2914 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2916 return img::format("BC2EQZC %s, %s", ct
, s
);
2924 * 10987654321098765432109876543210
2925 * 001000 x1110000101
2930 std::string
NMD::BC2NEZC(uint64 instruction
)
2932 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
2933 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2935 std::string ct
= CPR(copy(ct_value
));
2936 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2938 return img::format("BC2NEZC %s, %s", ct
, s
);
2946 * 10987654321098765432109876543210
2947 * 001000 x1110000101
2952 std::string
NMD::BEQC_16_(uint64 instruction
)
2954 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2955 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2956 uint64 u_value
= extract_u_3_2_1_0__s1(instruction
);
2958 std::string rs3
= GPR(encode_rs3_and_check_rs3_lt_rt3(rs3_value
));
2959 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2960 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
2962 return img::format("BEQC %s, %s, %s", rs3
, rt3
, u
);
2970 * 10987654321098765432109876543210
2971 * 001000 x1110000101
2976 std::string
NMD::BEQC_32_(uint64 instruction
)
2978 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2979 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2980 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2982 std::string rs
= GPR(copy(rs_value
));
2983 std::string rt
= GPR(copy(rt_value
));
2984 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2986 return img::format("BEQC %s, %s, %s", rs
, rt
, s
);
2994 * 10987654321098765432109876543210
2995 * 001000 x1110000101
3000 std::string
NMD::BEQIC(uint64 instruction
)
3002 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3003 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3004 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3006 std::string rt
= GPR(copy(rt_value
));
3007 std::string u
= IMMEDIATE(copy(u_value
));
3008 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3010 return img::format("BEQIC %s, %s, %s", rt
, u
, s
);
3018 * 10987654321098765432109876543210
3019 * 001000 x1110000101
3024 std::string
NMD::BEQZC_16_(uint64 instruction
)
3026 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3027 int64 s_value
= extract_s__se7_0_6_5_4_3_2_1_s1(instruction
);
3029 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3030 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3032 return img::format("BEQZC %s, %s", rt3
, s
);
3040 * 10987654321098765432109876543210
3041 * 001000 x1110000101
3046 std::string
NMD::BGEC(uint64 instruction
)
3048 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3049 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3050 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3052 std::string rs
= GPR(copy(rs_value
));
3053 std::string rt
= GPR(copy(rt_value
));
3054 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3056 return img::format("BGEC %s, %s, %s", rs
, rt
, s
);
3064 * 10987654321098765432109876543210
3065 * 001000 x1110000101
3070 std::string
NMD::BGEIC(uint64 instruction
)
3072 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3073 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3074 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3076 std::string rt
= GPR(copy(rt_value
));
3077 std::string u
= IMMEDIATE(copy(u_value
));
3078 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3080 return img::format("BGEIC %s, %s, %s", rt
, u
, s
);
3088 * 10987654321098765432109876543210
3089 * 001000 x1110000101
3094 std::string
NMD::BGEIUC(uint64 instruction
)
3096 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3097 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3098 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3100 std::string rt
= GPR(copy(rt_value
));
3101 std::string u
= IMMEDIATE(copy(u_value
));
3102 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3104 return img::format("BGEIUC %s, %s, %s", rt
, u
, s
);
3112 * 10987654321098765432109876543210
3113 * 001000 x1110000101
3118 std::string
NMD::BGEUC(uint64 instruction
)
3120 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3121 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3122 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3124 std::string rs
= GPR(copy(rs_value
));
3125 std::string rt
= GPR(copy(rt_value
));
3126 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3128 return img::format("BGEUC %s, %s, %s", rs
, rt
, s
);
3136 * 10987654321098765432109876543210
3137 * 001000 x1110000101
3142 std::string
NMD::BLTC(uint64 instruction
)
3144 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3145 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3146 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3148 std::string rs
= GPR(copy(rs_value
));
3149 std::string rt
= GPR(copy(rt_value
));
3150 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3152 return img::format("BLTC %s, %s, %s", rs
, rt
, s
);
3160 * 10987654321098765432109876543210
3161 * 001000 x1110000101
3166 std::string
NMD::BLTIC(uint64 instruction
)
3168 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3169 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3170 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3172 std::string rt
= GPR(copy(rt_value
));
3173 std::string u
= IMMEDIATE(copy(u_value
));
3174 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3176 return img::format("BLTIC %s, %s, %s", rt
, u
, s
);
3184 * 10987654321098765432109876543210
3185 * 001000 x1110000101
3190 std::string
NMD::BLTIUC(uint64 instruction
)
3192 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3193 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3194 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3196 std::string rt
= GPR(copy(rt_value
));
3197 std::string u
= IMMEDIATE(copy(u_value
));
3198 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3200 return img::format("BLTIUC %s, %s, %s", rt
, u
, s
);
3208 * 10987654321098765432109876543210
3209 * 001000 x1110000101
3214 std::string
NMD::BLTUC(uint64 instruction
)
3216 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3217 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3218 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3220 std::string rs
= GPR(copy(rs_value
));
3221 std::string rt
= GPR(copy(rt_value
));
3222 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3224 return img::format("BLTUC %s, %s, %s", rs
, rt
, s
);
3232 * 10987654321098765432109876543210
3233 * 001000 x1110000101
3238 std::string
NMD::BNEC_16_(uint64 instruction
)
3240 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3241 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
3242 uint64 u_value
= extract_u_3_2_1_0__s1(instruction
);
3244 std::string rs3
= GPR(encode_rs3_and_check_rs3_ge_rt3(rs3_value
));
3245 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3246 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
3248 return img::format("BNEC %s, %s, %s", rs3
, rt3
, u
);
3256 * 10987654321098765432109876543210
3257 * 001000 x1110000101
3262 std::string
NMD::BNEC_32_(uint64 instruction
)
3264 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3265 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3266 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3268 std::string rs
= GPR(copy(rs_value
));
3269 std::string rt
= GPR(copy(rt_value
));
3270 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3272 return img::format("BNEC %s, %s, %s", rs
, rt
, s
);
3280 * 10987654321098765432109876543210
3281 * 001000 x1110000101
3286 std::string
NMD::BNEIC(uint64 instruction
)
3288 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3289 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3290 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3292 std::string rt
= GPR(copy(rt_value
));
3293 std::string u
= IMMEDIATE(copy(u_value
));
3294 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3296 return img::format("BNEIC %s, %s, %s", rt
, u
, s
);
3304 * 10987654321098765432109876543210
3305 * 001000 x1110000101
3310 std::string
NMD::BNEZC_16_(uint64 instruction
)
3312 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3313 int64 s_value
= extract_s__se7_0_6_5_4_3_2_1_s1(instruction
);
3315 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3316 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3318 return img::format("BNEZC %s, %s", rt3
, s
);
3326 * 10987654321098765432109876543210
3327 * 001000 x1110000101
3332 std::string
NMD::BPOSGE32C(uint64 instruction
)
3334 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3336 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3338 return img::format("BPOSGE32C %s", s
);
3346 * 10987654321098765432109876543210
3347 * 001000 x1110000101
3352 std::string
NMD::BREAK_16_(uint64 instruction
)
3354 uint64 code_value
= extract_code_2_1_0(instruction
);
3356 std::string code
= IMMEDIATE(copy(code_value
));
3358 return img::format("BREAK %s", code
);
3363 * BREAK code - Break. Cause a Breakpoint exception
3366 * 10987654321098765432109876543210
3367 * 001000 x1110000101
3372 std::string
NMD::BREAK_32_(uint64 instruction
)
3374 uint64 code_value
= extract_code_18_to_0(instruction
);
3376 std::string code
= IMMEDIATE(copy(code_value
));
3378 return img::format("BREAK %s", code
);
3386 * 10987654321098765432109876543210
3387 * 001000 x1110000101
3392 std::string
NMD::BRSC(uint64 instruction
)
3394 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3396 std::string rs
= GPR(copy(rs_value
));
3398 return img::format("BRSC %s", rs
);
3406 * 10987654321098765432109876543210
3407 * 001000 x1110000101
3412 std::string
NMD::CACHE(uint64 instruction
)
3414 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3415 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3416 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
3418 std::string op
= IMMEDIATE(copy(op_value
));
3419 std::string s
= IMMEDIATE(copy(s_value
));
3420 std::string rs
= GPR(copy(rs_value
));
3422 return img::format("CACHE %s, %s(%s)", op
, s
, rs
);
3430 * 10987654321098765432109876543210
3431 * 001000 x1110000101
3436 std::string
NMD::CACHEE(uint64 instruction
)
3438 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3439 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3440 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
3442 std::string op
= IMMEDIATE(copy(op_value
));
3443 std::string s
= IMMEDIATE(copy(s_value
));
3444 std::string rs
= GPR(copy(rs_value
));
3446 return img::format("CACHEE %s, %s(%s)", op
, s
, rs
);
3454 * 10987654321098765432109876543210
3455 * 001000 x1110000101
3460 std::string
NMD::CEIL_L_D(uint64 instruction
)
3462 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3463 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3465 std::string ft
= FPR(copy(ft_value
));
3466 std::string fs
= FPR(copy(fs_value
));
3468 return img::format("CEIL.L.D %s, %s", ft
, fs
);
3476 * 10987654321098765432109876543210
3477 * 001000 x1110000101
3482 std::string
NMD::CEIL_L_S(uint64 instruction
)
3484 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3485 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3487 std::string ft
= FPR(copy(ft_value
));
3488 std::string fs
= FPR(copy(fs_value
));
3490 return img::format("CEIL.L.S %s, %s", ft
, fs
);
3498 * 10987654321098765432109876543210
3499 * 001000 x1110000101
3504 std::string
NMD::CEIL_W_D(uint64 instruction
)
3506 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3507 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3509 std::string ft
= FPR(copy(ft_value
));
3510 std::string fs
= FPR(copy(fs_value
));
3512 return img::format("CEIL.W.D %s, %s", ft
, fs
);
3520 * 10987654321098765432109876543210
3521 * 001000 x1110000101
3526 std::string
NMD::CEIL_W_S(uint64 instruction
)
3528 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3529 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3531 std::string ft
= FPR(copy(ft_value
));
3532 std::string fs
= FPR(copy(fs_value
));
3534 return img::format("CEIL.W.S %s, %s", ft
, fs
);
3542 * 10987654321098765432109876543210
3543 * 001000 x1110000101
3548 std::string
NMD::CFC1(uint64 instruction
)
3550 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3551 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3553 std::string rt
= GPR(copy(rt_value
));
3554 std::string cs
= CPR(copy(cs_value
));
3556 return img::format("CFC1 %s, %s", rt
, cs
);
3564 * 10987654321098765432109876543210
3565 * 001000 x1110000101
3570 std::string
NMD::CFC2(uint64 instruction
)
3572 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3573 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3575 std::string rt
= GPR(copy(rt_value
));
3576 std::string cs
= CPR(copy(cs_value
));
3578 return img::format("CFC2 %s, %s", rt
, cs
);
3586 * 10987654321098765432109876543210
3587 * 001000 x1110000101
3592 std::string
NMD::CLASS_D(uint64 instruction
)
3594 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3595 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3597 std::string ft
= FPR(copy(ft_value
));
3598 std::string fs
= FPR(copy(fs_value
));
3600 return img::format("CLASS.D %s, %s", ft
, fs
);
3608 * 10987654321098765432109876543210
3609 * 001000 x1110000101
3614 std::string
NMD::CLASS_S(uint64 instruction
)
3616 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3617 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3619 std::string ft
= FPR(copy(ft_value
));
3620 std::string fs
= FPR(copy(fs_value
));
3622 return img::format("CLASS.S %s, %s", ft
, fs
);
3630 * 10987654321098765432109876543210
3631 * 001000 x1110000101
3636 std::string
NMD::CLO(uint64 instruction
)
3638 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3639 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3641 std::string rt
= GPR(copy(rt_value
));
3642 std::string rs
= GPR(copy(rs_value
));
3644 return img::format("CLO %s, %s", rt
, rs
);
3652 * 10987654321098765432109876543210
3653 * 001000 x1110000101
3658 std::string
NMD::CLZ(uint64 instruction
)
3660 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3661 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3663 std::string rt
= GPR(copy(rt_value
));
3664 std::string rs
= GPR(copy(rs_value
));
3666 return img::format("CLZ %s, %s", rt
, rs
);
3674 * 10987654321098765432109876543210
3675 * 001000 x1110000101
3680 std::string
NMD::CMP_AF_D(uint64 instruction
)
3682 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3683 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3684 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3686 std::string fd
= FPR(copy(fd_value
));
3687 std::string fs
= FPR(copy(fs_value
));
3688 std::string ft
= FPR(copy(ft_value
));
3690 return img::format("CMP.AF.D %s, %s, %s", fd
, fs
, ft
);
3698 * 10987654321098765432109876543210
3699 * 001000 x1110000101
3704 std::string
NMD::CMP_AF_S(uint64 instruction
)
3706 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3707 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3708 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3710 std::string fd
= FPR(copy(fd_value
));
3711 std::string fs
= FPR(copy(fs_value
));
3712 std::string ft
= FPR(copy(ft_value
));
3714 return img::format("CMP.AF.S %s, %s, %s", fd
, fs
, ft
);
3722 * 10987654321098765432109876543210
3723 * 001000 x1110000101
3728 std::string
NMD::CMP_EQ_D(uint64 instruction
)
3730 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3731 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3732 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3734 std::string fd
= FPR(copy(fd_value
));
3735 std::string fs
= FPR(copy(fs_value
));
3736 std::string ft
= FPR(copy(ft_value
));
3738 return img::format("CMP.EQ.D %s, %s, %s", fd
, fs
, ft
);
3746 * 10987654321098765432109876543210
3747 * 001000 x1110000101
3752 std::string
NMD::CMP_EQ_PH(uint64 instruction
)
3754 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3755 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3757 std::string rs
= GPR(copy(rs_value
));
3758 std::string rt
= GPR(copy(rt_value
));
3760 return img::format("CMP.EQ.PH %s, %s", rs
, rt
);
3768 * 10987654321098765432109876543210
3769 * 001000 x1110000101
3774 std::string
NMD::CMP_EQ_S(uint64 instruction
)
3776 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3777 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3778 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3780 std::string fd
= FPR(copy(fd_value
));
3781 std::string fs
= FPR(copy(fs_value
));
3782 std::string ft
= FPR(copy(ft_value
));
3784 return img::format("CMP.EQ.S %s, %s, %s", fd
, fs
, ft
);
3792 * 10987654321098765432109876543210
3793 * 001000 x1110000101
3798 std::string
NMD::CMP_LE_D(uint64 instruction
)
3800 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3801 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3802 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3804 std::string fd
= FPR(copy(fd_value
));
3805 std::string fs
= FPR(copy(fs_value
));
3806 std::string ft
= FPR(copy(ft_value
));
3808 return img::format("CMP.LE.D %s, %s, %s", fd
, fs
, ft
);
3816 * 10987654321098765432109876543210
3817 * 001000 x1110000101
3822 std::string
NMD::CMP_LE_PH(uint64 instruction
)
3824 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3825 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3827 std::string rs
= GPR(copy(rs_value
));
3828 std::string rt
= GPR(copy(rt_value
));
3830 return img::format("CMP.LE.PH %s, %s", rs
, rt
);
3838 * 10987654321098765432109876543210
3839 * 001000 x1110000101
3844 std::string
NMD::CMP_LE_S(uint64 instruction
)
3846 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3847 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3848 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3850 std::string fd
= FPR(copy(fd_value
));
3851 std::string fs
= FPR(copy(fs_value
));
3852 std::string ft
= FPR(copy(ft_value
));
3854 return img::format("CMP.LE.S %s, %s, %s", fd
, fs
, ft
);
3862 * 10987654321098765432109876543210
3863 * 001000 x1110000101
3868 std::string
NMD::CMP_LT_D(uint64 instruction
)
3870 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3871 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3872 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3874 std::string fd
= FPR(copy(fd_value
));
3875 std::string fs
= FPR(copy(fs_value
));
3876 std::string ft
= FPR(copy(ft_value
));
3878 return img::format("CMP.LT.D %s, %s, %s", fd
, fs
, ft
);
3886 * 10987654321098765432109876543210
3887 * 001000 x1110000101
3892 std::string
NMD::CMP_LT_PH(uint64 instruction
)
3894 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3895 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3897 std::string rs
= GPR(copy(rs_value
));
3898 std::string rt
= GPR(copy(rt_value
));
3900 return img::format("CMP.LT.PH %s, %s", rs
, rt
);
3908 * 10987654321098765432109876543210
3909 * 001000 x1110000101
3914 std::string
NMD::CMP_LT_S(uint64 instruction
)
3916 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3917 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3918 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3920 std::string fd
= FPR(copy(fd_value
));
3921 std::string fs
= FPR(copy(fs_value
));
3922 std::string ft
= FPR(copy(ft_value
));
3924 return img::format("CMP.LT.S %s, %s, %s", fd
, fs
, ft
);
3932 * 10987654321098765432109876543210
3933 * 001000 x1110000101
3938 std::string
NMD::CMP_NE_D(uint64 instruction
)
3940 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3941 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3942 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3944 std::string fd
= FPR(copy(fd_value
));
3945 std::string fs
= FPR(copy(fs_value
));
3946 std::string ft
= FPR(copy(ft_value
));
3948 return img::format("CMP.NE.D %s, %s, %s", fd
, fs
, ft
);
3956 * 10987654321098765432109876543210
3957 * 001000 x1110000101
3962 std::string
NMD::CMP_NE_S(uint64 instruction
)
3964 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3965 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3966 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3968 std::string fd
= FPR(copy(fd_value
));
3969 std::string fs
= FPR(copy(fs_value
));
3970 std::string ft
= FPR(copy(ft_value
));
3972 return img::format("CMP.NE.S %s, %s, %s", fd
, fs
, ft
);
3980 * 10987654321098765432109876543210
3981 * 001000 x1110000101
3986 std::string
NMD::CMP_OR_D(uint64 instruction
)
3988 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3989 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3990 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3992 std::string fd
= FPR(copy(fd_value
));
3993 std::string fs
= FPR(copy(fs_value
));
3994 std::string ft
= FPR(copy(ft_value
));
3996 return img::format("CMP.OR.D %s, %s, %s", fd
, fs
, ft
);
4004 * 10987654321098765432109876543210
4005 * 001000 x1110000101
4010 std::string
NMD::CMP_OR_S(uint64 instruction
)
4012 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4013 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4014 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4016 std::string fd
= FPR(copy(fd_value
));
4017 std::string fs
= FPR(copy(fs_value
));
4018 std::string ft
= FPR(copy(ft_value
));
4020 return img::format("CMP.OR.S %s, %s, %s", fd
, fs
, ft
);
4028 * 10987654321098765432109876543210
4029 * 001000 x1110000101
4034 std::string
NMD::CMP_SAF_D(uint64 instruction
)
4036 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4037 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4038 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4040 std::string fd
= FPR(copy(fd_value
));
4041 std::string fs
= FPR(copy(fs_value
));
4042 std::string ft
= FPR(copy(ft_value
));
4044 return img::format("CMP.SAF.D %s, %s, %s", fd
, fs
, ft
);
4052 * 10987654321098765432109876543210
4053 * 001000 x1110000101
4058 std::string
NMD::CMP_SAF_S(uint64 instruction
)
4060 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4061 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4062 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4064 std::string fd
= FPR(copy(fd_value
));
4065 std::string fs
= FPR(copy(fs_value
));
4066 std::string ft
= FPR(copy(ft_value
));
4068 return img::format("CMP.SAF.S %s, %s, %s", fd
, fs
, ft
);
4076 * 10987654321098765432109876543210
4077 * 001000 x1110000101
4082 std::string
NMD::CMP_SEQ_D(uint64 instruction
)
4084 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4085 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4086 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4088 std::string fd
= FPR(copy(fd_value
));
4089 std::string fs
= FPR(copy(fs_value
));
4090 std::string ft
= FPR(copy(ft_value
));
4092 return img::format("CMP.SEQ.D %s, %s, %s", fd
, fs
, ft
);
4100 * 10987654321098765432109876543210
4101 * 001000 x1110000101
4106 std::string
NMD::CMP_SEQ_S(uint64 instruction
)
4108 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4109 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4110 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4112 std::string fd
= FPR(copy(fd_value
));
4113 std::string fs
= FPR(copy(fs_value
));
4114 std::string ft
= FPR(copy(ft_value
));
4116 return img::format("CMP.SEQ.S %s, %s, %s", fd
, fs
, ft
);
4124 * 10987654321098765432109876543210
4125 * 001000 x1110000101
4130 std::string
NMD::CMP_SLE_D(uint64 instruction
)
4132 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4133 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4134 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4136 std::string fd
= FPR(copy(fd_value
));
4137 std::string fs
= FPR(copy(fs_value
));
4138 std::string ft
= FPR(copy(ft_value
));
4140 return img::format("CMP.SLE.D %s, %s, %s", fd
, fs
, ft
);
4148 * 10987654321098765432109876543210
4149 * 001000 x1110000101
4154 std::string
NMD::CMP_SLE_S(uint64 instruction
)
4156 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4157 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4158 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4160 std::string fd
= FPR(copy(fd_value
));
4161 std::string fs
= FPR(copy(fs_value
));
4162 std::string ft
= FPR(copy(ft_value
));
4164 return img::format("CMP.SLE.S %s, %s, %s", fd
, fs
, ft
);
4172 * 10987654321098765432109876543210
4173 * 001000 x1110000101
4178 std::string
NMD::CMP_SLT_D(uint64 instruction
)
4180 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4181 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4182 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4184 std::string fd
= FPR(copy(fd_value
));
4185 std::string fs
= FPR(copy(fs_value
));
4186 std::string ft
= FPR(copy(ft_value
));
4188 return img::format("CMP.SLT.D %s, %s, %s", fd
, fs
, ft
);
4196 * 10987654321098765432109876543210
4197 * 001000 x1110000101
4202 std::string
NMD::CMP_SLT_S(uint64 instruction
)
4204 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4205 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4206 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4208 std::string fd
= FPR(copy(fd_value
));
4209 std::string fs
= FPR(copy(fs_value
));
4210 std::string ft
= FPR(copy(ft_value
));
4212 return img::format("CMP.SLT.S %s, %s, %s", fd
, fs
, ft
);
4220 * 10987654321098765432109876543210
4221 * 001000 x1110000101
4226 std::string
NMD::CMP_SNE_D(uint64 instruction
)
4228 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4229 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4230 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4232 std::string fd
= FPR(copy(fd_value
));
4233 std::string fs
= FPR(copy(fs_value
));
4234 std::string ft
= FPR(copy(ft_value
));
4236 return img::format("CMP.SNE.D %s, %s, %s", fd
, fs
, ft
);
4244 * 10987654321098765432109876543210
4245 * 001000 x1110000101
4250 std::string
NMD::CMP_SNE_S(uint64 instruction
)
4252 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4253 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4254 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4256 std::string fd
= FPR(copy(fd_value
));
4257 std::string fs
= FPR(copy(fs_value
));
4258 std::string ft
= FPR(copy(ft_value
));
4260 return img::format("CMP.SNE.S %s, %s, %s", fd
, fs
, ft
);
4268 * 10987654321098765432109876543210
4269 * 001000 x1110000101
4274 std::string
NMD::CMP_SOR_D(uint64 instruction
)
4276 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4277 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4278 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4280 std::string fd
= FPR(copy(fd_value
));
4281 std::string fs
= FPR(copy(fs_value
));
4282 std::string ft
= FPR(copy(ft_value
));
4284 return img::format("CMP.SOR.D %s, %s, %s", fd
, fs
, ft
);
4292 * 10987654321098765432109876543210
4293 * 001000 x1110000101
4298 std::string
NMD::CMP_SOR_S(uint64 instruction
)
4300 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4301 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4302 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4304 std::string fd
= FPR(copy(fd_value
));
4305 std::string fs
= FPR(copy(fs_value
));
4306 std::string ft
= FPR(copy(ft_value
));
4308 return img::format("CMP.SOR.S %s, %s, %s", fd
, fs
, ft
);
4316 * 10987654321098765432109876543210
4317 * 001000 x1110000101
4322 std::string
NMD::CMP_SUEQ_D(uint64 instruction
)
4324 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4325 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4326 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4328 std::string fd
= FPR(copy(fd_value
));
4329 std::string fs
= FPR(copy(fs_value
));
4330 std::string ft
= FPR(copy(ft_value
));
4332 return img::format("CMP.SUEQ.D %s, %s, %s", fd
, fs
, ft
);
4340 * 10987654321098765432109876543210
4341 * 001000 x1110000101
4346 std::string
NMD::CMP_SUEQ_S(uint64 instruction
)
4348 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4349 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4350 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4352 std::string fd
= FPR(copy(fd_value
));
4353 std::string fs
= FPR(copy(fs_value
));
4354 std::string ft
= FPR(copy(ft_value
));
4356 return img::format("CMP.SUEQ.S %s, %s, %s", fd
, fs
, ft
);
4364 * 10987654321098765432109876543210
4365 * 001000 x1110000101
4370 std::string
NMD::CMP_SULE_D(uint64 instruction
)
4372 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4373 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4374 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4376 std::string fd
= FPR(copy(fd_value
));
4377 std::string fs
= FPR(copy(fs_value
));
4378 std::string ft
= FPR(copy(ft_value
));
4380 return img::format("CMP.SULE.D %s, %s, %s", fd
, fs
, ft
);
4388 * 10987654321098765432109876543210
4389 * 001000 x1110000101
4394 std::string
NMD::CMP_SULE_S(uint64 instruction
)
4396 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4397 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4398 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4400 std::string fd
= FPR(copy(fd_value
));
4401 std::string fs
= FPR(copy(fs_value
));
4402 std::string ft
= FPR(copy(ft_value
));
4404 return img::format("CMP.SULE.S %s, %s, %s", fd
, fs
, ft
);
4412 * 10987654321098765432109876543210
4413 * 001000 x1110000101
4418 std::string
NMD::CMP_SULT_D(uint64 instruction
)
4420 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4421 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4422 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4424 std::string fd
= FPR(copy(fd_value
));
4425 std::string fs
= FPR(copy(fs_value
));
4426 std::string ft
= FPR(copy(ft_value
));
4428 return img::format("CMP.SULT.D %s, %s, %s", fd
, fs
, ft
);
4436 * 10987654321098765432109876543210
4437 * 001000 x1110000101
4442 std::string
NMD::CMP_SULT_S(uint64 instruction
)
4444 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4445 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4446 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4448 std::string fd
= FPR(copy(fd_value
));
4449 std::string fs
= FPR(copy(fs_value
));
4450 std::string ft
= FPR(copy(ft_value
));
4452 return img::format("CMP.SULT.S %s, %s, %s", fd
, fs
, ft
);
4460 * 10987654321098765432109876543210
4461 * 001000 x1110000101
4466 std::string
NMD::CMP_SUN_D(uint64 instruction
)
4468 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4469 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4470 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4472 std::string fd
= FPR(copy(fd_value
));
4473 std::string fs
= FPR(copy(fs_value
));
4474 std::string ft
= FPR(copy(ft_value
));
4476 return img::format("CMP.SUN.D %s, %s, %s", fd
, fs
, ft
);
4484 * 10987654321098765432109876543210
4485 * 001000 x1110000101
4490 std::string
NMD::CMP_SUNE_D(uint64 instruction
)
4492 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4493 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4494 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4496 std::string fd
= FPR(copy(fd_value
));
4497 std::string fs
= FPR(copy(fs_value
));
4498 std::string ft
= FPR(copy(ft_value
));
4500 return img::format("CMP.SUNE.D %s, %s, %s", fd
, fs
, ft
);
4508 * 10987654321098765432109876543210
4509 * 001000 x1110000101
4514 std::string
NMD::CMP_SUNE_S(uint64 instruction
)
4516 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4517 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4518 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4520 std::string fd
= FPR(copy(fd_value
));
4521 std::string fs
= FPR(copy(fs_value
));
4522 std::string ft
= FPR(copy(ft_value
));
4524 return img::format("CMP.SUNE.S %s, %s, %s", fd
, fs
, ft
);
4532 * 10987654321098765432109876543210
4533 * 001000 x1110000101
4538 std::string
NMD::CMP_SUN_S(uint64 instruction
)
4540 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4541 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4542 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4544 std::string fd
= FPR(copy(fd_value
));
4545 std::string fs
= FPR(copy(fs_value
));
4546 std::string ft
= FPR(copy(ft_value
));
4548 return img::format("CMP.SUN.S %s, %s, %s", fd
, fs
, ft
);
4556 * 10987654321098765432109876543210
4557 * 001000 x1110000101
4562 std::string
NMD::CMP_UEQ_D(uint64 instruction
)
4564 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4565 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4566 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4568 std::string fd
= FPR(copy(fd_value
));
4569 std::string fs
= FPR(copy(fs_value
));
4570 std::string ft
= FPR(copy(ft_value
));
4572 return img::format("CMP.UEQ.D %s, %s, %s", fd
, fs
, ft
);
4580 * 10987654321098765432109876543210
4581 * 001000 x1110000101
4586 std::string
NMD::CMP_UEQ_S(uint64 instruction
)
4588 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4589 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4590 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4592 std::string fd
= FPR(copy(fd_value
));
4593 std::string fs
= FPR(copy(fs_value
));
4594 std::string ft
= FPR(copy(ft_value
));
4596 return img::format("CMP.UEQ.S %s, %s, %s", fd
, fs
, ft
);
4604 * 10987654321098765432109876543210
4605 * 001000 x1110000101
4610 std::string
NMD::CMP_ULE_D(uint64 instruction
)
4612 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4613 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4614 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4616 std::string fd
= FPR(copy(fd_value
));
4617 std::string fs
= FPR(copy(fs_value
));
4618 std::string ft
= FPR(copy(ft_value
));
4620 return img::format("CMP.ULE.D %s, %s, %s", fd
, fs
, ft
);
4628 * 10987654321098765432109876543210
4629 * 001000 x1110000101
4634 std::string
NMD::CMP_ULE_S(uint64 instruction
)
4636 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4637 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4638 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4640 std::string fd
= FPR(copy(fd_value
));
4641 std::string fs
= FPR(copy(fs_value
));
4642 std::string ft
= FPR(copy(ft_value
));
4644 return img::format("CMP.ULE.S %s, %s, %s", fd
, fs
, ft
);
4652 * 10987654321098765432109876543210
4653 * 001000 x1110000101
4658 std::string
NMD::CMP_ULT_D(uint64 instruction
)
4660 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4661 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4662 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4664 std::string fd
= FPR(copy(fd_value
));
4665 std::string fs
= FPR(copy(fs_value
));
4666 std::string ft
= FPR(copy(ft_value
));
4668 return img::format("CMP.ULT.D %s, %s, %s", fd
, fs
, ft
);
4676 * 10987654321098765432109876543210
4677 * 001000 x1110000101
4682 std::string
NMD::CMP_ULT_S(uint64 instruction
)
4684 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4685 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4686 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4688 std::string fd
= FPR(copy(fd_value
));
4689 std::string fs
= FPR(copy(fs_value
));
4690 std::string ft
= FPR(copy(ft_value
));
4692 return img::format("CMP.ULT.S %s, %s, %s", fd
, fs
, ft
);
4700 * 10987654321098765432109876543210
4701 * 001000 x1110000101
4706 std::string
NMD::CMP_UN_D(uint64 instruction
)
4708 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4709 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4710 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4712 std::string fd
= FPR(copy(fd_value
));
4713 std::string fs
= FPR(copy(fs_value
));
4714 std::string ft
= FPR(copy(ft_value
));
4716 return img::format("CMP.UN.D %s, %s, %s", fd
, fs
, ft
);
4724 * 10987654321098765432109876543210
4725 * 001000 x1110000101
4730 std::string
NMD::CMP_UNE_D(uint64 instruction
)
4732 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4733 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4734 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4736 std::string fd
= FPR(copy(fd_value
));
4737 std::string fs
= FPR(copy(fs_value
));
4738 std::string ft
= FPR(copy(ft_value
));
4740 return img::format("CMP.UNE.D %s, %s, %s", fd
, fs
, ft
);
4748 * 10987654321098765432109876543210
4749 * 001000 x1110000101
4754 std::string
NMD::CMP_UNE_S(uint64 instruction
)
4756 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4757 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4758 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4760 std::string fd
= FPR(copy(fd_value
));
4761 std::string fs
= FPR(copy(fs_value
));
4762 std::string ft
= FPR(copy(ft_value
));
4764 return img::format("CMP.UNE.S %s, %s, %s", fd
, fs
, ft
);
4772 * 10987654321098765432109876543210
4773 * 001000 x1110000101
4778 std::string
NMD::CMP_UN_S(uint64 instruction
)
4780 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4781 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4782 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4784 std::string fd
= FPR(copy(fd_value
));
4785 std::string fs
= FPR(copy(fs_value
));
4786 std::string ft
= FPR(copy(ft_value
));
4788 return img::format("CMP.UN.S %s, %s, %s", fd
, fs
, ft
);
4796 * 10987654321098765432109876543210
4797 * 001000 x1110000101
4802 std::string
NMD::CMPGDU_EQ_QB(uint64 instruction
)
4804 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4805 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4806 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4808 std::string rd
= GPR(copy(rd_value
));
4809 std::string rs
= GPR(copy(rs_value
));
4810 std::string rt
= GPR(copy(rt_value
));
4812 return img::format("CMPGDU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
4820 * 10987654321098765432109876543210
4821 * 001000 x1110000101
4826 std::string
NMD::CMPGDU_LE_QB(uint64 instruction
)
4828 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4829 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4830 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4832 std::string rd
= GPR(copy(rd_value
));
4833 std::string rs
= GPR(copy(rs_value
));
4834 std::string rt
= GPR(copy(rt_value
));
4836 return img::format("CMPGDU.LE.QB %s, %s, %s", rd
, rs
, rt
);
4844 * 10987654321098765432109876543210
4845 * 001000 x1110000101
4850 std::string
NMD::CMPGDU_LT_QB(uint64 instruction
)
4852 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4853 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4854 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4856 std::string rd
= GPR(copy(rd_value
));
4857 std::string rs
= GPR(copy(rs_value
));
4858 std::string rt
= GPR(copy(rt_value
));
4860 return img::format("CMPGDU.LT.QB %s, %s, %s", rd
, rs
, rt
);
4868 * 10987654321098765432109876543210
4869 * 001000 x1110000101
4874 std::string
NMD::CMPGU_EQ_QB(uint64 instruction
)
4876 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4877 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4878 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4880 std::string rd
= GPR(copy(rd_value
));
4881 std::string rs
= GPR(copy(rs_value
));
4882 std::string rt
= GPR(copy(rt_value
));
4884 return img::format("CMPGU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
4892 * 10987654321098765432109876543210
4893 * 001000 x1110000101
4898 std::string
NMD::CMPGU_LE_QB(uint64 instruction
)
4900 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4901 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4902 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4904 std::string rd
= GPR(copy(rd_value
));
4905 std::string rs
= GPR(copy(rs_value
));
4906 std::string rt
= GPR(copy(rt_value
));
4908 return img::format("CMPGU.LE.QB %s, %s, %s", rd
, rs
, rt
);
4916 * 10987654321098765432109876543210
4917 * 001000 x1110000101
4922 std::string
NMD::CMPGU_LT_QB(uint64 instruction
)
4924 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4925 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4926 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4928 std::string rd
= GPR(copy(rd_value
));
4929 std::string rs
= GPR(copy(rs_value
));
4930 std::string rt
= GPR(copy(rt_value
));
4932 return img::format("CMPGU.LT.QB %s, %s, %s", rd
, rs
, rt
);
4940 * 10987654321098765432109876543210
4941 * 001000 x1110000101
4946 std::string
NMD::CMPU_EQ_QB(uint64 instruction
)
4948 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4949 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4951 std::string rs
= GPR(copy(rs_value
));
4952 std::string rt
= GPR(copy(rt_value
));
4954 return img::format("CMPU.EQ.QB %s, %s", rs
, rt
);
4962 * 10987654321098765432109876543210
4963 * 001000 x1110000101
4968 std::string
NMD::CMPU_LE_QB(uint64 instruction
)
4970 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4971 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4973 std::string rs
= GPR(copy(rs_value
));
4974 std::string rt
= GPR(copy(rt_value
));
4976 return img::format("CMPU.LE.QB %s, %s", rs
, rt
);
4984 * 10987654321098765432109876543210
4985 * 001000 x1110000101
4990 std::string
NMD::CMPU_LT_QB(uint64 instruction
)
4992 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4993 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4995 std::string rs
= GPR(copy(rs_value
));
4996 std::string rt
= GPR(copy(rt_value
));
4998 return img::format("CMPU.LT.QB %s, %s", rs
, rt
);
5006 * 10987654321098765432109876543210
5007 * 001000 x1110000101
5012 std::string
NMD::COP2_1(uint64 instruction
)
5014 uint64 cofun_value
= extract_cofun_25_24_23(instruction
);
5016 std::string cofun
= IMMEDIATE(copy(cofun_value
));
5018 return img::format("COP2_1 %s", cofun
);
5026 * 10987654321098765432109876543210
5027 * 001000 x1110000101
5032 std::string
NMD::CTC1(uint64 instruction
)
5034 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5035 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5037 std::string rt
= GPR(copy(rt_value
));
5038 std::string cs
= CPR(copy(cs_value
));
5040 return img::format("CTC1 %s, %s", rt
, cs
);
5048 * 10987654321098765432109876543210
5049 * 001000 x1110000101
5054 std::string
NMD::CTC2(uint64 instruction
)
5056 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5057 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5059 std::string rt
= GPR(copy(rt_value
));
5060 std::string cs
= CPR(copy(cs_value
));
5062 return img::format("CTC2 %s, %s", rt
, cs
);
5070 * 10987654321098765432109876543210
5071 * 001000 x1110000101
5076 std::string
NMD::CVT_D_L(uint64 instruction
)
5078 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5079 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5081 std::string ft
= FPR(copy(ft_value
));
5082 std::string fs
= FPR(copy(fs_value
));
5084 return img::format("CVT.D.L %s, %s", ft
, fs
);
5092 * 10987654321098765432109876543210
5093 * 001000 x1110000101
5098 std::string
NMD::CVT_D_S(uint64 instruction
)
5100 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5101 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5103 std::string ft
= FPR(copy(ft_value
));
5104 std::string fs
= FPR(copy(fs_value
));
5106 return img::format("CVT.D.S %s, %s", ft
, fs
);
5114 * 10987654321098765432109876543210
5115 * 001000 x1110000101
5120 std::string
NMD::CVT_D_W(uint64 instruction
)
5122 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5123 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5125 std::string ft
= FPR(copy(ft_value
));
5126 std::string fs
= FPR(copy(fs_value
));
5128 return img::format("CVT.D.W %s, %s", ft
, fs
);
5136 * 10987654321098765432109876543210
5137 * 001000 x1110000101
5142 std::string
NMD::CVT_L_D(uint64 instruction
)
5144 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5145 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5147 std::string ft
= FPR(copy(ft_value
));
5148 std::string fs
= FPR(copy(fs_value
));
5150 return img::format("CVT.L.D %s, %s", ft
, fs
);
5158 * 10987654321098765432109876543210
5159 * 001000 x1110000101
5164 std::string
NMD::CVT_L_S(uint64 instruction
)
5166 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5167 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5169 std::string ft
= FPR(copy(ft_value
));
5170 std::string fs
= FPR(copy(fs_value
));
5172 return img::format("CVT.L.S %s, %s", ft
, fs
);
5180 * 10987654321098765432109876543210
5181 * 001000 x1110000101
5186 std::string
NMD::CVT_S_D(uint64 instruction
)
5188 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5189 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5191 std::string ft
= FPR(copy(ft_value
));
5192 std::string fs
= FPR(copy(fs_value
));
5194 return img::format("CVT.S.D %s, %s", ft
, fs
);
5202 * 10987654321098765432109876543210
5203 * 001000 x1110000101
5208 std::string
NMD::CVT_S_L(uint64 instruction
)
5210 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5211 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5213 std::string ft
= FPR(copy(ft_value
));
5214 std::string fs
= FPR(copy(fs_value
));
5216 return img::format("CVT.S.L %s, %s", ft
, fs
);
5224 * 10987654321098765432109876543210
5225 * 001000 x1110000101
5230 std::string
NMD::CVT_S_PL(uint64 instruction
)
5232 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5233 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5235 std::string ft
= FPR(copy(ft_value
));
5236 std::string fs
= FPR(copy(fs_value
));
5238 return img::format("CVT.S.PL %s, %s", ft
, fs
);
5246 * 10987654321098765432109876543210
5247 * 001000 x1110000101
5252 std::string
NMD::CVT_S_PU(uint64 instruction
)
5254 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5255 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5257 std::string ft
= FPR(copy(ft_value
));
5258 std::string fs
= FPR(copy(fs_value
));
5260 return img::format("CVT.S.PU %s, %s", ft
, fs
);
5268 * 10987654321098765432109876543210
5269 * 001000 x1110000101
5274 std::string
NMD::CVT_S_W(uint64 instruction
)
5276 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5277 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5279 std::string ft
= FPR(copy(ft_value
));
5280 std::string fs
= FPR(copy(fs_value
));
5282 return img::format("CVT.S.W %s, %s", ft
, fs
);
5290 * 10987654321098765432109876543210
5291 * 001000 x1110000101
5296 std::string
NMD::CVT_W_D(uint64 instruction
)
5298 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5299 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5301 std::string ft
= FPR(copy(ft_value
));
5302 std::string fs
= FPR(copy(fs_value
));
5304 return img::format("CVT.W.D %s, %s", ft
, fs
);
5312 * 10987654321098765432109876543210
5313 * 001000 x1110000101
5318 std::string
NMD::CVT_W_S(uint64 instruction
)
5320 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5321 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5323 std::string ft
= FPR(copy(ft_value
));
5324 std::string fs
= FPR(copy(fs_value
));
5326 return img::format("CVT.W.S %s, %s", ft
, fs
);
5334 * 10987654321098765432109876543210
5335 * 001000 x1110000101
5340 std::string
NMD::DADDIU_48_(uint64 instruction
)
5342 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
5343 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
5345 std::string rt
= GPR(copy(rt_value
));
5346 std::string s
= IMMEDIATE(copy(s_value
));
5348 return img::format("DADDIU %s, %s", rt
, s
);
5356 * 10987654321098765432109876543210
5357 * 001000 x1110000101
5362 std::string
NMD::DADDIU_NEG_(uint64 instruction
)
5364 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5365 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5366 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5368 std::string rt
= GPR(copy(rt_value
));
5369 std::string rs
= GPR(copy(rs_value
));
5370 std::string u
= IMMEDIATE(neg_copy(u_value
));
5372 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5380 * 10987654321098765432109876543210
5381 * 001000 x1110000101
5386 std::string
NMD::DADDIU_U12_(uint64 instruction
)
5388 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5389 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5390 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5392 std::string rt
= GPR(copy(rt_value
));
5393 std::string rs
= GPR(copy(rs_value
));
5394 std::string u
= IMMEDIATE(copy(u_value
));
5396 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5404 * 10987654321098765432109876543210
5405 * 001000 x1110000101
5410 std::string
NMD::DADD(uint64 instruction
)
5412 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5413 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5414 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5416 std::string rd
= GPR(copy(rd_value
));
5417 std::string rs
= GPR(copy(rs_value
));
5418 std::string rt
= GPR(copy(rt_value
));
5420 return img::format("DADD %s, %s, %s", rd
, rs
, rt
);
5428 * 10987654321098765432109876543210
5429 * 001000 x1110000101
5434 std::string
NMD::DADDU(uint64 instruction
)
5436 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5437 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5438 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5440 std::string rd
= GPR(copy(rd_value
));
5441 std::string rs
= GPR(copy(rs_value
));
5442 std::string rt
= GPR(copy(rt_value
));
5444 return img::format("DADDU %s, %s, %s", rd
, rs
, rt
);
5452 * 10987654321098765432109876543210
5453 * 001000 x1110000101
5458 std::string
NMD::DCLO(uint64 instruction
)
5460 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5461 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5463 std::string rt
= GPR(copy(rt_value
));
5464 std::string rs
= GPR(copy(rs_value
));
5466 return img::format("DCLO %s, %s", rt
, rs
);
5474 * 10987654321098765432109876543210
5475 * 001000 x1110000101
5480 std::string
NMD::DCLZ(uint64 instruction
)
5482 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5483 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5485 std::string rt
= GPR(copy(rt_value
));
5486 std::string rs
= GPR(copy(rs_value
));
5488 return img::format("DCLZ %s, %s", rt
, rs
);
5496 * 10987654321098765432109876543210
5497 * 001000 x1110000101
5502 std::string
NMD::DDIV(uint64 instruction
)
5504 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5505 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5506 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5508 std::string rd
= GPR(copy(rd_value
));
5509 std::string rs
= GPR(copy(rs_value
));
5510 std::string rt
= GPR(copy(rt_value
));
5512 return img::format("DDIV %s, %s, %s", rd
, rs
, rt
);
5520 * 10987654321098765432109876543210
5521 * 001000 x1110000101
5526 std::string
NMD::DDIVU(uint64 instruction
)
5528 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5529 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5530 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5532 std::string rd
= GPR(copy(rd_value
));
5533 std::string rs
= GPR(copy(rs_value
));
5534 std::string rt
= GPR(copy(rt_value
));
5536 return img::format("DDIVU %s, %s, %s", rd
, rs
, rt
);
5544 * 10987654321098765432109876543210
5545 * 001000 x1110000101
5550 std::string
NMD::DERET(uint64 instruction
)
5562 * 10987654321098765432109876543210
5563 * 001000 x1110000101
5568 std::string
NMD::DEXTM(uint64 instruction
)
5570 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5571 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5572 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5573 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5575 std::string rt
= GPR(copy(rt_value
));
5576 std::string rs
= GPR(copy(rs_value
));
5577 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5578 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5580 return img::format("DEXTM %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5588 * 10987654321098765432109876543210
5589 * 001000 x1110000101
5594 std::string
NMD::DEXT(uint64 instruction
)
5596 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5597 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5598 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5599 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5601 std::string rt
= GPR(copy(rt_value
));
5602 std::string rs
= GPR(copy(rs_value
));
5603 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5604 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5606 return img::format("DEXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5614 * 10987654321098765432109876543210
5615 * 001000 x1110000101
5620 std::string
NMD::DEXTU(uint64 instruction
)
5622 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5623 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5624 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5625 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5627 std::string rt
= GPR(copy(rt_value
));
5628 std::string rs
= GPR(copy(rs_value
));
5629 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5630 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5632 return img::format("DEXTU %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5640 * 10987654321098765432109876543210
5641 * 001000 x1110000101
5646 std::string
NMD::DINSM(uint64 instruction
)
5648 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5649 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5650 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5651 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5653 std::string rt
= GPR(copy(rt_value
));
5654 std::string rs
= GPR(copy(rs_value
));
5655 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5656 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5657 /* !!!!!!!!!! - no conversion function */
5659 return img::format("DINSM %s, %s, %s, %s", rt
, rs
, pos
, size
);
5668 * 10987654321098765432109876543210
5669 * 001000 x1110000101
5674 std::string
NMD::DINS(uint64 instruction
)
5676 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5677 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5678 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5679 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5681 std::string rt
= GPR(copy(rt_value
));
5682 std::string rs
= GPR(copy(rs_value
));
5683 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5684 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5685 /* !!!!!!!!!! - no conversion function */
5687 return img::format("DINS %s, %s, %s, %s", rt
, rs
, pos
, size
);
5696 * 10987654321098765432109876543210
5697 * 001000 x1110000101
5702 std::string
NMD::DINSU(uint64 instruction
)
5704 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5705 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5706 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5707 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5709 std::string rt
= GPR(copy(rt_value
));
5710 std::string rs
= GPR(copy(rs_value
));
5711 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5712 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5713 /* !!!!!!!!!! - no conversion function */
5715 return img::format("DINSU %s, %s, %s, %s", rt
, rs
, pos
, size
);
5724 * 10987654321098765432109876543210
5725 * 001000 x1110000101
5730 std::string
NMD::DI(uint64 instruction
)
5732 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5734 std::string rt
= GPR(copy(rt_value
));
5736 return img::format("DI %s", rt
);
5744 * 10987654321098765432109876543210
5745 * 001000 x1110000101
5750 std::string
NMD::DIV(uint64 instruction
)
5752 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5753 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5754 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5756 std::string rd
= GPR(copy(rd_value
));
5757 std::string rs
= GPR(copy(rs_value
));
5758 std::string rt
= GPR(copy(rt_value
));
5760 return img::format("DIV %s, %s, %s", rd
, rs
, rt
);
5768 * 10987654321098765432109876543210
5769 * 001000 x1110000101
5774 std::string
NMD::DIV_D(uint64 instruction
)
5776 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5777 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5778 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
5780 std::string fd
= FPR(copy(fd_value
));
5781 std::string fs
= FPR(copy(fs_value
));
5782 std::string ft
= FPR(copy(ft_value
));
5784 return img::format("DIV.D %s, %s, %s", fd
, fs
, ft
);
5792 * 10987654321098765432109876543210
5793 * 001000 x1110000101
5798 std::string
NMD::DIV_S(uint64 instruction
)
5800 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5801 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5802 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
5804 std::string fd
= FPR(copy(fd_value
));
5805 std::string fs
= FPR(copy(fs_value
));
5806 std::string ft
= FPR(copy(ft_value
));
5808 return img::format("DIV.S %s, %s, %s", fd
, fs
, ft
);
5816 * 10987654321098765432109876543210
5817 * 001000 x1110000101
5822 std::string
NMD::DIVU(uint64 instruction
)
5824 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5825 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5826 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5828 std::string rd
= GPR(copy(rd_value
));
5829 std::string rs
= GPR(copy(rs_value
));
5830 std::string rt
= GPR(copy(rt_value
));
5832 return img::format("DIVU %s, %s, %s", rd
, rs
, rt
);
5840 * 10987654321098765432109876543210
5841 * 001000 x1110000101
5846 std::string
NMD::DLSA(uint64 instruction
)
5848 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5849 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5850 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5851 uint64 u2_value
= extract_u2_10_9(instruction
);
5853 std::string rd
= GPR(copy(rd_value
));
5854 std::string rs
= GPR(copy(rs_value
));
5855 std::string rt
= GPR(copy(rt_value
));
5856 std::string u2
= IMMEDIATE(copy(u2_value
));
5858 return img::format("DLSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
5866 * 10987654321098765432109876543210
5867 * 001000 x1110000101
5872 std::string
NMD::DLUI_48_(uint64 instruction
)
5874 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
5875 uint64 u_value
= extract_u_31_to_0__s32(instruction
);
5877 std::string rt
= GPR(copy(rt_value
));
5878 std::string u
= IMMEDIATE(copy(u_value
));
5880 return img::format("DLUI %s, %s", rt
, u
);
5888 * 10987654321098765432109876543210
5889 * 001000 x1110000101
5894 std::string
NMD::DMFC0(uint64 instruction
)
5896 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5897 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
5898 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
5900 std::string rt
= GPR(copy(rt_value
));
5901 std::string c0s
= CPR(copy(c0s_value
));
5902 std::string sel
= IMMEDIATE(copy(sel_value
));
5904 return img::format("DMFC0 %s, %s, %s", rt
, c0s
, sel
);
5912 * 10987654321098765432109876543210
5913 * 001000 x1110000101
5918 std::string
NMD::DMFC1(uint64 instruction
)
5920 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5921 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5923 std::string rt
= GPR(copy(rt_value
));
5924 std::string fs
= FPR(copy(fs_value
));
5926 return img::format("DMFC1 %s, %s", rt
, fs
);
5934 * 10987654321098765432109876543210
5935 * 001000 x1110000101
5940 std::string
NMD::DMFC2(uint64 instruction
)
5942 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5943 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5945 std::string rt
= GPR(copy(rt_value
));
5946 std::string cs
= CPR(copy(cs_value
));
5948 return img::format("DMFC2 %s, %s", rt
, cs
);
5956 * 10987654321098765432109876543210
5957 * 001000 x1110000101
5962 std::string
NMD::DMFGC0(uint64 instruction
)
5964 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5965 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
5966 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
5968 std::string rt
= GPR(copy(rt_value
));
5969 std::string c0s
= CPR(copy(c0s_value
));
5970 std::string sel
= IMMEDIATE(copy(sel_value
));
5972 return img::format("DMFGC0 %s, %s, %s", rt
, c0s
, sel
);
5980 * 10987654321098765432109876543210
5981 * 001000 x1110000101
5986 std::string
NMD::DMOD(uint64 instruction
)
5988 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5989 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5990 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5992 std::string rd
= GPR(copy(rd_value
));
5993 std::string rs
= GPR(copy(rs_value
));
5994 std::string rt
= GPR(copy(rt_value
));
5996 return img::format("DMOD %s, %s, %s", rd
, rs
, rt
);
6004 * 10987654321098765432109876543210
6005 * 001000 x1110000101
6010 std::string
NMD::DMODU(uint64 instruction
)
6012 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6013 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6014 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6016 std::string rd
= GPR(copy(rd_value
));
6017 std::string rs
= GPR(copy(rs_value
));
6018 std::string rt
= GPR(copy(rt_value
));
6020 return img::format("DMODU %s, %s, %s", rd
, rs
, rt
);
6028 * 10987654321098765432109876543210
6029 * 001000 x1110000101
6034 std::string
NMD::DMTC0(uint64 instruction
)
6036 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6037 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6038 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6040 std::string rt
= GPR(copy(rt_value
));
6041 std::string c0s
= CPR(copy(c0s_value
));
6042 std::string sel
= IMMEDIATE(copy(sel_value
));
6044 return img::format("DMTC0 %s, %s, %s", rt
, c0s
, sel
);
6052 * 10987654321098765432109876543210
6053 * 001000 x1110000101
6058 std::string
NMD::DMTC1(uint64 instruction
)
6060 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6061 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
6063 std::string rt
= GPR(copy(rt_value
));
6064 std::string fs
= FPR(copy(fs_value
));
6066 return img::format("DMTC1 %s, %s", rt
, fs
);
6074 * 10987654321098765432109876543210
6075 * 001000 x1110000101
6080 std::string
NMD::DMTC2(uint64 instruction
)
6082 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6083 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
6085 std::string rt
= GPR(copy(rt_value
));
6086 std::string cs
= CPR(copy(cs_value
));
6088 return img::format("DMTC2 %s, %s", rt
, cs
);
6096 * 10987654321098765432109876543210
6097 * 001000 x1110000101
6102 std::string
NMD::DMTGC0(uint64 instruction
)
6104 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6105 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6106 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6108 std::string rt
= GPR(copy(rt_value
));
6109 std::string c0s
= CPR(copy(c0s_value
));
6110 std::string sel
= IMMEDIATE(copy(sel_value
));
6112 return img::format("DMTGC0 %s, %s, %s", rt
, c0s
, sel
);
6120 * 10987654321098765432109876543210
6121 * 001000 x1110000101
6126 std::string
NMD::DMT(uint64 instruction
)
6128 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6130 std::string rt
= GPR(copy(rt_value
));
6132 return img::format("DMT %s", rt
);
6140 * 10987654321098765432109876543210
6141 * 001000 x1110000101
6146 std::string
NMD::DMUH(uint64 instruction
)
6148 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6149 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6150 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6152 std::string rd
= GPR(copy(rd_value
));
6153 std::string rs
= GPR(copy(rs_value
));
6154 std::string rt
= GPR(copy(rt_value
));
6156 return img::format("DMUH %s, %s, %s", rd
, rs
, rt
);
6164 * 10987654321098765432109876543210
6165 * 001000 x1110000101
6170 std::string
NMD::DMUHU(uint64 instruction
)
6172 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6173 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6174 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6176 std::string rd
= GPR(copy(rd_value
));
6177 std::string rs
= GPR(copy(rs_value
));
6178 std::string rt
= GPR(copy(rt_value
));
6180 return img::format("DMUHU %s, %s, %s", rd
, rs
, rt
);
6188 * 10987654321098765432109876543210
6189 * 001000 x1110000101
6194 std::string
NMD::DMUL(uint64 instruction
)
6196 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6197 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6198 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6200 std::string rd
= GPR(copy(rd_value
));
6201 std::string rs
= GPR(copy(rs_value
));
6202 std::string rt
= GPR(copy(rt_value
));
6204 return img::format("DMUL %s, %s, %s", rd
, rs
, rt
);
6212 * 10987654321098765432109876543210
6213 * 001000 x1110000101
6218 std::string
NMD::DMULU(uint64 instruction
)
6220 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6221 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6222 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6224 std::string rd
= GPR(copy(rd_value
));
6225 std::string rs
= GPR(copy(rs_value
));
6226 std::string rt
= GPR(copy(rt_value
));
6228 return img::format("DMULU %s, %s, %s", rd
, rs
, rt
);
6236 * 10987654321098765432109876543210
6237 * 001000 x1110000101
6242 std::string
NMD::DPA_W_PH(uint64 instruction
)
6244 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6245 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6246 uint64 ac_value
= extract_ac_13_12(instruction
);
6248 std::string ac
= AC(copy(ac_value
));
6249 std::string rs
= GPR(copy(rs_value
));
6250 std::string rt
= GPR(copy(rt_value
));
6252 return img::format("DPA.W.PH %s, %s, %s", ac
, rs
, rt
);
6260 * 10987654321098765432109876543210
6261 * 001000 x1110000101
6266 std::string
NMD::DPAQ_SA_L_W(uint64 instruction
)
6268 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6269 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6270 uint64 ac_value
= extract_ac_13_12(instruction
);
6272 std::string ac
= AC(copy(ac_value
));
6273 std::string rs
= GPR(copy(rs_value
));
6274 std::string rt
= GPR(copy(rt_value
));
6276 return img::format("DPAQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6284 * 10987654321098765432109876543210
6285 * 001000 x1110000101
6290 std::string
NMD::DPAQ_S_W_PH(uint64 instruction
)
6292 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6293 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6294 uint64 ac_value
= extract_ac_13_12(instruction
);
6296 std::string ac
= AC(copy(ac_value
));
6297 std::string rs
= GPR(copy(rs_value
));
6298 std::string rt
= GPR(copy(rt_value
));
6300 return img::format("DPAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6308 * 10987654321098765432109876543210
6309 * 001000 x1110000101
6314 std::string
NMD::DPAQX_SA_W_PH(uint64 instruction
)
6316 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6317 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6318 uint64 ac_value
= extract_ac_13_12(instruction
);
6320 std::string ac
= AC(copy(ac_value
));
6321 std::string rs
= GPR(copy(rs_value
));
6322 std::string rt
= GPR(copy(rt_value
));
6324 return img::format("DPAQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6332 * 10987654321098765432109876543210
6333 * 001000 x1110000101
6338 std::string
NMD::DPAQX_S_W_PH(uint64 instruction
)
6340 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6341 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6342 uint64 ac_value
= extract_ac_13_12(instruction
);
6344 std::string ac
= AC(copy(ac_value
));
6345 std::string rs
= GPR(copy(rs_value
));
6346 std::string rt
= GPR(copy(rt_value
));
6348 return img::format("DPAQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6356 * 10987654321098765432109876543210
6357 * 001000 x1110000101
6362 std::string
NMD::DPAU_H_QBL(uint64 instruction
)
6364 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6365 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6366 uint64 ac_value
= extract_ac_13_12(instruction
);
6368 std::string ac
= AC(copy(ac_value
));
6369 std::string rs
= GPR(copy(rs_value
));
6370 std::string rt
= GPR(copy(rt_value
));
6372 return img::format("DPAU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6380 * 10987654321098765432109876543210
6381 * 001000 x1110000101
6386 std::string
NMD::DPAU_H_QBR(uint64 instruction
)
6388 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6389 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6390 uint64 ac_value
= extract_ac_13_12(instruction
);
6392 std::string ac
= AC(copy(ac_value
));
6393 std::string rs
= GPR(copy(rs_value
));
6394 std::string rt
= GPR(copy(rt_value
));
6396 return img::format("DPAU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6404 * 10987654321098765432109876543210
6405 * 001000 x1110000101
6410 std::string
NMD::DPAX_W_PH(uint64 instruction
)
6412 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6413 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6414 uint64 ac_value
= extract_ac_13_12(instruction
);
6416 std::string ac
= AC(copy(ac_value
));
6417 std::string rs
= GPR(copy(rs_value
));
6418 std::string rt
= GPR(copy(rt_value
));
6420 return img::format("DPAX.W.PH %s, %s, %s", ac
, rs
, rt
);
6428 * 10987654321098765432109876543210
6429 * 001000 x1110000101
6434 std::string
NMD::DPS_W_PH(uint64 instruction
)
6436 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6437 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6438 uint64 ac_value
= extract_ac_13_12(instruction
);
6440 std::string ac
= AC(copy(ac_value
));
6441 std::string rs
= GPR(copy(rs_value
));
6442 std::string rt
= GPR(copy(rt_value
));
6444 return img::format("DPS.W.PH %s, %s, %s", ac
, rs
, rt
);
6452 * 10987654321098765432109876543210
6453 * 001000 x1110000101
6458 std::string
NMD::DPSQ_SA_L_W(uint64 instruction
)
6460 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6461 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6462 uint64 ac_value
= extract_ac_13_12(instruction
);
6464 std::string ac
= AC(copy(ac_value
));
6465 std::string rs
= GPR(copy(rs_value
));
6466 std::string rt
= GPR(copy(rt_value
));
6468 return img::format("DPSQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6476 * 10987654321098765432109876543210
6477 * 001000 x1110000101
6482 std::string
NMD::DPSQ_S_W_PH(uint64 instruction
)
6484 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6485 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6486 uint64 ac_value
= extract_ac_13_12(instruction
);
6488 std::string ac
= AC(copy(ac_value
));
6489 std::string rs
= GPR(copy(rs_value
));
6490 std::string rt
= GPR(copy(rt_value
));
6492 return img::format("DPSQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6500 * 10987654321098765432109876543210
6501 * 001000 x1110000101
6506 std::string
NMD::DPSQX_SA_W_PH(uint64 instruction
)
6508 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6509 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6510 uint64 ac_value
= extract_ac_13_12(instruction
);
6512 std::string ac
= AC(copy(ac_value
));
6513 std::string rs
= GPR(copy(rs_value
));
6514 std::string rt
= GPR(copy(rt_value
));
6516 return img::format("DPSQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6524 * 10987654321098765432109876543210
6525 * 001000 x1110000101
6530 std::string
NMD::DPSQX_S_W_PH(uint64 instruction
)
6532 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6533 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6534 uint64 ac_value
= extract_ac_13_12(instruction
);
6536 std::string ac
= AC(copy(ac_value
));
6537 std::string rs
= GPR(copy(rs_value
));
6538 std::string rt
= GPR(copy(rt_value
));
6540 return img::format("DPSQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6548 * 10987654321098765432109876543210
6549 * 001000 x1110000101
6554 std::string
NMD::DPSU_H_QBL(uint64 instruction
)
6556 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6557 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6558 uint64 ac_value
= extract_ac_13_12(instruction
);
6560 std::string ac
= AC(copy(ac_value
));
6561 std::string rs
= GPR(copy(rs_value
));
6562 std::string rt
= GPR(copy(rt_value
));
6564 return img::format("DPSU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6572 * 10987654321098765432109876543210
6573 * 001000 x1110000101
6578 std::string
NMD::DPSU_H_QBR(uint64 instruction
)
6580 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6581 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6582 uint64 ac_value
= extract_ac_13_12(instruction
);
6584 std::string ac
= AC(copy(ac_value
));
6585 std::string rs
= GPR(copy(rs_value
));
6586 std::string rt
= GPR(copy(rt_value
));
6588 return img::format("DPSU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6596 * 10987654321098765432109876543210
6597 * 001000 x1110000101
6602 std::string
NMD::DPSX_W_PH(uint64 instruction
)
6604 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6605 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6606 uint64 ac_value
= extract_ac_13_12(instruction
);
6608 std::string ac
= AC(copy(ac_value
));
6609 std::string rs
= GPR(copy(rs_value
));
6610 std::string rt
= GPR(copy(rt_value
));
6612 return img::format("DPSX.W.PH %s, %s, %s", ac
, rs
, rt
);
6620 * 10987654321098765432109876543210
6621 * 001000 x1110000101
6626 std::string
NMD::DROTR(uint64 instruction
)
6628 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6629 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6630 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6632 std::string rt
= GPR(copy(rt_value
));
6633 std::string rs
= GPR(copy(rs_value
));
6634 std::string shift
= IMMEDIATE(copy(shift_value
));
6636 return img::format("DROTR %s, %s, %s", rt
, rs
, shift
);
6644 * 10987654321098765432109876543210
6645 * 10o000 1100xxx0110
6650 std::string
NMD::DROTR32(uint64 instruction
)
6652 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6653 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6654 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6656 std::string rt
= GPR(copy(rt_value
));
6657 std::string rs
= GPR(copy(rs_value
));
6658 std::string shift
= IMMEDIATE(copy(shift_value
));
6660 return img::format("DROTR32 %s, %s, %s", rt
, rs
, shift
);
6668 * 10987654321098765432109876543210
6669 * 001000 x1110000101
6674 std::string
NMD::DROTRV(uint64 instruction
)
6676 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6677 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6678 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6680 std::string rd
= GPR(copy(rd_value
));
6681 std::string rs
= GPR(copy(rs_value
));
6682 std::string rt
= GPR(copy(rt_value
));
6684 return img::format("DROTRV %s, %s, %s", rd
, rs
, rt
);
6692 * 10987654321098765432109876543210
6693 * 001000 x1110000101
6698 std::string
NMD::DROTX(uint64 instruction
)
6700 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6701 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6702 uint64 shiftx_value
= extract_shiftx_11_10_9_8_7_6(instruction
);
6703 uint64 shift_value
= extract_shift_5_4_3_2_1_0(instruction
);
6705 std::string rt
= GPR(copy(rt_value
));
6706 std::string rs
= GPR(copy(rs_value
));
6707 std::string shift
= IMMEDIATE(copy(shift_value
));
6708 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
6710 return img::format("DROTX %s, %s, %s, %s", rt
, rs
, shift
, shiftx
);
6718 * 10987654321098765432109876543210
6719 * 10o000 1100xxx0000
6724 std::string
NMD::DSLL(uint64 instruction
)
6726 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6727 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6728 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6730 std::string rt
= GPR(copy(rt_value
));
6731 std::string rs
= GPR(copy(rs_value
));
6732 std::string shift
= IMMEDIATE(copy(shift_value
));
6734 return img::format("DSLL %s, %s, %s", rt
, rs
, shift
);
6742 * 10987654321098765432109876543210
6743 * 10o000 1100xxx0000
6748 std::string
NMD::DSLL32(uint64 instruction
)
6750 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6751 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6752 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6754 std::string rt
= GPR(copy(rt_value
));
6755 std::string rs
= GPR(copy(rs_value
));
6756 std::string shift
= IMMEDIATE(copy(shift_value
));
6758 return img::format("DSLL32 %s, %s, %s", rt
, rs
, shift
);
6766 * 10987654321098765432109876543210
6767 * 001000 x1110000101
6772 std::string
NMD::DSLLV(uint64 instruction
)
6774 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6775 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6776 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6778 std::string rd
= GPR(copy(rd_value
));
6779 std::string rs
= GPR(copy(rs_value
));
6780 std::string rt
= GPR(copy(rt_value
));
6782 return img::format("DSLLV %s, %s, %s", rd
, rs
, rt
);
6790 * 10987654321098765432109876543210
6791 * 10o000 1100xxx0100
6796 std::string
NMD::DSRA(uint64 instruction
)
6798 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6799 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6800 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6802 std::string rt
= GPR(copy(rt_value
));
6803 std::string rs
= GPR(copy(rs_value
));
6804 std::string shift
= IMMEDIATE(copy(shift_value
));
6806 return img::format("DSRA %s, %s, %s", rt
, rs
, shift
);
6814 * 10987654321098765432109876543210
6815 * 10o000 1100xxx0100
6820 std::string
NMD::DSRA32(uint64 instruction
)
6822 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6823 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6824 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6826 std::string rt
= GPR(copy(rt_value
));
6827 std::string rs
= GPR(copy(rs_value
));
6828 std::string shift
= IMMEDIATE(copy(shift_value
));
6830 return img::format("DSRA32 %s, %s, %s", rt
, rs
, shift
);
6838 * 10987654321098765432109876543210
6839 * 001000 x1110000101
6844 std::string
NMD::DSRAV(uint64 instruction
)
6846 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6847 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6848 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6850 std::string rd
= GPR(copy(rd_value
));
6851 std::string rs
= GPR(copy(rs_value
));
6852 std::string rt
= GPR(copy(rt_value
));
6854 return img::format("DSRAV %s, %s, %s", rd
, rs
, rt
);
6862 * 10987654321098765432109876543210
6863 * 10o000 1100xxx0100
6868 std::string
NMD::DSRL(uint64 instruction
)
6870 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6871 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6872 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6874 std::string rt
= GPR(copy(rt_value
));
6875 std::string rs
= GPR(copy(rs_value
));
6876 std::string shift
= IMMEDIATE(copy(shift_value
));
6878 return img::format("DSRL %s, %s, %s", rt
, rs
, shift
);
6886 * 10987654321098765432109876543210
6887 * 10o000 1100xxx0010
6892 std::string
NMD::DSRL32(uint64 instruction
)
6894 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6895 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6896 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6898 std::string rt
= GPR(copy(rt_value
));
6899 std::string rs
= GPR(copy(rs_value
));
6900 std::string shift
= IMMEDIATE(copy(shift_value
));
6902 return img::format("DSRL32 %s, %s, %s", rt
, rs
, shift
);
6910 * 10987654321098765432109876543210
6911 * 001000 x1110000101
6916 std::string
NMD::DSRLV(uint64 instruction
)
6918 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6919 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6920 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6922 std::string rd
= GPR(copy(rd_value
));
6923 std::string rs
= GPR(copy(rs_value
));
6924 std::string rt
= GPR(copy(rt_value
));
6926 return img::format("DSRLV %s, %s, %s", rd
, rs
, rt
);
6934 * 10987654321098765432109876543210
6935 * 001000 x1110000101
6940 std::string
NMD::DSUB(uint64 instruction
)
6942 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6943 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6944 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6946 std::string rd
= GPR(copy(rd_value
));
6947 std::string rs
= GPR(copy(rs_value
));
6948 std::string rt
= GPR(copy(rt_value
));
6950 return img::format("DSUB %s, %s, %s", rd
, rs
, rt
);
6958 * 10987654321098765432109876543210
6959 * 001000 x1110000101
6964 std::string
NMD::DSUBU(uint64 instruction
)
6966 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6967 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6968 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6970 std::string rd
= GPR(copy(rd_value
));
6971 std::string rs
= GPR(copy(rs_value
));
6972 std::string rt
= GPR(copy(rt_value
));
6974 return img::format("DSUBU %s, %s, %s", rd
, rs
, rt
);
6982 * 10987654321098765432109876543210
6983 * 001000 x1110000101
6988 std::string
NMD::DVPE(uint64 instruction
)
6990 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6992 std::string rt
= GPR(copy(rt_value
));
6994 return img::format("DVPE %s", rt
);
7002 * 10987654321098765432109876543210
7003 * 001000 x1110000101
7008 std::string
NMD::DVP(uint64 instruction
)
7010 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7012 std::string rt
= GPR(copy(rt_value
));
7014 return img::format("DVP %s", rt
);
7022 * 10987654321098765432109876543210
7023 * 001000 x1110000101
7028 std::string
NMD::EHB(uint64 instruction
)
7040 * 10987654321098765432109876543210
7041 * 001000 x1110000101
7046 std::string
NMD::EI(uint64 instruction
)
7048 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7050 std::string rt
= GPR(copy(rt_value
));
7052 return img::format("EI %s", rt
);
7060 * 10987654321098765432109876543210
7061 * 001000 x1110000101
7066 std::string
NMD::EMT(uint64 instruction
)
7068 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7070 std::string rt
= GPR(copy(rt_value
));
7072 return img::format("EMT %s", rt
);
7080 * 10987654321098765432109876543210
7081 * 001000 x1110000101
7086 std::string
NMD::ERET(uint64 instruction
)
7098 * 10987654321098765432109876543210
7099 * 001000 x1110000101
7104 std::string
NMD::ERETNC(uint64 instruction
)
7116 * 10987654321098765432109876543210
7117 * 001000 x1110000101
7122 std::string
NMD::EVP(uint64 instruction
)
7124 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7126 std::string rt
= GPR(copy(rt_value
));
7128 return img::format("EVP %s", rt
);
7136 * 10987654321098765432109876543210
7137 * 001000 x1110000101
7142 std::string
NMD::EVPE(uint64 instruction
)
7144 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7146 std::string rt
= GPR(copy(rt_value
));
7148 return img::format("EVPE %s", rt
);
7156 * 10987654321098765432109876543210
7157 * 001000 x1110000101
7162 std::string
NMD::EXT(uint64 instruction
)
7164 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7165 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7166 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7167 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7169 std::string rt
= GPR(copy(rt_value
));
7170 std::string rs
= GPR(copy(rs_value
));
7171 std::string lsb
= IMMEDIATE(copy(lsb_value
));
7172 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
7174 return img::format("EXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
7182 * 10987654321098765432109876543210
7183 * 001000 x1110000101
7188 std::string
NMD::EXTD(uint64 instruction
)
7190 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7191 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7192 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7193 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7195 std::string rd
= GPR(copy(rd_value
));
7196 std::string rs
= GPR(copy(rs_value
));
7197 std::string rt
= GPR(copy(rt_value
));
7198 std::string shift
= IMMEDIATE(copy(shift_value
));
7200 return img::format("EXTD %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7208 * 10987654321098765432109876543210
7209 * 001000 x1110000101
7214 std::string
NMD::EXTD32(uint64 instruction
)
7216 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7217 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7218 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7219 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7221 std::string rd
= GPR(copy(rd_value
));
7222 std::string rs
= GPR(copy(rs_value
));
7223 std::string rt
= GPR(copy(rt_value
));
7224 std::string shift
= IMMEDIATE(copy(shift_value
));
7226 return img::format("EXTD32 %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7234 * 10987654321098765432109876543210
7235 * 001000 x1110000101
7240 std::string
NMD::EXTPDP(uint64 instruction
)
7242 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7243 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7244 uint64 ac_value
= extract_ac_13_12(instruction
);
7246 std::string rt
= GPR(copy(rt_value
));
7247 std::string ac
= AC(copy(ac_value
));
7248 std::string size
= IMMEDIATE(copy(size_value
));
7250 return img::format("EXTPDP %s, %s, %s", rt
, ac
, size
);
7258 * 10987654321098765432109876543210
7259 * 001000 x1110000101
7264 std::string
NMD::EXTPDPV(uint64 instruction
)
7266 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7267 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7268 uint64 ac_value
= extract_ac_13_12(instruction
);
7270 std::string rt
= GPR(copy(rt_value
));
7271 std::string ac
= AC(copy(ac_value
));
7272 std::string rs
= GPR(copy(rs_value
));
7274 return img::format("EXTPDPV %s, %s, %s", rt
, ac
, rs
);
7282 * 10987654321098765432109876543210
7283 * 001000 x1110000101
7288 std::string
NMD::EXTP(uint64 instruction
)
7290 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7291 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7292 uint64 ac_value
= extract_ac_13_12(instruction
);
7294 std::string rt
= GPR(copy(rt_value
));
7295 std::string ac
= AC(copy(ac_value
));
7296 std::string size
= IMMEDIATE(copy(size_value
));
7298 return img::format("EXTP %s, %s, %s", rt
, ac
, size
);
7306 * 10987654321098765432109876543210
7307 * 001000 x1110000101
7312 std::string
NMD::EXTPV(uint64 instruction
)
7314 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7315 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7316 uint64 ac_value
= extract_ac_13_12(instruction
);
7318 std::string rt
= GPR(copy(rt_value
));
7319 std::string ac
= AC(copy(ac_value
));
7320 std::string rs
= GPR(copy(rs_value
));
7322 return img::format("EXTPV %s, %s, %s", rt
, ac
, rs
);
7330 * 10987654321098765432109876543210
7331 * 001000 x1110000101
7336 std::string
NMD::EXTR_RS_W(uint64 instruction
)
7338 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7339 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7340 uint64 ac_value
= extract_ac_13_12(instruction
);
7342 std::string rt
= GPR(copy(rt_value
));
7343 std::string ac
= AC(copy(ac_value
));
7344 std::string shift
= IMMEDIATE(copy(shift_value
));
7346 return img::format("EXTR_RS.W %s, %s, %s", rt
, ac
, shift
);
7354 * 10987654321098765432109876543210
7355 * 001000 x1110000101
7360 std::string
NMD::EXTR_R_W(uint64 instruction
)
7362 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7363 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7364 uint64 ac_value
= extract_ac_13_12(instruction
);
7366 std::string rt
= GPR(copy(rt_value
));
7367 std::string ac
= AC(copy(ac_value
));
7368 std::string shift
= IMMEDIATE(copy(shift_value
));
7370 return img::format("EXTR_R.W %s, %s, %s", rt
, ac
, shift
);
7378 * 10987654321098765432109876543210
7379 * 001000 x1110000101
7384 std::string
NMD::EXTR_S_H(uint64 instruction
)
7386 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7387 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7388 uint64 ac_value
= extract_ac_13_12(instruction
);
7390 std::string rt
= GPR(copy(rt_value
));
7391 std::string ac
= AC(copy(ac_value
));
7392 std::string shift
= IMMEDIATE(copy(shift_value
));
7394 return img::format("EXTR_S.H %s, %s, %s", rt
, ac
, shift
);
7402 * 10987654321098765432109876543210
7403 * 001000 x1110000101
7408 std::string
NMD::EXTR_W(uint64 instruction
)
7410 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7411 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7412 uint64 ac_value
= extract_ac_13_12(instruction
);
7414 std::string rt
= GPR(copy(rt_value
));
7415 std::string ac
= AC(copy(ac_value
));
7416 std::string shift
= IMMEDIATE(copy(shift_value
));
7418 return img::format("EXTR.W %s, %s, %s", rt
, ac
, shift
);
7426 * 10987654321098765432109876543210
7427 * 001000 x1110000101
7432 std::string
NMD::EXTRV_RS_W(uint64 instruction
)
7434 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7435 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7436 uint64 ac_value
= extract_ac_13_12(instruction
);
7438 std::string rt
= GPR(copy(rt_value
));
7439 std::string ac
= AC(copy(ac_value
));
7440 std::string rs
= GPR(copy(rs_value
));
7442 return img::format("EXTRV_RS.W %s, %s, %s", rt
, ac
, rs
);
7450 * 10987654321098765432109876543210
7451 * 001000 x1110000101
7456 std::string
NMD::EXTRV_R_W(uint64 instruction
)
7458 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7459 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7460 uint64 ac_value
= extract_ac_13_12(instruction
);
7462 std::string rt
= GPR(copy(rt_value
));
7463 std::string ac
= AC(copy(ac_value
));
7464 std::string rs
= GPR(copy(rs_value
));
7466 return img::format("EXTRV_R.W %s, %s, %s", rt
, ac
, rs
);
7474 * 10987654321098765432109876543210
7475 * 001000 x1110000101
7480 std::string
NMD::EXTRV_S_H(uint64 instruction
)
7482 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7483 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7484 uint64 ac_value
= extract_ac_13_12(instruction
);
7486 std::string rt
= GPR(copy(rt_value
));
7487 std::string ac
= AC(copy(ac_value
));
7488 std::string rs
= GPR(copy(rs_value
));
7490 return img::format("EXTRV_S.H %s, %s, %s", rt
, ac
, rs
);
7498 * 10987654321098765432109876543210
7499 * 001000 x1110000101
7504 std::string
NMD::EXTRV_W(uint64 instruction
)
7506 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7507 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7508 uint64 ac_value
= extract_ac_13_12(instruction
);
7510 std::string rt
= GPR(copy(rt_value
));
7511 std::string ac
= AC(copy(ac_value
));
7512 std::string rs
= GPR(copy(rs_value
));
7514 return img::format("EXTRV.W %s, %s, %s", rt
, ac
, rs
);
7519 * EXTW - Extract Word
7522 * 10987654321098765432109876543210
7529 std::string
NMD::EXTW(uint64 instruction
)
7531 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7532 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7533 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7534 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7536 std::string rd
= GPR(copy(rd_value
));
7537 std::string rs
= GPR(copy(rs_value
));
7538 std::string rt
= GPR(copy(rt_value
));
7539 std::string shift
= IMMEDIATE(copy(shift_value
));
7541 return img::format("EXTW %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7549 * 10987654321098765432109876543210
7550 * 001000 x1110000101
7555 std::string
NMD::FLOOR_L_D(uint64 instruction
)
7557 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7558 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7560 std::string ft
= FPR(copy(ft_value
));
7561 std::string fs
= FPR(copy(fs_value
));
7563 return img::format("FLOOR.L.D %s, %s", ft
, fs
);
7571 * 10987654321098765432109876543210
7572 * 001000 x1110000101
7577 std::string
NMD::FLOOR_L_S(uint64 instruction
)
7579 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7580 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7582 std::string ft
= FPR(copy(ft_value
));
7583 std::string fs
= FPR(copy(fs_value
));
7585 return img::format("FLOOR.L.S %s, %s", ft
, fs
);
7593 * 10987654321098765432109876543210
7594 * 001000 x1110000101
7599 std::string
NMD::FLOOR_W_D(uint64 instruction
)
7601 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7602 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7604 std::string ft
= FPR(copy(ft_value
));
7605 std::string fs
= FPR(copy(fs_value
));
7607 return img::format("FLOOR.W.D %s, %s", ft
, fs
);
7615 * 10987654321098765432109876543210
7616 * 001000 x1110000101
7621 std::string
NMD::FLOOR_W_S(uint64 instruction
)
7623 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7624 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7626 std::string ft
= FPR(copy(ft_value
));
7627 std::string fs
= FPR(copy(fs_value
));
7629 return img::format("FLOOR.W.S %s, %s", ft
, fs
);
7637 * 10987654321098765432109876543210
7638 * 001000 x1110000101
7643 std::string
NMD::FORK(uint64 instruction
)
7645 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7646 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7647 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7649 std::string rd
= GPR(copy(rd_value
));
7650 std::string rs
= GPR(copy(rs_value
));
7651 std::string rt
= GPR(copy(rt_value
));
7653 return img::format("FORK %s, %s, %s", rd
, rs
, rt
);
7661 * 10987654321098765432109876543210
7662 * 001000 x1110000101
7667 std::string
NMD::HYPCALL(uint64 instruction
)
7669 uint64 code_value
= extract_code_17_to_0(instruction
);
7671 std::string code
= IMMEDIATE(copy(code_value
));
7673 return img::format("HYPCALL %s", code
);
7681 * 10987654321098765432109876543210
7682 * 001000 x1110000101
7687 std::string
NMD::HYPCALL_16_(uint64 instruction
)
7689 uint64 code_value
= extract_code_1_0(instruction
);
7691 std::string code
= IMMEDIATE(copy(code_value
));
7693 return img::format("HYPCALL %s", code
);
7701 * 10987654321098765432109876543210
7702 * 001000 x1110000101
7707 std::string
NMD::INS(uint64 instruction
)
7709 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7710 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7711 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7712 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7714 std::string rt
= GPR(copy(rt_value
));
7715 std::string rs
= GPR(copy(rs_value
));
7716 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
7717 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
7718 /* !!!!!!!!!! - no conversion function */
7720 return img::format("INS %s, %s, %s, %s", rt
, rs
, pos
, size
);
7729 * 10987654321098765432109876543210
7730 * 001000 x1110000101
7735 std::string
NMD::INSV(uint64 instruction
)
7737 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7738 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7740 std::string rt
= GPR(copy(rt_value
));
7741 std::string rs
= GPR(copy(rs_value
));
7743 return img::format("INSV %s, %s", rt
, rs
);
7751 * 10987654321098765432109876543210
7752 * 001000 x1110000101
7757 std::string
NMD::IRET(uint64 instruction
)
7769 * 10987654321098765432109876543210
7770 * 001000 x1110000101
7775 std::string
NMD::JALRC_16_(uint64 instruction
)
7777 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7779 std::string rt
= GPR(copy(rt_value
));
7781 return img::format("JALRC $%d, %s", 31, rt
);
7789 * 10987654321098765432109876543210
7790 * 001000 x1110000101
7795 std::string
NMD::JALRC_32_(uint64 instruction
)
7797 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7798 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7800 std::string rt
= GPR(copy(rt_value
));
7801 std::string rs
= GPR(copy(rs_value
));
7803 return img::format("JALRC %s, %s", rt
, rs
);
7811 * 10987654321098765432109876543210
7812 * 001000 x1110000101
7817 std::string
NMD::JALRC_HB(uint64 instruction
)
7819 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7820 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7822 std::string rt
= GPR(copy(rt_value
));
7823 std::string rs
= GPR(copy(rs_value
));
7825 return img::format("JALRC.HB %s, %s", rt
, rs
);
7833 * 10987654321098765432109876543210
7834 * 001000 x1110000101
7839 std::string
NMD::JRC(uint64 instruction
)
7841 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7843 std::string rt
= GPR(copy(rt_value
));
7845 return img::format("JRC %s", rt
);
7853 * 10987654321098765432109876543210
7854 * 001000 x1110000101
7859 std::string
NMD::LB_16_(uint64 instruction
)
7861 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
7862 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
7863 uint64 u_value
= extract_u_1_0(instruction
);
7865 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
7866 std::string u
= IMMEDIATE(copy(u_value
));
7867 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
7869 return img::format("LB %s, %s(%s)", rt3
, u
, rs3
);
7877 * 10987654321098765432109876543210
7878 * 001000 x1110000101
7883 std::string
NMD::LB_GP_(uint64 instruction
)
7885 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7886 uint64 u_value
= extract_u_17_to_0(instruction
);
7888 std::string rt
= GPR(copy(rt_value
));
7889 std::string u
= IMMEDIATE(copy(u_value
));
7891 return img::format("LB %s, %s($%d)", rt
, u
, 28);
7899 * 10987654321098765432109876543210
7900 * 001000 x1110000101
7905 std::string
NMD::LB_S9_(uint64 instruction
)
7907 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7908 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7909 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
7911 std::string rt
= GPR(copy(rt_value
));
7912 std::string s
= IMMEDIATE(copy(s_value
));
7913 std::string rs
= GPR(copy(rs_value
));
7915 return img::format("LB %s, %s(%s)", rt
, s
, rs
);
7923 * 10987654321098765432109876543210
7924 * 001000 x1110000101
7929 std::string
NMD::LB_U12_(uint64 instruction
)
7931 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7932 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7933 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
7935 std::string rt
= GPR(copy(rt_value
));
7936 std::string u
= IMMEDIATE(copy(u_value
));
7937 std::string rs
= GPR(copy(rs_value
));
7939 return img::format("LB %s, %s(%s)", rt
, u
, rs
);
7947 * 10987654321098765432109876543210
7948 * 001000 x1110000101
7953 std::string
NMD::LBE(uint64 instruction
)
7955 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7956 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7957 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
7959 std::string rt
= GPR(copy(rt_value
));
7960 std::string s
= IMMEDIATE(copy(s_value
));
7961 std::string rs
= GPR(copy(rs_value
));
7963 return img::format("LBE %s, %s(%s)", rt
, s
, rs
);
7971 * 10987654321098765432109876543210
7972 * 001000 x1110000101
7977 std::string
NMD::LBU_16_(uint64 instruction
)
7979 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
7980 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
7981 uint64 u_value
= extract_u_1_0(instruction
);
7983 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
7984 std::string u
= IMMEDIATE(copy(u_value
));
7985 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
7987 return img::format("LBU %s, %s(%s)", rt3
, u
, rs3
);
7995 * 10987654321098765432109876543210
7996 * 001000 x1110000101
8001 std::string
NMD::LBU_GP_(uint64 instruction
)
8003 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8004 uint64 u_value
= extract_u_17_to_0(instruction
);
8006 std::string rt
= GPR(copy(rt_value
));
8007 std::string u
= IMMEDIATE(copy(u_value
));
8009 return img::format("LBU %s, %s($%d)", rt
, u
, 28);
8017 * 10987654321098765432109876543210
8018 * 001000 x1110000101
8023 std::string
NMD::LBU_S9_(uint64 instruction
)
8025 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8026 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8027 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8029 std::string rt
= GPR(copy(rt_value
));
8030 std::string s
= IMMEDIATE(copy(s_value
));
8031 std::string rs
= GPR(copy(rs_value
));
8033 return img::format("LBU %s, %s(%s)", rt
, s
, rs
);
8041 * 10987654321098765432109876543210
8042 * 001000 x1110000101
8047 std::string
NMD::LBU_U12_(uint64 instruction
)
8049 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8050 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8051 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8053 std::string rt
= GPR(copy(rt_value
));
8054 std::string u
= IMMEDIATE(copy(u_value
));
8055 std::string rs
= GPR(copy(rs_value
));
8057 return img::format("LBU %s, %s(%s)", rt
, u
, rs
);
8065 * 10987654321098765432109876543210
8066 * 001000 x1110000101
8071 std::string
NMD::LBUE(uint64 instruction
)
8073 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8074 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8075 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8077 std::string rt
= GPR(copy(rt_value
));
8078 std::string s
= IMMEDIATE(copy(s_value
));
8079 std::string rs
= GPR(copy(rs_value
));
8081 return img::format("LBUE %s, %s(%s)", rt
, s
, rs
);
8089 * 10987654321098765432109876543210
8090 * 001000 x1110000101
8095 std::string
NMD::LBUX(uint64 instruction
)
8097 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8098 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8099 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8101 std::string rd
= GPR(copy(rd_value
));
8102 std::string rs
= GPR(copy(rs_value
));
8103 std::string rt
= GPR(copy(rt_value
));
8105 return img::format("LBUX %s, %s(%s)", rd
, rs
, rt
);
8113 * 10987654321098765432109876543210
8114 * 001000 x1110000101
8119 std::string
NMD::LBX(uint64 instruction
)
8121 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8122 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8123 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8125 std::string rd
= GPR(copy(rd_value
));
8126 std::string rs
= GPR(copy(rs_value
));
8127 std::string rt
= GPR(copy(rt_value
));
8129 return img::format("LBX %s, %s(%s)", rd
, rs
, rt
);
8137 * 10987654321098765432109876543210
8138 * 001000 x1110000101
8143 std::string
NMD::LD_GP_(uint64 instruction
)
8145 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8146 uint64 u_value
= extract_u_20_to_3__s3(instruction
);
8148 std::string rt
= GPR(copy(rt_value
));
8149 std::string u
= IMMEDIATE(copy(u_value
));
8151 return img::format("LD %s, %s($%d)", rt
, u
, 28);
8159 * 10987654321098765432109876543210
8160 * 001000 x1110000101
8165 std::string
NMD::LD_S9_(uint64 instruction
)
8167 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8168 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8169 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8171 std::string rt
= GPR(copy(rt_value
));
8172 std::string s
= IMMEDIATE(copy(s_value
));
8173 std::string rs
= GPR(copy(rs_value
));
8175 return img::format("LD %s, %s(%s)", rt
, s
, rs
);
8183 * 10987654321098765432109876543210
8184 * 001000 x1110000101
8189 std::string
NMD::LD_U12_(uint64 instruction
)
8191 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8192 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8193 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8195 std::string rt
= GPR(copy(rt_value
));
8196 std::string u
= IMMEDIATE(copy(u_value
));
8197 std::string rs
= GPR(copy(rs_value
));
8199 return img::format("LD %s, %s(%s)", rt
, u
, rs
);
8207 * 10987654321098765432109876543210
8208 * 001000 x1110000101
8213 std::string
NMD::LDC1_GP_(uint64 instruction
)
8215 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8216 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
8218 std::string ft
= FPR(copy(ft_value
));
8219 std::string u
= IMMEDIATE(copy(u_value
));
8221 return img::format("LDC1 %s, %s($%d)", ft
, u
, 28);
8229 * 10987654321098765432109876543210
8230 * 001000 x1110000101
8235 std::string
NMD::LDC1_S9_(uint64 instruction
)
8237 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8238 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8239 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8241 std::string ft
= FPR(copy(ft_value
));
8242 std::string s
= IMMEDIATE(copy(s_value
));
8243 std::string rs
= GPR(copy(rs_value
));
8245 return img::format("LDC1 %s, %s(%s)", ft
, s
, rs
);
8253 * 10987654321098765432109876543210
8254 * 001000 x1110000101
8259 std::string
NMD::LDC1_U12_(uint64 instruction
)
8261 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8262 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8263 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8265 std::string ft
= FPR(copy(ft_value
));
8266 std::string u
= IMMEDIATE(copy(u_value
));
8267 std::string rs
= GPR(copy(rs_value
));
8269 return img::format("LDC1 %s, %s(%s)", ft
, u
, rs
);
8277 * 10987654321098765432109876543210
8278 * 001000 x1110000101
8283 std::string
NMD::LDC1XS(uint64 instruction
)
8285 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8286 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8287 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8289 std::string ft
= FPR(copy(ft_value
));
8290 std::string rs
= GPR(copy(rs_value
));
8291 std::string rt
= GPR(copy(rt_value
));
8293 return img::format("LDC1XS %s, %s(%s)", ft
, rs
, rt
);
8301 * 10987654321098765432109876543210
8302 * 001000 x1110000101
8307 std::string
NMD::LDC1X(uint64 instruction
)
8309 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8310 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8311 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8313 std::string ft
= FPR(copy(ft_value
));
8314 std::string rs
= GPR(copy(rs_value
));
8315 std::string rt
= GPR(copy(rt_value
));
8317 return img::format("LDC1X %s, %s(%s)", ft
, rs
, rt
);
8325 * 10987654321098765432109876543210
8326 * 001000 x1110000101
8331 std::string
NMD::LDC2(uint64 instruction
)
8333 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
8334 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8335 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8337 std::string ct
= CPR(copy(ct_value
));
8338 std::string s
= IMMEDIATE(copy(s_value
));
8339 std::string rs
= GPR(copy(rs_value
));
8341 return img::format("LDC2 %s, %s(%s)", ct
, s
, rs
);
8349 * 10987654321098765432109876543210
8350 * 001000 x1110000101
8355 std::string
NMD::LDM(uint64 instruction
)
8357 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8358 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8359 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8360 uint64 count3_value
= extract_count3_14_13_12(instruction
);
8362 std::string rt
= GPR(copy(rt_value
));
8363 std::string s
= IMMEDIATE(copy(s_value
));
8364 std::string rs
= GPR(copy(rs_value
));
8365 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
8367 return img::format("LDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
8375 * 10987654321098765432109876543210
8376 * 001000 x1110000101
8381 std::string
NMD::LDPC_48_(uint64 instruction
)
8383 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8384 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
8386 std::string rt
= GPR(copy(rt_value
));
8387 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
8389 return img::format("LDPC %s, %s", rt
, s
);
8397 * 10987654321098765432109876543210
8398 * 001000 x1110000101
8403 std::string
NMD::LDX(uint64 instruction
)
8405 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8406 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8407 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8409 std::string rd
= GPR(copy(rd_value
));
8410 std::string rs
= GPR(copy(rs_value
));
8411 std::string rt
= GPR(copy(rt_value
));
8413 return img::format("LDX %s, %s(%s)", rd
, rs
, rt
);
8421 * 10987654321098765432109876543210
8422 * 001000 x1110000101
8427 std::string
NMD::LDXS(uint64 instruction
)
8429 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8430 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8431 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8433 std::string rd
= GPR(copy(rd_value
));
8434 std::string rs
= GPR(copy(rs_value
));
8435 std::string rt
= GPR(copy(rt_value
));
8437 return img::format("LDXS %s, %s(%s)", rd
, rs
, rt
);
8445 * 10987654321098765432109876543210
8446 * 001000 x1110000101
8451 std::string
NMD::LH_16_(uint64 instruction
)
8453 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8454 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8455 uint64 u_value
= extract_u_2_1__s1(instruction
);
8457 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8458 std::string u
= IMMEDIATE(copy(u_value
));
8459 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
8461 return img::format("LH %s, %s(%s)", rt3
, u
, rs3
);
8469 * 10987654321098765432109876543210
8470 * 001000 x1110000101
8475 std::string
NMD::LH_GP_(uint64 instruction
)
8477 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8478 uint64 u_value
= extract_u_17_to_1__s1(instruction
);
8480 std::string rt
= GPR(copy(rt_value
));
8481 std::string u
= IMMEDIATE(copy(u_value
));
8483 return img::format("LH %s, %s($%d)", rt
, u
, 28);
8491 * 10987654321098765432109876543210
8492 * 001000 x1110000101
8497 std::string
NMD::LH_S9_(uint64 instruction
)
8499 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8500 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8501 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8503 std::string rt
= GPR(copy(rt_value
));
8504 std::string s
= IMMEDIATE(copy(s_value
));
8505 std::string rs
= GPR(copy(rs_value
));
8507 return img::format("LH %s, %s(%s)", rt
, s
, rs
);
8515 * 10987654321098765432109876543210
8516 * 001000 x1110000101
8521 std::string
NMD::LH_U12_(uint64 instruction
)
8523 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8524 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8525 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8527 std::string rt
= GPR(copy(rt_value
));
8528 std::string u
= IMMEDIATE(copy(u_value
));
8529 std::string rs
= GPR(copy(rs_value
));
8531 return img::format("LH %s, %s(%s)", rt
, u
, rs
);
8539 * 10987654321098765432109876543210
8540 * 001000 x1110000101
8545 std::string
NMD::LHE(uint64 instruction
)
8547 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8548 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8549 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8551 std::string rt
= GPR(copy(rt_value
));
8552 std::string s
= IMMEDIATE(copy(s_value
));
8553 std::string rs
= GPR(copy(rs_value
));
8555 return img::format("LHE %s, %s(%s)", rt
, s
, rs
);
8563 * 10987654321098765432109876543210
8564 * 001000 x1110000101
8569 std::string
NMD::LHU_16_(uint64 instruction
)
8571 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8572 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8573 uint64 u_value
= extract_u_2_1__s1(instruction
);
8575 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8576 std::string u
= IMMEDIATE(copy(u_value
));
8577 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
8579 return img::format("LHU %s, %s(%s)", rt3
, u
, rs3
);
8587 * 10987654321098765432109876543210
8588 * 001000 x1110000101
8593 std::string
NMD::LHU_GP_(uint64 instruction
)
8595 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8596 uint64 u_value
= extract_u_17_to_1__s1(instruction
);
8598 std::string rt
= GPR(copy(rt_value
));
8599 std::string u
= IMMEDIATE(copy(u_value
));
8601 return img::format("LHU %s, %s($%d)", rt
, u
, 28);
8609 * 10987654321098765432109876543210
8610 * 001000 x1110000101
8615 std::string
NMD::LHU_S9_(uint64 instruction
)
8617 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8618 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8619 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8621 std::string rt
= GPR(copy(rt_value
));
8622 std::string s
= IMMEDIATE(copy(s_value
));
8623 std::string rs
= GPR(copy(rs_value
));
8625 return img::format("LHU %s, %s(%s)", rt
, s
, rs
);
8633 * 10987654321098765432109876543210
8634 * 001000 x1110000101
8639 std::string
NMD::LHU_U12_(uint64 instruction
)
8641 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8642 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8643 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8645 std::string rt
= GPR(copy(rt_value
));
8646 std::string u
= IMMEDIATE(copy(u_value
));
8647 std::string rs
= GPR(copy(rs_value
));
8649 return img::format("LHU %s, %s(%s)", rt
, u
, rs
);
8657 * 10987654321098765432109876543210
8658 * 001000 x1110000101
8663 std::string
NMD::LHUE(uint64 instruction
)
8665 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8666 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8667 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8669 std::string rt
= GPR(copy(rt_value
));
8670 std::string s
= IMMEDIATE(copy(s_value
));
8671 std::string rs
= GPR(copy(rs_value
));
8673 return img::format("LHUE %s, %s(%s)", rt
, s
, rs
);
8681 * 10987654321098765432109876543210
8682 * 001000 x1110000101
8687 std::string
NMD::LHUX(uint64 instruction
)
8689 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8690 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8691 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8693 std::string rd
= GPR(copy(rd_value
));
8694 std::string rs
= GPR(copy(rs_value
));
8695 std::string rt
= GPR(copy(rt_value
));
8697 return img::format("LHUX %s, %s(%s)", rd
, rs
, rt
);
8705 * 10987654321098765432109876543210
8706 * 001000 x1110000101
8711 std::string
NMD::LHUXS(uint64 instruction
)
8713 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8714 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8715 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8717 std::string rd
= GPR(copy(rd_value
));
8718 std::string rs
= GPR(copy(rs_value
));
8719 std::string rt
= GPR(copy(rt_value
));
8721 return img::format("LHUXS %s, %s(%s)", rd
, rs
, rt
);
8729 * 10987654321098765432109876543210
8730 * 001000 x1110000101
8735 std::string
NMD::LHXS(uint64 instruction
)
8737 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8738 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8739 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8741 std::string rd
= GPR(copy(rd_value
));
8742 std::string rs
= GPR(copy(rs_value
));
8743 std::string rt
= GPR(copy(rt_value
));
8745 return img::format("LHXS %s, %s(%s)", rd
, rs
, rt
);
8753 * 10987654321098765432109876543210
8754 * 001000 x1110000101
8759 std::string
NMD::LHX(uint64 instruction
)
8761 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8762 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8763 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8765 std::string rd
= GPR(copy(rd_value
));
8766 std::string rs
= GPR(copy(rs_value
));
8767 std::string rt
= GPR(copy(rt_value
));
8769 return img::format("LHX %s, %s(%s)", rd
, rs
, rt
);
8777 * 10987654321098765432109876543210
8778 * 001000 x1110000101
8783 std::string
NMD::LI_16_(uint64 instruction
)
8785 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8786 uint64 eu_value
= extract_eu_6_5_4_3_2_1_0(instruction
);
8788 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8789 std::string eu
= IMMEDIATE(encode_eu_from_s_li16(eu_value
));
8791 return img::format("LI %s, %s", rt3
, eu
);
8799 * 10987654321098765432109876543210
8800 * 001000 x1110000101
8805 std::string
NMD::LI_48_(uint64 instruction
)
8807 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8808 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
8810 std::string rt
= GPR(copy(rt_value
));
8811 std::string s
= IMMEDIATE(copy(s_value
));
8813 return img::format("LI %s, %s", rt
, s
);
8821 * 10987654321098765432109876543210
8822 * 001000 x1110000101
8827 std::string
NMD::LL(uint64 instruction
)
8829 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8830 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8831 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
8833 std::string rt
= GPR(copy(rt_value
));
8834 std::string s
= IMMEDIATE(copy(s_value
));
8835 std::string rs
= GPR(copy(rs_value
));
8837 return img::format("LL %s, %s(%s)", rt
, s
, rs
);
8845 * 10987654321098765432109876543210
8846 * 001000 x1110000101
8851 std::string
NMD::LLD(uint64 instruction
)
8853 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8854 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8855 int64 s_value
= extract_s__se8_15_7_6_5_4_3_s3(instruction
);
8857 std::string rt
= GPR(copy(rt_value
));
8858 std::string s
= IMMEDIATE(copy(s_value
));
8859 std::string rs
= GPR(copy(rs_value
));
8861 return img::format("LLD %s, %s(%s)", rt
, s
, rs
);
8869 * 10987654321098765432109876543210
8870 * 001000 x1110000101
8875 std::string
NMD::LLDP(uint64 instruction
)
8877 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8878 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8879 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
8881 std::string rt
= GPR(copy(rt_value
));
8882 std::string ru
= GPR(copy(ru_value
));
8883 std::string rs
= GPR(copy(rs_value
));
8885 return img::format("LLDP %s, %s, (%s)", rt
, ru
, rs
);
8893 * 10987654321098765432109876543210
8894 * 001000 x1110000101
8899 std::string
NMD::LLE(uint64 instruction
)
8901 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8902 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8903 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
8905 std::string rt
= GPR(copy(rt_value
));
8906 std::string s
= IMMEDIATE(copy(s_value
));
8907 std::string rs
= GPR(copy(rs_value
));
8909 return img::format("LLE %s, %s(%s)", rt
, s
, rs
);
8917 * 10987654321098765432109876543210
8918 * 001000 x1110000101
8923 std::string
NMD::LLWP(uint64 instruction
)
8925 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8926 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8927 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
8929 std::string rt
= GPR(copy(rt_value
));
8930 std::string ru
= GPR(copy(ru_value
));
8931 std::string rs
= GPR(copy(rs_value
));
8933 return img::format("LLWP %s, %s, (%s)", rt
, ru
, rs
);
8941 * 10987654321098765432109876543210
8942 * 001000 x1110000101
8947 std::string
NMD::LLWPE(uint64 instruction
)
8949 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8950 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8951 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
8953 std::string rt
= GPR(copy(rt_value
));
8954 std::string ru
= GPR(copy(ru_value
));
8955 std::string rs
= GPR(copy(rs_value
));
8957 return img::format("LLWPE %s, %s, (%s)", rt
, ru
, rs
);
8965 * 10987654321098765432109876543210
8966 * 001000 x1110000101
8971 std::string
NMD::LSA(uint64 instruction
)
8973 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8974 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8975 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8976 uint64 u2_value
= extract_u2_10_9(instruction
);
8978 std::string rd
= GPR(copy(rd_value
));
8979 std::string rs
= GPR(copy(rs_value
));
8980 std::string rt
= GPR(copy(rt_value
));
8981 std::string u2
= IMMEDIATE(copy(u2_value
));
8983 return img::format("LSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
8991 * 10987654321098765432109876543210
8992 * 001000 x1110000101
8997 std::string
NMD::LUI(uint64 instruction
)
8999 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9000 int64 s_value
= extract_s__se31_0_11_to_2_20_to_12_s12(instruction
);
9002 std::string rt
= GPR(copy(rt_value
));
9003 std::string s
= IMMEDIATE(copy(s_value
));
9005 return img::format("LUI %s, %%hi(%s)", rt
, s
);
9013 * 10987654321098765432109876543210
9014 * 001000 x1110000101
9019 std::string
NMD::LW_16_(uint64 instruction
)
9021 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9022 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9023 uint64 u_value
= extract_u_3_2_1_0__s2(instruction
);
9025 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
9026 std::string u
= IMMEDIATE(copy(u_value
));
9027 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
9029 return img::format("LW %s, %s(%s)", rt3
, u
, rs3
);
9037 * 10987654321098765432109876543210
9038 * 001000 x1110000101
9043 std::string
NMD::LW_4X4_(uint64 instruction
)
9045 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
9046 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
9047 uint64 u_value
= extract_u_3_8__s2(instruction
);
9049 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
9050 std::string u
= IMMEDIATE(copy(u_value
));
9051 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
9053 return img::format("LW %s, %s(%s)", rt4
, u
, rs4
);
9061 * 10987654321098765432109876543210
9062 * 001000 x1110000101
9067 std::string
NMD::LW_GP_(uint64 instruction
)
9069 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9070 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
9072 std::string rt
= GPR(copy(rt_value
));
9073 std::string u
= IMMEDIATE(copy(u_value
));
9075 return img::format("LW %s, %s($%d)", rt
, u
, 28);
9083 * 10987654321098765432109876543210
9084 * 001000 x1110000101
9089 std::string
NMD::LW_GP16_(uint64 instruction
)
9091 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9092 uint64 u_value
= extract_u_6_5_4_3_2_1_0__s2(instruction
);
9094 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
9095 std::string u
= IMMEDIATE(copy(u_value
));
9097 return img::format("LW %s, %s($%d)", rt3
, u
, 28);
9105 * 10987654321098765432109876543210
9106 * 001000 x1110000101
9111 std::string
NMD::LW_S9_(uint64 instruction
)
9113 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9114 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9115 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9117 std::string rt
= GPR(copy(rt_value
));
9118 std::string s
= IMMEDIATE(copy(s_value
));
9119 std::string rs
= GPR(copy(rs_value
));
9121 return img::format("LW %s, %s(%s)", rt
, s
, rs
);
9129 * 10987654321098765432109876543210
9130 * 001000 x1110000101
9135 std::string
NMD::LW_SP_(uint64 instruction
)
9137 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
9138 uint64 u_value
= extract_u_4_3_2_1_0__s2(instruction
);
9140 std::string rt
= GPR(copy(rt_value
));
9141 std::string u
= IMMEDIATE(copy(u_value
));
9143 return img::format("LW %s, %s($%d)", rt
, u
, 29);
9151 * 10987654321098765432109876543210
9152 * 001000 x1110000101
9157 std::string
NMD::LW_U12_(uint64 instruction
)
9159 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9160 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9161 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9163 std::string rt
= GPR(copy(rt_value
));
9164 std::string u
= IMMEDIATE(copy(u_value
));
9165 std::string rs
= GPR(copy(rs_value
));
9167 return img::format("LW %s, %s(%s)", rt
, u
, rs
);
9175 * 10987654321098765432109876543210
9176 * 001000 x1110000101
9181 std::string
NMD::LWC1_GP_(uint64 instruction
)
9183 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9184 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
9186 std::string ft
= FPR(copy(ft_value
));
9187 std::string u
= IMMEDIATE(copy(u_value
));
9189 return img::format("LWC1 %s, %s($%d)", ft
, u
, 28);
9197 * 10987654321098765432109876543210
9198 * 001000 x1110000101
9203 std::string
NMD::LWC1_S9_(uint64 instruction
)
9205 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9206 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9207 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9209 std::string ft
= FPR(copy(ft_value
));
9210 std::string s
= IMMEDIATE(copy(s_value
));
9211 std::string rs
= GPR(copy(rs_value
));
9213 return img::format("LWC1 %s, %s(%s)", ft
, s
, rs
);
9221 * 10987654321098765432109876543210
9222 * 001000 x1110000101
9227 std::string
NMD::LWC1_U12_(uint64 instruction
)
9229 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9230 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9231 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9233 std::string ft
= FPR(copy(ft_value
));
9234 std::string u
= IMMEDIATE(copy(u_value
));
9235 std::string rs
= GPR(copy(rs_value
));
9237 return img::format("LWC1 %s, %s(%s)", ft
, u
, rs
);
9245 * 10987654321098765432109876543210
9246 * 001000 x1110000101
9251 std::string
NMD::LWC1X(uint64 instruction
)
9253 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9254 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9255 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9257 std::string ft
= FPR(copy(ft_value
));
9258 std::string rs
= GPR(copy(rs_value
));
9259 std::string rt
= GPR(copy(rt_value
));
9261 return img::format("LWC1X %s, %s(%s)", ft
, rs
, rt
);
9269 * 10987654321098765432109876543210
9270 * 001000 x1110000101
9275 std::string
NMD::LWC1XS(uint64 instruction
)
9277 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9278 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9279 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9281 std::string ft
= FPR(copy(ft_value
));
9282 std::string rs
= GPR(copy(rs_value
));
9283 std::string rt
= GPR(copy(rt_value
));
9285 return img::format("LWC1XS %s, %s(%s)", ft
, rs
, rt
);
9293 * 10987654321098765432109876543210
9294 * 001000 x1110000101
9299 std::string
NMD::LWC2(uint64 instruction
)
9301 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
9302 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9303 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9305 std::string ct
= CPR(copy(ct_value
));
9306 std::string s
= IMMEDIATE(copy(s_value
));
9307 std::string rs
= GPR(copy(rs_value
));
9309 return img::format("LWC2 %s, %s(%s)", ct
, s
, rs
);
9317 * 10987654321098765432109876543210
9318 * 001000 x1110000101
9323 std::string
NMD::LWE(uint64 instruction
)
9325 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9326 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9327 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9329 std::string rt
= GPR(copy(rt_value
));
9330 std::string s
= IMMEDIATE(copy(s_value
));
9331 std::string rs
= GPR(copy(rs_value
));
9333 return img::format("LWE %s, %s(%s)", rt
, s
, rs
);
9341 * 10987654321098765432109876543210
9342 * 001000 x1110000101
9347 std::string
NMD::LWM(uint64 instruction
)
9349 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9350 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9351 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9352 uint64 count3_value
= extract_count3_14_13_12(instruction
);
9354 std::string rt
= GPR(copy(rt_value
));
9355 std::string s
= IMMEDIATE(copy(s_value
));
9356 std::string rs
= GPR(copy(rs_value
));
9357 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
9359 return img::format("LWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
9367 * 10987654321098765432109876543210
9368 * 001000 x1110000101
9373 std::string
NMD::LWPC_48_(uint64 instruction
)
9375 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
9376 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
9378 std::string rt
= GPR(copy(rt_value
));
9379 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
9381 return img::format("LWPC %s, %s", rt
, s
);
9389 * 10987654321098765432109876543210
9390 * 001000 x1110000101
9395 std::string
NMD::LWU_GP_(uint64 instruction
)
9397 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9398 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
9400 std::string rt
= GPR(copy(rt_value
));
9401 std::string u
= IMMEDIATE(copy(u_value
));
9403 return img::format("LWU %s, %s($%d)", rt
, u
, 28);
9411 * 10987654321098765432109876543210
9412 * 001000 x1110000101
9417 std::string
NMD::LWU_S9_(uint64 instruction
)
9419 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9420 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9421 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9423 std::string rt
= GPR(copy(rt_value
));
9424 std::string s
= IMMEDIATE(copy(s_value
));
9425 std::string rs
= GPR(copy(rs_value
));
9427 return img::format("LWU %s, %s(%s)", rt
, s
, rs
);
9435 * 10987654321098765432109876543210
9436 * 001000 x1110000101
9441 std::string
NMD::LWU_U12_(uint64 instruction
)
9443 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9444 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9445 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9447 std::string rt
= GPR(copy(rt_value
));
9448 std::string u
= IMMEDIATE(copy(u_value
));
9449 std::string rs
= GPR(copy(rs_value
));
9451 return img::format("LWU %s, %s(%s)", rt
, u
, rs
);
9459 * 10987654321098765432109876543210
9460 * 001000 x1110000101
9465 std::string
NMD::LWUX(uint64 instruction
)
9467 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9468 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9469 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9471 std::string rd
= GPR(copy(rd_value
));
9472 std::string rs
= GPR(copy(rs_value
));
9473 std::string rt
= GPR(copy(rt_value
));
9475 return img::format("LWUX %s, %s(%s)", rd
, rs
, rt
);
9483 * 10987654321098765432109876543210
9484 * 001000 x1110000101
9489 std::string
NMD::LWUXS(uint64 instruction
)
9491 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9492 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9493 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9495 std::string rd
= GPR(copy(rd_value
));
9496 std::string rs
= GPR(copy(rs_value
));
9497 std::string rt
= GPR(copy(rt_value
));
9499 return img::format("LWUXS %s, %s(%s)", rd
, rs
, rt
);
9507 * 10987654321098765432109876543210
9508 * 001000 x1110000101
9513 std::string
NMD::LWX(uint64 instruction
)
9515 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9516 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9517 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9519 std::string rd
= GPR(copy(rd_value
));
9520 std::string rs
= GPR(copy(rs_value
));
9521 std::string rt
= GPR(copy(rt_value
));
9523 return img::format("LWX %s, %s(%s)", rd
, rs
, rt
);
9531 * 10987654321098765432109876543210
9532 * 001000 x1110000101
9537 std::string
NMD::LWXS_16_(uint64 instruction
)
9539 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9540 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9541 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
9543 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
9544 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
9545 std::string rt3
= IMMEDIATE(decode_gpr_gpr3(rt3_value
));
9547 return img::format("LWXS %s, %s(%s)", rd3
, rs3
, rt3
);
9555 * 10987654321098765432109876543210
9556 * 001000 x1110000101
9561 std::string
NMD::LWXS_32_(uint64 instruction
)
9563 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9565 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9567 std::string rd
= GPR(copy(rd_value
));
9568 std::string rs
= GPR(copy(rs_value
));
9569 std::string rt
= GPR(copy(rt_value
));
9571 return img::format("LWXS %s, %s(%s)", rd
, rs
, rt
);
9579 * 10987654321098765432109876543210
9580 * 001000 x1110000101
9585 std::string
NMD::MADD_DSP_(uint64 instruction
)
9587 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9589 uint64 ac_value
= extract_ac_13_12(instruction
);
9591 std::string ac
= AC(copy(ac_value
));
9592 std::string rs
= GPR(copy(rs_value
));
9593 std::string rt
= GPR(copy(rt_value
));
9595 return img::format("MADD %s, %s, %s", ac
, rs
, rt
);
9603 * 10987654321098765432109876543210
9604 * 001000 x1110000101
9609 std::string
NMD::MADDF_D(uint64 instruction
)
9611 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9612 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9613 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9615 std::string fd
= FPR(copy(fd_value
));
9616 std::string fs
= FPR(copy(fs_value
));
9617 std::string ft
= FPR(copy(ft_value
));
9619 return img::format("MADDF.D %s, %s, %s", fd
, fs
, ft
);
9627 * 10987654321098765432109876543210
9628 * 001000 x1110000101
9633 std::string
NMD::MADDF_S(uint64 instruction
)
9635 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9636 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9637 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9639 std::string fd
= FPR(copy(fd_value
));
9640 std::string fs
= FPR(copy(fs_value
));
9641 std::string ft
= FPR(copy(ft_value
));
9643 return img::format("MADDF.S %s, %s, %s", fd
, fs
, ft
);
9651 * 10987654321098765432109876543210
9652 * 001000 x1110000101
9657 std::string
NMD::MADDU_DSP_(uint64 instruction
)
9659 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9661 uint64 ac_value
= extract_ac_13_12(instruction
);
9663 std::string ac
= AC(copy(ac_value
));
9664 std::string rs
= GPR(copy(rs_value
));
9665 std::string rt
= GPR(copy(rt_value
));
9667 return img::format("MADDU %s, %s, %s", ac
, rs
, rt
);
9675 * 10987654321098765432109876543210
9676 * 001000 x1110000101
9681 std::string
NMD::MAQ_S_W_PHL(uint64 instruction
)
9683 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9684 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9685 uint64 ac_value
= extract_ac_13_12(instruction
);
9687 std::string ac
= AC(copy(ac_value
));
9688 std::string rs
= GPR(copy(rs_value
));
9689 std::string rt
= GPR(copy(rt_value
));
9691 return img::format("MAQ_S.W.PHL %s, %s, %s", ac
, rs
, rt
);
9699 * 10987654321098765432109876543210
9700 * 001000 x1110000101
9705 std::string
NMD::MAQ_S_W_PHR(uint64 instruction
)
9707 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9708 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9709 uint64 ac_value
= extract_ac_13_12(instruction
);
9711 std::string ac
= AC(copy(ac_value
));
9712 std::string rs
= GPR(copy(rs_value
));
9713 std::string rt
= GPR(copy(rt_value
));
9715 return img::format("MAQ_S.W.PHR %s, %s, %s", ac
, rs
, rt
);
9723 * 10987654321098765432109876543210
9724 * 001000 x1110000101
9729 std::string
NMD::MAQ_SA_W_PHL(uint64 instruction
)
9731 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9732 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9733 uint64 ac_value
= extract_ac_13_12(instruction
);
9735 std::string ac
= AC(copy(ac_value
));
9736 std::string rs
= GPR(copy(rs_value
));
9737 std::string rt
= GPR(copy(rt_value
));
9739 return img::format("MAQ_SA.W.PHL %s, %s, %s", ac
, rs
, rt
);
9747 * 10987654321098765432109876543210
9748 * 001000 x1110000101
9753 std::string
NMD::MAQ_SA_W_PHR(uint64 instruction
)
9755 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9756 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9757 uint64 ac_value
= extract_ac_13_12(instruction
);
9759 std::string ac
= AC(copy(ac_value
));
9760 std::string rs
= GPR(copy(rs_value
));
9761 std::string rt
= GPR(copy(rt_value
));
9763 return img::format("MAQ_SA.W.PHR %s, %s, %s", ac
, rs
, rt
);
9771 * 10987654321098765432109876543210
9772 * 001000 x1110000101
9777 std::string
NMD::MAX_D(uint64 instruction
)
9779 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9780 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9781 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9783 std::string fd
= FPR(copy(fd_value
));
9784 std::string fs
= FPR(copy(fs_value
));
9785 std::string ft
= FPR(copy(ft_value
));
9787 return img::format("MAX.D %s, %s, %s", fd
, fs
, ft
);
9795 * 10987654321098765432109876543210
9796 * 001000 x1110000101
9801 std::string
NMD::MAX_S(uint64 instruction
)
9803 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9804 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9805 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9807 std::string fd
= FPR(copy(fd_value
));
9808 std::string fs
= FPR(copy(fs_value
));
9809 std::string ft
= FPR(copy(ft_value
));
9811 return img::format("MAX.S %s, %s, %s", fd
, fs
, ft
);
9819 * 10987654321098765432109876543210
9820 * 001000 x1110000101
9825 std::string
NMD::MAXA_D(uint64 instruction
)
9827 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9828 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9829 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9831 std::string fd
= FPR(copy(fd_value
));
9832 std::string fs
= FPR(copy(fs_value
));
9833 std::string ft
= FPR(copy(ft_value
));
9835 return img::format("MAXA.D %s, %s, %s", fd
, fs
, ft
);
9843 * 10987654321098765432109876543210
9844 * 001000 x1110000101
9849 std::string
NMD::MAXA_S(uint64 instruction
)
9851 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9852 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9853 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9855 std::string fd
= FPR(copy(fd_value
));
9856 std::string fs
= FPR(copy(fs_value
));
9857 std::string ft
= FPR(copy(ft_value
));
9859 return img::format("MAXA.S %s, %s, %s", fd
, fs
, ft
);
9867 * 10987654321098765432109876543210
9868 * 001000 x1110000101
9873 std::string
NMD::MFC0(uint64 instruction
)
9875 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9876 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
9877 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
9879 std::string rt
= GPR(copy(rt_value
));
9880 std::string c0s
= CPR(copy(c0s_value
));
9881 std::string sel
= IMMEDIATE(copy(sel_value
));
9883 return img::format("MFC0 %s, %s, %s", rt
, c0s
, sel
);
9891 * 10987654321098765432109876543210
9892 * 001000 x1110000101
9897 std::string
NMD::MFC1(uint64 instruction
)
9899 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9900 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9902 std::string rt
= GPR(copy(rt_value
));
9903 std::string fs
= FPR(copy(fs_value
));
9905 return img::format("MFC1 %s, %s", rt
, fs
);
9913 * 10987654321098765432109876543210
9914 * 001000 x1110000101
9919 std::string
NMD::MFC2(uint64 instruction
)
9921 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9922 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
9924 std::string rt
= GPR(copy(rt_value
));
9925 std::string cs
= CPR(copy(cs_value
));
9927 return img::format("MFC2 %s, %s", rt
, cs
);
9935 * 10987654321098765432109876543210
9936 * 001000 x1110000101
9941 std::string
NMD::MFGC0(uint64 instruction
)
9943 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9944 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
9945 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
9947 std::string rt
= GPR(copy(rt_value
));
9948 std::string c0s
= CPR(copy(c0s_value
));
9949 std::string sel
= IMMEDIATE(copy(sel_value
));
9951 return img::format("MFGC0 %s, %s, %s", rt
, c0s
, sel
);
9959 * 10987654321098765432109876543210
9960 * 001000 x1110000101
9965 std::string
NMD::MFHC0(uint64 instruction
)
9967 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9968 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
9969 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
9971 std::string rt
= GPR(copy(rt_value
));
9972 std::string c0s
= CPR(copy(c0s_value
));
9973 std::string sel
= IMMEDIATE(copy(sel_value
));
9975 return img::format("MFHC0 %s, %s, %s", rt
, c0s
, sel
);
9983 * 10987654321098765432109876543210
9984 * 001000 x1110000101
9989 std::string
NMD::MFHC1(uint64 instruction
)
9991 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9992 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9994 std::string rt
= GPR(copy(rt_value
));
9995 std::string fs
= FPR(copy(fs_value
));
9997 return img::format("MFHC1 %s, %s", rt
, fs
);
10005 * 10987654321098765432109876543210
10006 * 001000 x1110000101
10011 std::string
NMD::MFHC2(uint64 instruction
)
10013 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10014 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10016 std::string rt
= GPR(copy(rt_value
));
10017 std::string cs
= CPR(copy(cs_value
));
10019 return img::format("MFHC2 %s, %s", rt
, cs
);
10027 * 10987654321098765432109876543210
10028 * 001000 x1110000101
10033 std::string
NMD::MFHGC0(uint64 instruction
)
10035 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10036 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10037 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10039 std::string rt
= GPR(copy(rt_value
));
10040 std::string c0s
= CPR(copy(c0s_value
));
10041 std::string sel
= IMMEDIATE(copy(sel_value
));
10043 return img::format("MFHGC0 %s, %s, %s", rt
, c0s
, sel
);
10051 * 10987654321098765432109876543210
10052 * 001000 x1110000101
10057 std::string
NMD::MFHI_DSP_(uint64 instruction
)
10059 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10060 uint64 ac_value
= extract_ac_13_12(instruction
);
10062 std::string rt
= GPR(copy(rt_value
));
10063 std::string ac
= AC(copy(ac_value
));
10065 return img::format("MFHI %s, %s", rt
, ac
);
10073 * 10987654321098765432109876543210
10074 * 001000 x1110000101
10079 std::string
NMD::MFHTR(uint64 instruction
)
10081 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10082 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10083 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10084 uint64 u_value
= extract_u_10(instruction
);
10086 std::string rt
= GPR(copy(rt_value
));
10087 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10088 std::string u
= IMMEDIATE(copy(u_value
));
10089 std::string sel
= IMMEDIATE(copy(sel_value
));
10091 return img::format("MFHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10099 * 10987654321098765432109876543210
10100 * 001000 x1110000101
10105 std::string
NMD::MFLO_DSP_(uint64 instruction
)
10107 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10108 uint64 ac_value
= extract_ac_13_12(instruction
);
10110 std::string rt
= GPR(copy(rt_value
));
10111 std::string ac
= AC(copy(ac_value
));
10113 return img::format("MFLO %s, %s", rt
, ac
);
10121 * 10987654321098765432109876543210
10122 * 001000 x1110000101
10127 std::string
NMD::MFTR(uint64 instruction
)
10129 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10130 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10131 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10132 uint64 u_value
= extract_u_10(instruction
);
10134 std::string rt
= GPR(copy(rt_value
));
10135 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10136 std::string u
= IMMEDIATE(copy(u_value
));
10137 std::string sel
= IMMEDIATE(copy(sel_value
));
10139 return img::format("MFTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10147 * 10987654321098765432109876543210
10148 * 001000 x1110000101
10153 std::string
NMD::MIN_D(uint64 instruction
)
10155 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10156 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10157 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10159 std::string fd
= FPR(copy(fd_value
));
10160 std::string fs
= FPR(copy(fs_value
));
10161 std::string ft
= FPR(copy(ft_value
));
10163 return img::format("MIN.D %s, %s, %s", fd
, fs
, ft
);
10171 * 10987654321098765432109876543210
10172 * 001000 x1110000101
10177 std::string
NMD::MIN_S(uint64 instruction
)
10179 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10180 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10181 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10183 std::string fd
= FPR(copy(fd_value
));
10184 std::string fs
= FPR(copy(fs_value
));
10185 std::string ft
= FPR(copy(ft_value
));
10187 return img::format("MIN.S %s, %s, %s", fd
, fs
, ft
);
10195 * 10987654321098765432109876543210
10196 * 001000 x1110000101
10201 std::string
NMD::MINA_D(uint64 instruction
)
10203 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10204 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10205 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10207 std::string fd
= FPR(copy(fd_value
));
10208 std::string fs
= FPR(copy(fs_value
));
10209 std::string ft
= FPR(copy(ft_value
));
10211 return img::format("MINA.D %s, %s, %s", fd
, fs
, ft
);
10219 * 10987654321098765432109876543210
10220 * 001000 x1110000101
10225 std::string
NMD::MINA_S(uint64 instruction
)
10227 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10228 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10229 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10231 std::string fd
= FPR(copy(fd_value
));
10232 std::string fs
= FPR(copy(fs_value
));
10233 std::string ft
= FPR(copy(ft_value
));
10235 return img::format("MINA.S %s, %s, %s", fd
, fs
, ft
);
10243 * 10987654321098765432109876543210
10244 * 001000 x1110000101
10249 std::string
NMD::MOD(uint64 instruction
)
10251 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10252 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10253 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10255 std::string rd
= GPR(copy(rd_value
));
10256 std::string rs
= GPR(copy(rs_value
));
10257 std::string rt
= GPR(copy(rt_value
));
10259 return img::format("MOD %s, %s, %s", rd
, rs
, rt
);
10267 * 10987654321098765432109876543210
10268 * 001000 x1110000101
10273 std::string
NMD::MODSUB(uint64 instruction
)
10275 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10276 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10277 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10279 std::string rd
= GPR(copy(rd_value
));
10280 std::string rs
= GPR(copy(rs_value
));
10281 std::string rt
= GPR(copy(rt_value
));
10283 return img::format("MODSUB %s, %s, %s", rd
, rs
, rt
);
10291 * 10987654321098765432109876543210
10292 * 001000 x1110000101
10297 std::string
NMD::MODU(uint64 instruction
)
10299 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10300 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10301 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10303 std::string rd
= GPR(copy(rd_value
));
10304 std::string rs
= GPR(copy(rs_value
));
10305 std::string rt
= GPR(copy(rt_value
));
10307 return img::format("MODU %s, %s, %s", rd
, rs
, rt
);
10315 * 10987654321098765432109876543210
10316 * 001000 x1110000101
10321 std::string
NMD::MOV_D(uint64 instruction
)
10323 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10324 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10326 std::string ft
= FPR(copy(ft_value
));
10327 std::string fs
= FPR(copy(fs_value
));
10329 return img::format("MOV.D %s, %s", ft
, fs
);
10337 * 10987654321098765432109876543210
10338 * 001000 x1110000101
10343 std::string
NMD::MOV_S(uint64 instruction
)
10345 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10346 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10348 std::string ft
= FPR(copy(ft_value
));
10349 std::string fs
= FPR(copy(fs_value
));
10351 return img::format("MOV.S %s, %s", ft
, fs
);
10359 * 10987654321098765432109876543210
10360 * 001000 x1110000101
10365 std::string
NMD::MOVE_BALC(uint64 instruction
)
10367 uint64 rtz4_value
= extract_rtz4_27_26_25_23_22_21(instruction
);
10368 uint64 rd1_value
= extract_rdl_25_24(instruction
);
10369 int64 s_value
= extract_s__se21_0_20_to_1_s1(instruction
);
10371 std::string rd1
= GPR(encode_rd1_from_rd(rd1_value
));
10372 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
10373 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
10375 return img::format("MOVE.BALC %s, %s, %s", rd1
, rtz4
, s
);
10383 * 10987654321098765432109876543210
10384 * 001000 x1110000101
10389 std::string
NMD::MOVEP(uint64 instruction
)
10391 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
10392 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10393 uint64 rsz4_value
= extract_rsz4_4_2_1_0(instruction
);
10395 std::string rd2
= GPR(encode_rd2_reg1(rd2_value
));
10396 std::string re2
= GPR(encode_rd2_reg2(rd2_value
));
10397 /* !!!!!!!!!! - no conversion function */
10398 std::string rsz4
= GPR(encode_gpr4_zero(rsz4_value
));
10399 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
10401 return img::format("MOVEP %s, %s, %s, %s", rd2
, re2
, rsz4
, rtz4
);
10410 * 10987654321098765432109876543210
10411 * 001000 x1110000101
10416 std::string
NMD::MOVEP_REV_(uint64 instruction
)
10418 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
10419 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10420 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
10422 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
10423 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
10424 std::string rd2
= GPR(encode_rd2_reg1(rd2_value
));
10425 std::string rs2
= GPR(encode_rd2_reg2(rd2_value
));
10426 /* !!!!!!!!!! - no conversion function */
10428 return img::format("MOVEP %s, %s, %s, %s", rs4
, rt4
, rd2
, rs2
);
10434 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10437 * 10987654321098765432109876543210
10438 * 001000 00010001101
10443 std::string
NMD::MOVE(uint64 instruction
)
10445 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
10446 uint64 rs_value
= extract_rs_4_3_2_1_0(instruction
);
10448 std::string rt
= GPR(copy(rt_value
));
10449 std::string rs
= GPR(copy(rs_value
));
10451 return img::format("MOVE %s, %s", rt
, rs
);
10456 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10459 * 10987654321098765432109876543210
10460 * 001000 00010001101
10465 std::string
NMD::MOVN(uint64 instruction
)
10467 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10468 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10469 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10471 std::string rd
= GPR(copy(rd_value
));
10472 std::string rs
= GPR(copy(rs_value
));
10473 std::string rt
= GPR(copy(rt_value
));
10475 return img::format("MOVN %s, %s, %s", rd
, rs
, rt
);
10480 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10483 * 10987654321098765432109876543210
10484 * 001000 00010001101
10489 std::string
NMD::MOVZ(uint64 instruction
)
10491 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10492 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10493 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10495 std::string rd
= GPR(copy(rd_value
));
10496 std::string rs
= GPR(copy(rs_value
));
10497 std::string rt
= GPR(copy(rt_value
));
10499 return img::format("MOVZ %s, %s, %s", rd
, rs
, rt
);
10504 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10507 * 10987654321098765432109876543210
10508 * 001000 00010001101
10513 std::string
NMD::MSUB_DSP_(uint64 instruction
)
10515 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10516 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10517 uint64 ac_value
= extract_ac_13_12(instruction
);
10519 std::string ac
= AC(copy(ac_value
));
10520 std::string rs
= GPR(copy(rs_value
));
10521 std::string rt
= GPR(copy(rt_value
));
10523 return img::format("MSUB %s, %s, %s", ac
, rs
, rt
);
10528 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10531 * 10987654321098765432109876543210
10532 * 001000 00010001101
10537 std::string
NMD::MSUBF_D(uint64 instruction
)
10539 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10540 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10541 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10543 std::string fd
= FPR(copy(fd_value
));
10544 std::string fs
= FPR(copy(fs_value
));
10545 std::string ft
= FPR(copy(ft_value
));
10547 return img::format("MSUBF.D %s, %s, %s", fd
, fs
, ft
);
10552 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10555 * 10987654321098765432109876543210
10556 * 001000 00010001101
10561 std::string
NMD::MSUBF_S(uint64 instruction
)
10563 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10564 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10565 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10567 std::string fd
= FPR(copy(fd_value
));
10568 std::string fs
= FPR(copy(fs_value
));
10569 std::string ft
= FPR(copy(ft_value
));
10571 return img::format("MSUBF.S %s, %s, %s", fd
, fs
, ft
);
10576 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10579 * 10987654321098765432109876543210
10580 * 001000 00010001101
10585 std::string
NMD::MSUBU_DSP_(uint64 instruction
)
10587 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10589 uint64 ac_value
= extract_ac_13_12(instruction
);
10591 std::string ac
= AC(copy(ac_value
));
10592 std::string rs
= GPR(copy(rs_value
));
10593 std::string rt
= GPR(copy(rt_value
));
10595 return img::format("MSUBU %s, %s, %s", ac
, rs
, rt
);
10600 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10603 * 10987654321098765432109876543210
10604 * 001000 00010001101
10609 std::string
NMD::MTC0(uint64 instruction
)
10611 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10612 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10613 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10615 std::string rt
= GPR(copy(rt_value
));
10616 std::string c0s
= CPR(copy(c0s_value
));
10617 std::string sel
= IMMEDIATE(copy(sel_value
));
10619 return img::format("MTC0 %s, %s, %s", rt
, c0s
, sel
);
10624 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10627 * 10987654321098765432109876543210
10628 * 001000 00010001101
10633 std::string
NMD::MTC1(uint64 instruction
)
10635 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10636 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10638 std::string rt
= GPR(copy(rt_value
));
10639 std::string fs
= FPR(copy(fs_value
));
10641 return img::format("MTC1 %s, %s", rt
, fs
);
10646 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10649 * 10987654321098765432109876543210
10650 * 001000 00010001101
10655 std::string
NMD::MTC2(uint64 instruction
)
10657 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10658 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10660 std::string rt
= GPR(copy(rt_value
));
10661 std::string cs
= CPR(copy(cs_value
));
10663 return img::format("MTC2 %s, %s", rt
, cs
);
10668 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10671 * 10987654321098765432109876543210
10672 * 001000 00010001101
10677 std::string
NMD::MTGC0(uint64 instruction
)
10679 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10680 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10681 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10683 std::string rt
= GPR(copy(rt_value
));
10684 std::string c0s
= CPR(copy(c0s_value
));
10685 std::string sel
= IMMEDIATE(copy(sel_value
));
10687 return img::format("MTGC0 %s, %s, %s", rt
, c0s
, sel
);
10692 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10695 * 10987654321098765432109876543210
10696 * 001000 00010001101
10701 std::string
NMD::MTHC0(uint64 instruction
)
10703 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10704 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10705 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10707 std::string rt
= GPR(copy(rt_value
));
10708 std::string c0s
= CPR(copy(c0s_value
));
10709 std::string sel
= IMMEDIATE(copy(sel_value
));
10711 return img::format("MTHC0 %s, %s, %s", rt
, c0s
, sel
);
10716 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10719 * 10987654321098765432109876543210
10720 * 001000 00010001101
10725 std::string
NMD::MTHC1(uint64 instruction
)
10727 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10728 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10730 std::string rt
= GPR(copy(rt_value
));
10731 std::string fs
= FPR(copy(fs_value
));
10733 return img::format("MTHC1 %s, %s", rt
, fs
);
10738 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10741 * 10987654321098765432109876543210
10742 * 001000 00010001101
10747 std::string
NMD::MTHC2(uint64 instruction
)
10749 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10750 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10752 std::string rt
= GPR(copy(rt_value
));
10753 std::string cs
= CPR(copy(cs_value
));
10755 return img::format("MTHC2 %s, %s", rt
, cs
);
10760 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10763 * 10987654321098765432109876543210
10764 * 001000 00010001101
10769 std::string
NMD::MTHGC0(uint64 instruction
)
10771 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10772 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10773 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10775 std::string rt
= GPR(copy(rt_value
));
10776 std::string c0s
= CPR(copy(c0s_value
));
10777 std::string sel
= IMMEDIATE(copy(sel_value
));
10779 return img::format("MTHGC0 %s, %s, %s", rt
, c0s
, sel
);
10784 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10787 * 10987654321098765432109876543210
10788 * 001000 00010001101
10793 std::string
NMD::MTHI_DSP_(uint64 instruction
)
10795 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10796 uint64 ac_value
= extract_ac_13_12(instruction
);
10798 std::string rs
= GPR(copy(rs_value
));
10799 std::string ac
= AC(copy(ac_value
));
10801 return img::format("MTHI %s, %s", rs
, ac
);
10806 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10809 * 10987654321098765432109876543210
10810 * 001000 00010001101
10815 std::string
NMD::MTHLIP(uint64 instruction
)
10817 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10818 uint64 ac_value
= extract_ac_13_12(instruction
);
10820 std::string rs
= GPR(copy(rs_value
));
10821 std::string ac
= AC(copy(ac_value
));
10823 return img::format("MTHLIP %s, %s", rs
, ac
);
10828 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10831 * 10987654321098765432109876543210
10832 * 001000 00010001101
10837 std::string
NMD::MTHTR(uint64 instruction
)
10839 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10840 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10841 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10842 uint64 u_value
= extract_u_10(instruction
);
10844 std::string rt
= GPR(copy(rt_value
));
10845 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10846 std::string u
= IMMEDIATE(copy(u_value
));
10847 std::string sel
= IMMEDIATE(copy(sel_value
));
10849 return img::format("MTHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10854 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10857 * 10987654321098765432109876543210
10858 * 001000 00010001101
10863 std::string
NMD::MTLO_DSP_(uint64 instruction
)
10865 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10866 uint64 ac_value
= extract_ac_13_12(instruction
);
10868 std::string rs
= GPR(copy(rs_value
));
10869 std::string ac
= AC(copy(ac_value
));
10871 return img::format("MTLO %s, %s", rs
, ac
);
10876 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10879 * 10987654321098765432109876543210
10880 * 001000 00010001101
10885 std::string
NMD::MTTR(uint64 instruction
)
10887 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10888 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10889 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10890 uint64 u_value
= extract_u_10(instruction
);
10892 std::string rt
= GPR(copy(rt_value
));
10893 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10894 std::string u
= IMMEDIATE(copy(u_value
));
10895 std::string sel
= IMMEDIATE(copy(sel_value
));
10897 return img::format("MTTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10902 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10905 * 10987654321098765432109876543210
10906 * 001000 00010001101
10911 std::string
NMD::MUH(uint64 instruction
)
10913 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10914 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10915 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10917 std::string rd
= GPR(copy(rd_value
));
10918 std::string rs
= GPR(copy(rs_value
));
10919 std::string rt
= GPR(copy(rt_value
));
10921 return img::format("MUH %s, %s, %s", rd
, rs
, rt
);
10926 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10929 * 10987654321098765432109876543210
10930 * 001000 00010001101
10935 std::string
NMD::MUHU(uint64 instruction
)
10937 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10938 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10939 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10941 std::string rd
= GPR(copy(rd_value
));
10942 std::string rs
= GPR(copy(rs_value
));
10943 std::string rt
= GPR(copy(rt_value
));
10945 return img::format("MUHU %s, %s, %s", rd
, rs
, rt
);
10950 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10953 * 10987654321098765432109876543210
10954 * 001000 00010001101
10959 std::string
NMD::MUL_32_(uint64 instruction
)
10961 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10962 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10963 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10965 std::string rd
= GPR(copy(rd_value
));
10966 std::string rs
= GPR(copy(rs_value
));
10967 std::string rt
= GPR(copy(rt_value
));
10969 return img::format("MUL %s, %s, %s", rd
, rs
, rt
);
10974 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10977 * 10987654321098765432109876543210
10978 * 001000 00010001101
10983 std::string
NMD::MUL_4X4_(uint64 instruction
)
10985 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
10986 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
10988 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
10989 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
10991 return img::format("MUL %s, %s", rs4
, rt4
);
10996 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10999 * 10987654321098765432109876543210
11000 * 001000 00010001101
11005 std::string
NMD::MUL_D(uint64 instruction
)
11007 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11008 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11009 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
11011 std::string fd
= FPR(copy(fd_value
));
11012 std::string fs
= FPR(copy(fs_value
));
11013 std::string ft
= FPR(copy(ft_value
));
11015 return img::format("MUL.D %s, %s, %s", fd
, fs
, ft
);
11020 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11023 * 10987654321098765432109876543210
11024 * 001000 00010001101
11029 std::string
NMD::MUL_PH(uint64 instruction
)
11031 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11032 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11033 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11035 std::string rd
= GPR(copy(rd_value
));
11036 std::string rs
= GPR(copy(rs_value
));
11037 std::string rt
= GPR(copy(rt_value
));
11039 return img::format("MUL.PH %s, %s, %s", rd
, rs
, rt
);
11044 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11047 * 10987654321098765432109876543210
11048 * 001000 00010001101
11053 std::string
NMD::MUL_S_PH(uint64 instruction
)
11055 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11056 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11057 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11059 std::string rd
= GPR(copy(rd_value
));
11060 std::string rs
= GPR(copy(rs_value
));
11061 std::string rt
= GPR(copy(rt_value
));
11063 return img::format("MUL_S.PH %s, %s, %s", rd
, rs
, rt
);
11068 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11071 * 10987654321098765432109876543210
11072 * 001000 00010001101
11077 std::string
NMD::MUL_S(uint64 instruction
)
11079 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11080 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11081 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
11083 std::string fd
= FPR(copy(fd_value
));
11084 std::string fs
= FPR(copy(fs_value
));
11085 std::string ft
= FPR(copy(ft_value
));
11087 return img::format("MUL.S %s, %s, %s", fd
, fs
, ft
);
11092 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11095 * 10987654321098765432109876543210
11096 * 001000 00010001101
11101 std::string
NMD::MULEQ_S_W_PHL(uint64 instruction
)
11103 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11104 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11105 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11107 std::string rd
= GPR(copy(rd_value
));
11108 std::string rs
= GPR(copy(rs_value
));
11109 std::string rt
= GPR(copy(rt_value
));
11111 return img::format("MULEQ_S.W.PHL %s, %s, %s", rd
, rs
, rt
);
11116 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11119 * 10987654321098765432109876543210
11120 * 001000 00010001101
11125 std::string
NMD::MULEQ_S_W_PHR(uint64 instruction
)
11127 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11128 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11129 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11131 std::string rd
= GPR(copy(rd_value
));
11132 std::string rs
= GPR(copy(rs_value
));
11133 std::string rt
= GPR(copy(rt_value
));
11135 return img::format("MULEQ_S.W.PHR %s, %s, %s", rd
, rs
, rt
);
11140 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11143 * 10987654321098765432109876543210
11144 * 001000 00010001101
11149 std::string
NMD::MULEU_S_PH_QBL(uint64 instruction
)
11151 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11152 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11153 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11155 std::string rd
= GPR(copy(rd_value
));
11156 std::string rs
= GPR(copy(rs_value
));
11157 std::string rt
= GPR(copy(rt_value
));
11159 return img::format("MULEU_S.PH.QBL %s, %s, %s", rd
, rs
, rt
);
11164 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11167 * 10987654321098765432109876543210
11168 * 001000 00010001101
11173 std::string
NMD::MULEU_S_PH_QBR(uint64 instruction
)
11175 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11176 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11177 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11179 std::string rd
= GPR(copy(rd_value
));
11180 std::string rs
= GPR(copy(rs_value
));
11181 std::string rt
= GPR(copy(rt_value
));
11183 return img::format("MULEU_S.PH.QBR %s, %s, %s", rd
, rs
, rt
);
11188 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11191 * 10987654321098765432109876543210
11192 * 001000 00010001101
11197 std::string
NMD::MULQ_RS_PH(uint64 instruction
)
11199 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11200 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11201 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11203 std::string rd
= GPR(copy(rd_value
));
11204 std::string rs
= GPR(copy(rs_value
));
11205 std::string rt
= GPR(copy(rt_value
));
11207 return img::format("MULQ_RS.PH %s, %s, %s", rd
, rs
, rt
);
11212 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11215 * 10987654321098765432109876543210
11216 * 001000 00010001101
11221 std::string
NMD::MULQ_RS_W(uint64 instruction
)
11223 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11224 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11225 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11227 std::string rd
= GPR(copy(rd_value
));
11228 std::string rs
= GPR(copy(rs_value
));
11229 std::string rt
= GPR(copy(rt_value
));
11231 return img::format("MULQ_RS.W %s, %s, %s", rd
, rs
, rt
);
11236 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11239 * 10987654321098765432109876543210
11240 * 001000 00010001101
11245 std::string
NMD::MULQ_S_PH(uint64 instruction
)
11247 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11248 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11249 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11251 std::string rd
= GPR(copy(rd_value
));
11252 std::string rs
= GPR(copy(rs_value
));
11253 std::string rt
= GPR(copy(rt_value
));
11255 return img::format("MULQ_S.PH %s, %s, %s", rd
, rs
, rt
);
11260 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11263 * 10987654321098765432109876543210
11264 * 001000 00010001101
11269 std::string
NMD::MULQ_S_W(uint64 instruction
)
11271 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11272 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11273 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11275 std::string rd
= GPR(copy(rd_value
));
11276 std::string rs
= GPR(copy(rs_value
));
11277 std::string rt
= GPR(copy(rt_value
));
11279 return img::format("MULQ_S.W %s, %s, %s", rd
, rs
, rt
);
11284 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11287 * 10987654321098765432109876543210
11288 * 001000 00010001101
11293 std::string
NMD::MULSA_W_PH(uint64 instruction
)
11295 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11296 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11297 uint64 ac_value
= extract_ac_13_12(instruction
);
11299 std::string ac
= AC(copy(ac_value
));
11300 std::string rs
= GPR(copy(rs_value
));
11301 std::string rt
= GPR(copy(rt_value
));
11303 return img::format("MULSA.W.PH %s, %s, %s", ac
, rs
, rt
);
11308 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11311 * 10987654321098765432109876543210
11312 * 001000 00010001101
11317 std::string
NMD::MULSAQ_S_W_PH(uint64 instruction
)
11319 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11320 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11321 uint64 ac_value
= extract_ac_13_12(instruction
);
11323 std::string ac
= AC(copy(ac_value
));
11324 std::string rs
= GPR(copy(rs_value
));
11325 std::string rt
= GPR(copy(rt_value
));
11327 return img::format("MULSAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
11332 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11335 * 10987654321098765432109876543210
11336 * 001000 00010001101
11341 std::string
NMD::MULT_DSP_(uint64 instruction
)
11343 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11344 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11345 uint64 ac_value
= extract_ac_13_12(instruction
);
11347 std::string ac
= AC(copy(ac_value
));
11348 std::string rs
= GPR(copy(rs_value
));
11349 std::string rt
= GPR(copy(rt_value
));
11351 return img::format("MULT %s, %s, %s", ac
, rs
, rt
);
11356 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11359 * 10987654321098765432109876543210
11360 * 001000 00010001101
11365 std::string
NMD::MULTU_DSP_(uint64 instruction
)
11367 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11368 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11369 uint64 ac_value
= extract_ac_13_12(instruction
);
11371 std::string ac
= AC(copy(ac_value
));
11372 std::string rs
= GPR(copy(rs_value
));
11373 std::string rt
= GPR(copy(rt_value
));
11375 return img::format("MULTU %s, %s, %s", ac
, rs
, rt
);
11380 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11383 * 10987654321098765432109876543210
11384 * 001000 00010001101
11389 std::string
NMD::MULU(uint64 instruction
)
11391 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11392 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11393 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11395 std::string rd
= GPR(copy(rd_value
));
11396 std::string rs
= GPR(copy(rs_value
));
11397 std::string rt
= GPR(copy(rt_value
));
11399 return img::format("MULU %s, %s, %s", rd
, rs
, rt
);
11404 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11407 * 10987654321098765432109876543210
11408 * 001000 00010001101
11413 std::string
NMD::NEG_D(uint64 instruction
)
11415 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11416 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11418 std::string ft
= FPR(copy(ft_value
));
11419 std::string fs
= FPR(copy(fs_value
));
11421 return img::format("NEG.D %s, %s", ft
, fs
);
11426 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11429 * 10987654321098765432109876543210
11430 * 001000 00010001101
11435 std::string
NMD::NEG_S(uint64 instruction
)
11437 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11438 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11440 std::string ft
= FPR(copy(ft_value
));
11441 std::string fs
= FPR(copy(fs_value
));
11443 return img::format("NEG.S %s, %s", ft
, fs
);
11448 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11451 * 10987654321098765432109876543210
11452 * 001000 00010001101
11457 std::string
NMD::NOP_16_(uint64 instruction
)
11466 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11469 * 10987654321098765432109876543210
11470 * 001000 00010001101
11475 std::string
NMD::NOP_32_(uint64 instruction
)
11484 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11487 * 10987654321098765432109876543210
11488 * 001000 00010001101
11493 std::string
NMD::NOR(uint64 instruction
)
11495 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11496 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11497 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11499 std::string rd
= GPR(copy(rd_value
));
11500 std::string rs
= GPR(copy(rs_value
));
11501 std::string rt
= GPR(copy(rt_value
));
11503 return img::format("NOR %s, %s, %s", rd
, rs
, rt
);
11508 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11511 * 10987654321098765432109876543210
11512 * 001000 00010001101
11517 std::string
NMD::NOT_16_(uint64 instruction
)
11519 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11520 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11522 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
11523 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
11525 return img::format("NOT %s, %s", rt3
, rs3
);
11530 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11533 * 10987654321098765432109876543210
11534 * 001000 00010001101
11539 std::string
NMD::OR_16_(uint64 instruction
)
11541 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11542 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11544 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
11545 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
11547 return img::format("OR %s, %s", rs3
, rt3
);
11552 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11555 * 10987654321098765432109876543210
11556 * 001000 00010001101
11561 std::string
NMD::OR_32_(uint64 instruction
)
11563 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11565 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11567 std::string rd
= GPR(copy(rd_value
));
11568 std::string rs
= GPR(copy(rs_value
));
11569 std::string rt
= GPR(copy(rt_value
));
11571 return img::format("OR %s, %s, %s", rd
, rs
, rt
);
11576 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11579 * 10987654321098765432109876543210
11580 * 001000 00010001101
11585 std::string
NMD::ORI(uint64 instruction
)
11587 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11589 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
11591 std::string rt
= GPR(copy(rt_value
));
11592 std::string rs
= GPR(copy(rs_value
));
11593 std::string u
= IMMEDIATE(copy(u_value
));
11595 return img::format("ORI %s, %s, %s", rt
, rs
, u
);
11600 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11603 * 10987654321098765432109876543210
11604 * 001000 00010001101
11609 std::string
NMD::PACKRL_PH(uint64 instruction
)
11611 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11612 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11613 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11615 std::string rd
= GPR(copy(rd_value
));
11616 std::string rs
= GPR(copy(rs_value
));
11617 std::string rt
= GPR(copy(rt_value
));
11619 return img::format("PACKRL.PH %s, %s, %s", rd
, rs
, rt
);
11624 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11627 * 10987654321098765432109876543210
11628 * 001000 00010001101
11633 std::string
NMD::PAUSE(uint64 instruction
)
11642 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11645 * 10987654321098765432109876543210
11646 * 001000 00010001101
11651 std::string
NMD::PICK_PH(uint64 instruction
)
11653 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11654 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11655 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11657 std::string rd
= GPR(copy(rd_value
));
11658 std::string rs
= GPR(copy(rs_value
));
11659 std::string rt
= GPR(copy(rt_value
));
11661 return img::format("PICK.PH %s, %s, %s", rd
, rs
, rt
);
11666 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11669 * 10987654321098765432109876543210
11670 * 001000 00010001101
11675 std::string
NMD::PICK_QB(uint64 instruction
)
11677 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11678 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11679 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11681 std::string rd
= GPR(copy(rd_value
));
11682 std::string rs
= GPR(copy(rs_value
));
11683 std::string rt
= GPR(copy(rt_value
));
11685 return img::format("PICK.QB %s, %s, %s", rd
, rs
, rt
);
11690 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11693 * 10987654321098765432109876543210
11694 * 001000 00010001101
11699 std::string
NMD::PRECEQ_W_PHL(uint64 instruction
)
11701 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11702 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11704 std::string rt
= GPR(copy(rt_value
));
11705 std::string rs
= GPR(copy(rs_value
));
11707 return img::format("PRECEQ.W.PHL %s, %s", rt
, rs
);
11712 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11715 * 10987654321098765432109876543210
11716 * 001000 00010001101
11721 std::string
NMD::PRECEQ_W_PHR(uint64 instruction
)
11723 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11724 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11726 std::string rt
= GPR(copy(rt_value
));
11727 std::string rs
= GPR(copy(rs_value
));
11729 return img::format("PRECEQ.W.PHR %s, %s", rt
, rs
);
11734 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11737 * 10987654321098765432109876543210
11738 * 001000 00010001101
11743 std::string
NMD::PRECEQU_PH_QBLA(uint64 instruction
)
11745 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11746 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11748 std::string rt
= GPR(copy(rt_value
));
11749 std::string rs
= GPR(copy(rs_value
));
11751 return img::format("PRECEQU.PH.QBLA %s, %s", rt
, rs
);
11756 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11759 * 10987654321098765432109876543210
11760 * 001000 00010001101
11765 std::string
NMD::PRECEQU_PH_QBL(uint64 instruction
)
11767 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11768 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11770 std::string rt
= GPR(copy(rt_value
));
11771 std::string rs
= GPR(copy(rs_value
));
11773 return img::format("PRECEQU.PH.QBL %s, %s", rt
, rs
);
11778 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11781 * 10987654321098765432109876543210
11782 * 001000 00010001101
11787 std::string
NMD::PRECEQU_PH_QBRA(uint64 instruction
)
11789 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11790 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11792 std::string rt
= GPR(copy(rt_value
));
11793 std::string rs
= GPR(copy(rs_value
));
11795 return img::format("PRECEQU.PH.QBRA %s, %s", rt
, rs
);
11800 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11803 * 10987654321098765432109876543210
11804 * 001000 00010001101
11809 std::string
NMD::PRECEQU_PH_QBR(uint64 instruction
)
11811 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11812 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11814 std::string rt
= GPR(copy(rt_value
));
11815 std::string rs
= GPR(copy(rs_value
));
11817 return img::format("PRECEQU.PH.QBR %s, %s", rt
, rs
);
11822 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11825 * 10987654321098765432109876543210
11826 * 001000 00010001101
11831 std::string
NMD::PRECEU_PH_QBLA(uint64 instruction
)
11833 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11834 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11836 std::string rt
= GPR(copy(rt_value
));
11837 std::string rs
= GPR(copy(rs_value
));
11839 return img::format("PRECEU.PH.QBLA %s, %s", rt
, rs
);
11844 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11847 * 10987654321098765432109876543210
11848 * 001000 00010001101
11853 std::string
NMD::PRECEU_PH_QBL(uint64 instruction
)
11855 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11856 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11858 std::string rt
= GPR(copy(rt_value
));
11859 std::string rs
= GPR(copy(rs_value
));
11861 return img::format("PRECEU.PH.QBL %s, %s", rt
, rs
);
11866 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11869 * 10987654321098765432109876543210
11870 * 001000 00010001101
11875 std::string
NMD::PRECEU_PH_QBRA(uint64 instruction
)
11877 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11878 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11880 std::string rt
= GPR(copy(rt_value
));
11881 std::string rs
= GPR(copy(rs_value
));
11883 return img::format("PRECEU.PH.QBRA %s, %s", rt
, rs
);
11888 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11891 * 10987654321098765432109876543210
11892 * 001000 00010001101
11897 std::string
NMD::PRECEU_PH_QBR(uint64 instruction
)
11899 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11900 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11902 std::string rt
= GPR(copy(rt_value
));
11903 std::string rs
= GPR(copy(rs_value
));
11905 return img::format("PRECEU.PH.QBR %s, %s", rt
, rs
);
11910 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11913 * 10987654321098765432109876543210
11914 * 001000 00010001101
11919 std::string
NMD::PRECR_QB_PH(uint64 instruction
)
11921 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11922 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11923 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11925 std::string rd
= GPR(copy(rd_value
));
11926 std::string rs
= GPR(copy(rs_value
));
11927 std::string rt
= GPR(copy(rt_value
));
11929 return img::format("PRECR.QB.PH %s, %s, %s", rd
, rs
, rt
);
11937 * 10987654321098765432109876543210
11938 * 001000 x1110000101
11943 std::string
NMD::PRECR_SRA_PH_W(uint64 instruction
)
11945 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11946 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11947 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
11949 std::string rt
= GPR(copy(rt_value
));
11950 std::string rs
= GPR(copy(rs_value
));
11951 std::string sa
= IMMEDIATE(copy(sa_value
));
11953 return img::format("PRECR_SRA.PH.W %s, %s, %s", rt
, rs
, sa
);
11961 * 10987654321098765432109876543210
11962 * 001000 x1110000101
11967 std::string
NMD::PRECR_SRA_R_PH_W(uint64 instruction
)
11969 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11970 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11971 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
11973 std::string rt
= GPR(copy(rt_value
));
11974 std::string rs
= GPR(copy(rs_value
));
11975 std::string sa
= IMMEDIATE(copy(sa_value
));
11977 return img::format("PRECR_SRA_R.PH.W %s, %s, %s", rt
, rs
, sa
);
11985 * 10987654321098765432109876543210
11986 * 001000 x1110000101
11991 std::string
NMD::PRECRQ_PH_W(uint64 instruction
)
11993 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11994 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11995 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11997 std::string rd
= GPR(copy(rd_value
));
11998 std::string rs
= GPR(copy(rs_value
));
11999 std::string rt
= GPR(copy(rt_value
));
12001 return img::format("PRECRQ.PH.W %s, %s, %s", rd
, rs
, rt
);
12009 * 10987654321098765432109876543210
12010 * 001000 x1110000101
12015 std::string
NMD::PRECRQ_QB_PH(uint64 instruction
)
12017 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12018 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12019 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12021 std::string rd
= GPR(copy(rd_value
));
12022 std::string rs
= GPR(copy(rs_value
));
12023 std::string rt
= GPR(copy(rt_value
));
12025 return img::format("PRECRQ.QB.PH %s, %s, %s", rd
, rs
, rt
);
12033 * 10987654321098765432109876543210
12034 * 001000 x1110000101
12039 std::string
NMD::PRECRQ_RS_PH_W(uint64 instruction
)
12041 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12042 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12043 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12045 std::string rd
= GPR(copy(rd_value
));
12046 std::string rs
= GPR(copy(rs_value
));
12047 std::string rt
= GPR(copy(rt_value
));
12049 return img::format("PRECRQ_RS.PH.W %s, %s, %s", rd
, rs
, rt
);
12057 * 10987654321098765432109876543210
12058 * 001000 x1110000101
12063 std::string
NMD::PRECRQU_S_QB_PH(uint64 instruction
)
12065 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12066 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12067 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12069 std::string rd
= GPR(copy(rd_value
));
12070 std::string rs
= GPR(copy(rs_value
));
12071 std::string rt
= GPR(copy(rt_value
));
12073 return img::format("PRECRQU_S.QB.PH %s, %s, %s", rd
, rs
, rt
);
12081 * 10987654321098765432109876543210
12082 * 001000 x1110000101
12087 std::string
NMD::PREF_S9_(uint64 instruction
)
12089 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12090 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12091 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12093 std::string hint
= IMMEDIATE(copy(hint_value
));
12094 std::string s
= IMMEDIATE(copy(s_value
));
12095 std::string rs
= GPR(copy(rs_value
));
12097 return img::format("PREF %s, %s(%s)", hint
, s
, rs
);
12105 * 10987654321098765432109876543210
12106 * 001000 x1110000101
12111 std::string
NMD::PREF_U12_(uint64 instruction
)
12113 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12114 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12115 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
12117 std::string hint
= IMMEDIATE(copy(hint_value
));
12118 std::string u
= IMMEDIATE(copy(u_value
));
12119 std::string rs
= GPR(copy(rs_value
));
12121 return img::format("PREF %s, %s(%s)", hint
, u
, rs
);
12129 * 10987654321098765432109876543210
12130 * 001000 x1110000101
12135 std::string
NMD::PREFE(uint64 instruction
)
12137 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12138 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12139 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12141 std::string hint
= IMMEDIATE(copy(hint_value
));
12142 std::string s
= IMMEDIATE(copy(s_value
));
12143 std::string rs
= GPR(copy(rs_value
));
12145 return img::format("PREFE %s, %s(%s)", hint
, s
, rs
);
12153 * 10987654321098765432109876543210
12154 * 001000 x1110000101
12159 std::string
NMD::PREPEND(uint64 instruction
)
12161 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12162 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12163 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12165 std::string rt
= GPR(copy(rt_value
));
12166 std::string rs
= GPR(copy(rs_value
));
12167 std::string sa
= IMMEDIATE(copy(sa_value
));
12169 return img::format("PREPEND %s, %s, %s", rt
, rs
, sa
);
12177 * 10987654321098765432109876543210
12178 * 001000 x1110000101
12183 std::string
NMD::RADDU_W_QB(uint64 instruction
)
12185 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12186 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12188 std::string rt
= GPR(copy(rt_value
));
12189 std::string rs
= GPR(copy(rs_value
));
12191 return img::format("RADDU.W.QB %s, %s", rt
, rs
);
12199 * 10987654321098765432109876543210
12200 * 001000 x1110000101
12205 std::string
NMD::RDDSP(uint64 instruction
)
12207 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12208 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
12210 std::string rt
= GPR(copy(rt_value
));
12211 std::string mask
= IMMEDIATE(copy(mask_value
));
12213 return img::format("RDDSP %s, %s", rt
, mask
);
12221 * 10987654321098765432109876543210
12222 * 001000 x1110000101
12227 std::string
NMD::RDHWR(uint64 instruction
)
12229 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12230 uint64 hs_value
= extract_hs_20_19_18_17_16(instruction
);
12231 uint64 sel_value
= extract_sel_13_12_11(instruction
);
12233 std::string rt
= GPR(copy(rt_value
));
12234 std::string hs
= CPR(copy(hs_value
));
12235 std::string sel
= IMMEDIATE(copy(sel_value
));
12237 return img::format("RDHWR %s, %s, %s", rt
, hs
, sel
);
12245 * 10987654321098765432109876543210
12246 * 001000 x1110000101
12251 std::string
NMD::RDPGPR(uint64 instruction
)
12253 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12254 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12256 std::string rt
= GPR(copy(rt_value
));
12257 std::string rs
= GPR(copy(rs_value
));
12259 return img::format("RDPGPR %s, %s", rt
, rs
);
12267 * 10987654321098765432109876543210
12268 * 001000 x1110000101
12273 std::string
NMD::RECIP_D(uint64 instruction
)
12275 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12276 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12278 std::string ft
= FPR(copy(ft_value
));
12279 std::string fs
= FPR(copy(fs_value
));
12281 return img::format("RECIP.D %s, %s", ft
, fs
);
12289 * 10987654321098765432109876543210
12290 * 001000 x1110000101
12295 std::string
NMD::RECIP_S(uint64 instruction
)
12297 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12298 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12300 std::string ft
= FPR(copy(ft_value
));
12301 std::string fs
= FPR(copy(fs_value
));
12303 return img::format("RECIP.S %s, %s", ft
, fs
);
12311 * 10987654321098765432109876543210
12312 * 001000 x1110000101
12317 std::string
NMD::REPL_PH(uint64 instruction
)
12319 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12320 int64 s_value
= extract_s__se9_20_19_18_17_16_15_14_13_12_11(instruction
);
12322 std::string rt
= GPR(copy(rt_value
));
12323 std::string s
= IMMEDIATE(copy(s_value
));
12325 return img::format("REPL.PH %s, %s", rt
, s
);
12333 * 10987654321098765432109876543210
12334 * 001000 x1110000101
12339 std::string
NMD::REPL_QB(uint64 instruction
)
12341 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12342 uint64 u_value
= extract_u_20_19_18_17_16_15_14_13(instruction
);
12344 std::string rt
= GPR(copy(rt_value
));
12345 std::string u
= IMMEDIATE(copy(u_value
));
12347 return img::format("REPL.QB %s, %s", rt
, u
);
12355 * 10987654321098765432109876543210
12356 * 001000 x1110000101
12361 std::string
NMD::REPLV_PH(uint64 instruction
)
12363 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12364 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12366 std::string rt
= GPR(copy(rt_value
));
12367 std::string rs
= GPR(copy(rs_value
));
12369 return img::format("REPLV.PH %s, %s", rt
, rs
);
12377 * 10987654321098765432109876543210
12378 * 001000 x1110000101
12383 std::string
NMD::REPLV_QB(uint64 instruction
)
12385 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12386 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12388 std::string rt
= GPR(copy(rt_value
));
12389 std::string rs
= GPR(copy(rs_value
));
12391 return img::format("REPLV.QB %s, %s", rt
, rs
);
12399 * 10987654321098765432109876543210
12400 * 001000 x1110000101
12405 std::string
NMD::RESTORE_32_(uint64 instruction
)
12407 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12408 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12409 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12410 uint64 gp_value
= extract_gp_2(instruction
);
12412 std::string u
= IMMEDIATE(copy(u_value
));
12413 return img::format("RESTORE %s%s", u
,
12414 save_restore_list(rt_value
, count_value
, gp_value
));
12422 * 10987654321098765432109876543210
12423 * 001000 x1110000101
12428 std::string
NMD::RESTORE_JRC_16_(uint64 instruction
)
12430 uint64 rt1_value
= extract_rtl_11(instruction
);
12431 uint64 u_value
= extract_u_7_6_5_4__s4(instruction
);
12432 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12434 std::string u
= IMMEDIATE(copy(u_value
));
12435 return img::format("RESTORE.JRC %s%s", u
,
12436 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12444 * 10987654321098765432109876543210
12445 * 001000 x1110000101
12450 std::string
NMD::RESTORE_JRC_32_(uint64 instruction
)
12452 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12453 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12454 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12455 uint64 gp_value
= extract_gp_2(instruction
);
12457 std::string u
= IMMEDIATE(copy(u_value
));
12458 return img::format("RESTORE.JRC %s%s", u
,
12459 save_restore_list(rt_value
, count_value
, gp_value
));
12467 * 10987654321098765432109876543210
12468 * 001000 x1110000101
12473 std::string
NMD::RESTOREF(uint64 instruction
)
12475 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12476 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12478 std::string u
= IMMEDIATE(copy(u_value
));
12479 std::string count
= IMMEDIATE(copy(count_value
));
12481 return img::format("RESTOREF %s, %s", u
, count
);
12489 * 10987654321098765432109876543210
12490 * 001000 x1110000101
12495 std::string
NMD::RINT_D(uint64 instruction
)
12497 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12498 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12500 std::string ft
= FPR(copy(ft_value
));
12501 std::string fs
= FPR(copy(fs_value
));
12503 return img::format("RINT.D %s, %s", ft
, fs
);
12511 * 10987654321098765432109876543210
12512 * 001000 x1110000101
12517 std::string
NMD::RINT_S(uint64 instruction
)
12519 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12520 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12522 std::string ft
= FPR(copy(ft_value
));
12523 std::string fs
= FPR(copy(fs_value
));
12525 return img::format("RINT.S %s, %s", ft
, fs
);
12533 * 10987654321098765432109876543210
12534 * 001000 x1110000101
12539 std::string
NMD::ROTR(uint64 instruction
)
12541 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12542 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12543 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12545 std::string rt
= GPR(copy(rt_value
));
12546 std::string rs
= GPR(copy(rs_value
));
12547 std::string shift
= IMMEDIATE(copy(shift_value
));
12549 return img::format("ROTR %s, %s, %s", rt
, rs
, shift
);
12557 * 10987654321098765432109876543210
12558 * 001000 x1110000101
12563 std::string
NMD::ROTRV(uint64 instruction
)
12565 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12566 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12567 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12569 std::string rd
= GPR(copy(rd_value
));
12570 std::string rs
= GPR(copy(rs_value
));
12571 std::string rt
= GPR(copy(rt_value
));
12573 return img::format("ROTRV %s, %s, %s", rd
, rs
, rt
);
12581 * 10987654321098765432109876543210
12582 * 001000 x1110000101
12587 std::string
NMD::ROTX(uint64 instruction
)
12589 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12590 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12591 uint64 shiftx_value
= extract_shiftx_10_9_8_7__s1(instruction
);
12592 uint64 stripe_value
= extract_stripe_6(instruction
);
12593 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12595 std::string rt
= GPR(copy(rt_value
));
12596 std::string rs
= GPR(copy(rs_value
));
12597 std::string shift
= IMMEDIATE(copy(shift_value
));
12598 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
12599 std::string stripe
= IMMEDIATE(copy(stripe_value
));
12601 return img::format("ROTX %s, %s, %s, %s, %s",
12602 rt
, rs
, shift
, shiftx
, stripe
);
12610 * 10987654321098765432109876543210
12611 * 001000 x1110000101
12616 std::string
NMD::ROUND_L_D(uint64 instruction
)
12618 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12619 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12621 std::string ft
= FPR(copy(ft_value
));
12622 std::string fs
= FPR(copy(fs_value
));
12624 return img::format("ROUND.L.D %s, %s", ft
, fs
);
12632 * 10987654321098765432109876543210
12633 * 001000 x1110000101
12638 std::string
NMD::ROUND_L_S(uint64 instruction
)
12640 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12641 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12643 std::string ft
= FPR(copy(ft_value
));
12644 std::string fs
= FPR(copy(fs_value
));
12646 return img::format("ROUND.L.S %s, %s", ft
, fs
);
12654 * 10987654321098765432109876543210
12655 * 001000 x1110000101
12660 std::string
NMD::ROUND_W_D(uint64 instruction
)
12662 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12663 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12665 std::string ft
= FPR(copy(ft_value
));
12666 std::string fs
= FPR(copy(fs_value
));
12668 return img::format("ROUND.W.D %s, %s", ft
, fs
);
12676 * 10987654321098765432109876543210
12677 * 001000 x1110000101
12682 std::string
NMD::ROUND_W_S(uint64 instruction
)
12684 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12685 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12687 std::string ft
= FPR(copy(ft_value
));
12688 std::string fs
= FPR(copy(fs_value
));
12690 return img::format("ROUND.W.S %s, %s", ft
, fs
);
12698 * 10987654321098765432109876543210
12699 * 001000 x1110000101
12704 std::string
NMD::RSQRT_D(uint64 instruction
)
12706 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12707 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12709 std::string ft
= FPR(copy(ft_value
));
12710 std::string fs
= FPR(copy(fs_value
));
12712 return img::format("RSQRT.D %s, %s", ft
, fs
);
12720 * 10987654321098765432109876543210
12721 * 001000 x1110000101
12726 std::string
NMD::RSQRT_S(uint64 instruction
)
12728 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12729 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12731 std::string ft
= FPR(copy(ft_value
));
12732 std::string fs
= FPR(copy(fs_value
));
12734 return img::format("RSQRT.S %s, %s", ft
, fs
);
12742 * 10987654321098765432109876543210
12743 * 001000 01001001101
12748 std::string
NMD::SAVE_16_(uint64 instruction
)
12750 uint64 rt1_value
= extract_rtl_11(instruction
);
12751 uint64 u_value
= extract_u_7_6_5_4__s4(instruction
);
12752 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12754 std::string u
= IMMEDIATE(copy(u_value
));
12755 return img::format("SAVE %s%s", u
,
12756 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12764 * 10987654321098765432109876543210
12765 * 001000 01001001101
12770 std::string
NMD::SAVE_32_(uint64 instruction
)
12772 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12773 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12774 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12775 uint64 gp_value
= extract_gp_2(instruction
);
12777 std::string u
= IMMEDIATE(copy(u_value
));
12778 return img::format("SAVE %s%s", u
,
12779 save_restore_list(rt_value
, count_value
, gp_value
));
12787 * 10987654321098765432109876543210
12788 * 001000 01001001101
12793 std::string
NMD::SAVEF(uint64 instruction
)
12795 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12796 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12798 std::string u
= IMMEDIATE(copy(u_value
));
12799 std::string count
= IMMEDIATE(copy(count_value
));
12801 return img::format("SAVEF %s, %s", u
, count
);
12809 * 10987654321098765432109876543210
12810 * 001000 01001001101
12815 std::string
NMD::SB_16_(uint64 instruction
)
12817 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
12818 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
12819 uint64 u_value
= extract_u_1_0(instruction
);
12821 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
12822 std::string u
= IMMEDIATE(copy(u_value
));
12823 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
12825 return img::format("SB %s, %s(%s)", rtz3
, u
, rs3
);
12833 * 10987654321098765432109876543210
12834 * 001000 01001001101
12839 std::string
NMD::SB_GP_(uint64 instruction
)
12841 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12842 uint64 u_value
= extract_u_17_to_0(instruction
);
12844 std::string rt
= GPR(copy(rt_value
));
12845 std::string u
= IMMEDIATE(copy(u_value
));
12847 return img::format("SB %s, %s($%d)", rt
, u
, 28);
12855 * 10987654321098765432109876543210
12856 * 001000 01001001101
12861 std::string
NMD::SB_S9_(uint64 instruction
)
12863 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12864 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12865 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12867 std::string rt
= GPR(copy(rt_value
));
12868 std::string s
= IMMEDIATE(copy(s_value
));
12869 std::string rs
= GPR(copy(rs_value
));
12871 return img::format("SB %s, %s(%s)", rt
, s
, rs
);
12879 * 10987654321098765432109876543210
12880 * 001000 01001001101
12885 std::string
NMD::SB_U12_(uint64 instruction
)
12887 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12888 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12889 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
12891 std::string rt
= GPR(copy(rt_value
));
12892 std::string u
= IMMEDIATE(copy(u_value
));
12893 std::string rs
= GPR(copy(rs_value
));
12895 return img::format("SB %s, %s(%s)", rt
, u
, rs
);
12903 * 10987654321098765432109876543210
12904 * 001000 01001001101
12909 std::string
NMD::SBE(uint64 instruction
)
12911 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12912 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12913 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12915 std::string rt
= GPR(copy(rt_value
));
12916 std::string s
= IMMEDIATE(copy(s_value
));
12917 std::string rs
= GPR(copy(rs_value
));
12919 return img::format("SBE %s, %s(%s)", rt
, s
, rs
);
12927 * 10987654321098765432109876543210
12928 * 001000 01001001101
12933 std::string
NMD::SBX(uint64 instruction
)
12935 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12936 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12937 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12939 std::string rd
= GPR(copy(rd_value
));
12940 std::string rs
= GPR(copy(rs_value
));
12941 std::string rt
= GPR(copy(rt_value
));
12943 return img::format("SBX %s, %s(%s)", rd
, rs
, rt
);
12951 * 10987654321098765432109876543210
12952 * 001000 01001001101
12957 std::string
NMD::SC(uint64 instruction
)
12959 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12960 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12961 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
12963 std::string rt
= GPR(copy(rt_value
));
12964 std::string s
= IMMEDIATE(copy(s_value
));
12965 std::string rs
= GPR(copy(rs_value
));
12967 return img::format("SC %s, %s(%s)", rt
, s
, rs
);
12975 * 10987654321098765432109876543210
12976 * 001000 01001001101
12981 std::string
NMD::SCD(uint64 instruction
)
12983 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12984 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12985 int64 s_value
= extract_s__se8_15_7_6_5_4_3_s3(instruction
);
12987 std::string rt
= GPR(copy(rt_value
));
12988 std::string s
= IMMEDIATE(copy(s_value
));
12989 std::string rs
= GPR(copy(rs_value
));
12991 return img::format("SCD %s, %s(%s)", rt
, s
, rs
);
12999 * 10987654321098765432109876543210
13000 * 001000 01001001101
13005 std::string
NMD::SCDP(uint64 instruction
)
13007 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13008 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13009 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13011 std::string rt
= GPR(copy(rt_value
));
13012 std::string ru
= GPR(copy(ru_value
));
13013 std::string rs
= GPR(copy(rs_value
));
13015 return img::format("SCDP %s, %s, (%s)", rt
, ru
, rs
);
13023 * 10987654321098765432109876543210
13024 * 001000 01001001101
13029 std::string
NMD::SCE(uint64 instruction
)
13031 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13032 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13033 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
13035 std::string rt
= GPR(copy(rt_value
));
13036 std::string s
= IMMEDIATE(copy(s_value
));
13037 std::string rs
= GPR(copy(rs_value
));
13039 return img::format("SCE %s, %s(%s)", rt
, s
, rs
);
13047 * 10987654321098765432109876543210
13048 * 001000 01001001101
13053 std::string
NMD::SCWP(uint64 instruction
)
13055 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13056 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13057 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13059 std::string rt
= GPR(copy(rt_value
));
13060 std::string ru
= GPR(copy(ru_value
));
13061 std::string rs
= GPR(copy(rs_value
));
13063 return img::format("SCWP %s, %s, (%s)", rt
, ru
, rs
);
13071 * 10987654321098765432109876543210
13072 * 001000 01001001101
13077 std::string
NMD::SCWPE(uint64 instruction
)
13079 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13080 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13081 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13083 std::string rt
= GPR(copy(rt_value
));
13084 std::string ru
= GPR(copy(ru_value
));
13085 std::string rs
= GPR(copy(rs_value
));
13087 return img::format("SCWPE %s, %s, (%s)", rt
, ru
, rs
);
13095 * 10987654321098765432109876543210
13096 * 001000 01001001101
13101 std::string
NMD::SD_GP_(uint64 instruction
)
13103 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13104 uint64 u_value
= extract_u_20_to_3__s3(instruction
);
13106 std::string rt
= GPR(copy(rt_value
));
13107 std::string u
= IMMEDIATE(copy(u_value
));
13109 return img::format("SD %s, %s($%d)", rt
, u
, 28);
13117 * 10987654321098765432109876543210
13118 * 001000 01001001101
13123 std::string
NMD::SD_S9_(uint64 instruction
)
13125 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13126 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13127 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13129 std::string rt
= GPR(copy(rt_value
));
13130 std::string s
= IMMEDIATE(copy(s_value
));
13131 std::string rs
= GPR(copy(rs_value
));
13133 return img::format("SD %s, %s(%s)", rt
, s
, rs
);
13141 * 10987654321098765432109876543210
13142 * 001000 01001001101
13147 std::string
NMD::SD_U12_(uint64 instruction
)
13149 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13150 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13151 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13153 std::string rt
= GPR(copy(rt_value
));
13154 std::string u
= IMMEDIATE(copy(u_value
));
13155 std::string rs
= GPR(copy(rs_value
));
13157 return img::format("SD %s, %s(%s)", rt
, u
, rs
);
13165 * 10987654321098765432109876543210
13166 * 001000 01001001101
13171 std::string
NMD::SDBBP_16_(uint64 instruction
)
13173 uint64 code_value
= extract_code_2_1_0(instruction
);
13175 std::string code
= IMMEDIATE(copy(code_value
));
13177 return img::format("SDBBP %s", code
);
13185 * 10987654321098765432109876543210
13186 * 001000 01001001101
13191 std::string
NMD::SDBBP_32_(uint64 instruction
)
13193 uint64 code_value
= extract_code_18_to_0(instruction
);
13195 std::string code
= IMMEDIATE(copy(code_value
));
13197 return img::format("SDBBP %s", code
);
13205 * 10987654321098765432109876543210
13206 * 001000 01001001101
13211 std::string
NMD::SDC1_GP_(uint64 instruction
)
13213 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13214 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
13216 std::string ft
= FPR(copy(ft_value
));
13217 std::string u
= IMMEDIATE(copy(u_value
));
13219 return img::format("SDC1 %s, %s($%d)", ft
, u
, 28);
13227 * 10987654321098765432109876543210
13228 * 001000 01001001101
13233 std::string
NMD::SDC1_S9_(uint64 instruction
)
13235 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13236 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13237 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13239 std::string ft
= FPR(copy(ft_value
));
13240 std::string s
= IMMEDIATE(copy(s_value
));
13241 std::string rs
= GPR(copy(rs_value
));
13243 return img::format("SDC1 %s, %s(%s)", ft
, s
, rs
);
13251 * 10987654321098765432109876543210
13252 * 001000 01001001101
13257 std::string
NMD::SDC1_U12_(uint64 instruction
)
13259 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13260 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13261 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13263 std::string ft
= FPR(copy(ft_value
));
13264 std::string u
= IMMEDIATE(copy(u_value
));
13265 std::string rs
= GPR(copy(rs_value
));
13267 return img::format("SDC1 %s, %s(%s)", ft
, u
, rs
);
13275 * 10987654321098765432109876543210
13276 * 001000 01001001101
13281 std::string
NMD::SDC1X(uint64 instruction
)
13283 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13284 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13285 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13287 std::string ft
= FPR(copy(ft_value
));
13288 std::string rs
= GPR(copy(rs_value
));
13289 std::string rt
= GPR(copy(rt_value
));
13291 return img::format("SDC1X %s, %s(%s)", ft
, rs
, rt
);
13299 * 10987654321098765432109876543210
13300 * 001000 01001001101
13305 std::string
NMD::SDC1XS(uint64 instruction
)
13307 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13308 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13309 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13311 std::string ft
= FPR(copy(ft_value
));
13312 std::string rs
= GPR(copy(rs_value
));
13313 std::string rt
= GPR(copy(rt_value
));
13315 return img::format("SDC1XS %s, %s(%s)", ft
, rs
, rt
);
13323 * 10987654321098765432109876543210
13324 * 001000 01001001101
13329 std::string
NMD::SDC2(uint64 instruction
)
13331 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
13332 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13333 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13335 std::string cs
= CPR(copy(cs_value
));
13336 std::string s
= IMMEDIATE(copy(s_value
));
13337 std::string rs
= GPR(copy(rs_value
));
13339 return img::format("SDC2 %s, %s(%s)", cs
, s
, rs
);
13347 * 10987654321098765432109876543210
13348 * 001000 01001001101
13353 std::string
NMD::SDM(uint64 instruction
)
13355 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13356 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13357 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13358 uint64 count3_value
= extract_count3_14_13_12(instruction
);
13360 std::string rt
= GPR(copy(rt_value
));
13361 std::string s
= IMMEDIATE(copy(s_value
));
13362 std::string rs
= GPR(copy(rs_value
));
13363 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
13365 return img::format("SDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
13373 * 10987654321098765432109876543210
13374 * 001000 01001001101
13379 std::string
NMD::SDPC_48_(uint64 instruction
)
13381 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
13382 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
13384 std::string rt
= GPR(copy(rt_value
));
13385 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
13387 return img::format("SDPC %s, %s", rt
, s
);
13395 * 10987654321098765432109876543210
13396 * 001000 01001001101
13401 std::string
NMD::SDXS(uint64 instruction
)
13403 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13404 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13405 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13407 std::string rd
= GPR(copy(rd_value
));
13408 std::string rs
= GPR(copy(rs_value
));
13409 std::string rt
= GPR(copy(rt_value
));
13411 return img::format("SDXS %s, %s(%s)", rd
, rs
, rt
);
13419 * 10987654321098765432109876543210
13420 * 001000 01001001101
13425 std::string
NMD::SDX(uint64 instruction
)
13427 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13428 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13429 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13431 std::string rd
= GPR(copy(rd_value
));
13432 std::string rs
= GPR(copy(rs_value
));
13433 std::string rt
= GPR(copy(rt_value
));
13435 return img::format("SDX %s, %s(%s)", rd
, rs
, rt
);
13443 * 10987654321098765432109876543210
13444 * 001000 01001001101
13449 std::string
NMD::SEB(uint64 instruction
)
13451 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13452 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13454 std::string rt
= GPR(copy(rt_value
));
13455 std::string rs
= GPR(copy(rs_value
));
13457 return img::format("SEB %s, %s", rt
, rs
);
13465 * 10987654321098765432109876543210
13466 * 001000 01001001101
13471 std::string
NMD::SEH(uint64 instruction
)
13473 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13474 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13476 std::string rt
= GPR(copy(rt_value
));
13477 std::string rs
= GPR(copy(rs_value
));
13479 return img::format("SEH %s, %s", rt
, rs
);
13487 * 10987654321098765432109876543210
13488 * 001000 01001001101
13493 std::string
NMD::SEL_D(uint64 instruction
)
13495 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13496 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13497 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13499 std::string fd
= FPR(copy(fd_value
));
13500 std::string fs
= FPR(copy(fs_value
));
13501 std::string ft
= FPR(copy(ft_value
));
13503 return img::format("SEL.D %s, %s, %s", fd
, fs
, ft
);
13511 * 10987654321098765432109876543210
13512 * 001000 01001001101
13517 std::string
NMD::SEL_S(uint64 instruction
)
13519 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13520 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13521 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13523 std::string fd
= FPR(copy(fd_value
));
13524 std::string fs
= FPR(copy(fs_value
));
13525 std::string ft
= FPR(copy(ft_value
));
13527 return img::format("SEL.S %s, %s, %s", fd
, fs
, ft
);
13535 * 10987654321098765432109876543210
13536 * 001000 01001001101
13541 std::string
NMD::SELEQZ_D(uint64 instruction
)
13543 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13544 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13545 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13547 std::string fd
= FPR(copy(fd_value
));
13548 std::string fs
= FPR(copy(fs_value
));
13549 std::string ft
= FPR(copy(ft_value
));
13551 return img::format("SELEQZ.D %s, %s, %s", fd
, fs
, ft
);
13559 * 10987654321098765432109876543210
13560 * 001000 01001001101
13565 std::string
NMD::SELEQZ_S(uint64 instruction
)
13567 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13568 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13569 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13571 std::string fd
= FPR(copy(fd_value
));
13572 std::string fs
= FPR(copy(fs_value
));
13573 std::string ft
= FPR(copy(ft_value
));
13575 return img::format("SELEQZ.S %s, %s, %s", fd
, fs
, ft
);
13583 * 10987654321098765432109876543210
13584 * 001000 01001001101
13589 std::string
NMD::SELNEZ_D(uint64 instruction
)
13591 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13592 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13593 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13595 std::string fd
= FPR(copy(fd_value
));
13596 std::string fs
= FPR(copy(fs_value
));
13597 std::string ft
= FPR(copy(ft_value
));
13599 return img::format("SELNEZ.D %s, %s, %s", fd
, fs
, ft
);
13607 * 10987654321098765432109876543210
13608 * 001000 01001001101
13613 std::string
NMD::SELNEZ_S(uint64 instruction
)
13615 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13616 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13617 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13619 std::string fd
= FPR(copy(fd_value
));
13620 std::string fs
= FPR(copy(fs_value
));
13621 std::string ft
= FPR(copy(ft_value
));
13623 return img::format("SELNEZ.S %s, %s, %s", fd
, fs
, ft
);
13631 * 10987654321098765432109876543210
13632 * 001000 01001001101
13637 std::string
NMD::SEQI(uint64 instruction
)
13639 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13640 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13641 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13643 std::string rt
= GPR(copy(rt_value
));
13644 std::string rs
= GPR(copy(rs_value
));
13645 std::string u
= IMMEDIATE(copy(u_value
));
13647 return img::format("SEQI %s, %s, %s", rt
, rs
, u
);
13655 * 10987654321098765432109876543210
13656 * 001000 01001001101
13661 std::string
NMD::SH_16_(uint64 instruction
)
13663 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
13664 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
13665 uint64 u_value
= extract_u_2_1__s1(instruction
);
13667 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
13668 std::string u
= IMMEDIATE(copy(u_value
));
13669 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
13671 return img::format("SH %s, %s(%s)", rtz3
, u
, rs3
);
13679 * 10987654321098765432109876543210
13680 * 001000 01001001101
13685 std::string
NMD::SH_GP_(uint64 instruction
)
13687 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13688 uint64 u_value
= extract_u_17_to_1__s1(instruction
);
13690 std::string rt
= GPR(copy(rt_value
));
13691 std::string u
= IMMEDIATE(copy(u_value
));
13693 return img::format("SH %s, %s($%d)", rt
, u
, 28);
13701 * 10987654321098765432109876543210
13702 * 001000 01001001101
13707 std::string
NMD::SH_S9_(uint64 instruction
)
13709 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13710 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13711 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13713 std::string rt
= GPR(copy(rt_value
));
13714 std::string s
= IMMEDIATE(copy(s_value
));
13715 std::string rs
= GPR(copy(rs_value
));
13717 return img::format("SH %s, %s(%s)", rt
, s
, rs
);
13725 * 10987654321098765432109876543210
13726 * 001000 01001001101
13731 std::string
NMD::SH_U12_(uint64 instruction
)
13733 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13734 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13735 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13737 std::string rt
= GPR(copy(rt_value
));
13738 std::string u
= IMMEDIATE(copy(u_value
));
13739 std::string rs
= GPR(copy(rs_value
));
13741 return img::format("SH %s, %s(%s)", rt
, u
, rs
);
13749 * 10987654321098765432109876543210
13750 * 001000 01001001101
13755 std::string
NMD::SHE(uint64 instruction
)
13757 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13758 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13759 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13761 std::string rt
= GPR(copy(rt_value
));
13762 std::string s
= IMMEDIATE(copy(s_value
));
13763 std::string rs
= GPR(copy(rs_value
));
13765 return img::format("SHE %s, %s(%s)", rt
, s
, rs
);
13770 * SHILO ac, shift - Shift an Accumulator Value Leaving the Result in the Same
13774 * 10987654321098765432109876543210
13775 * 001000xxxx xxxx0000011101
13779 std::string
NMD::SHILO(uint64 instruction
)
13781 int64 shift_value
= extract_shift__se5_21_20_19_18_17_16(instruction
);
13782 uint64 ac_value
= extract_ac_13_12(instruction
);
13784 std::string shift
= IMMEDIATE(copy(shift_value
));
13785 std::string ac
= AC(copy(ac_value
));
13787 return img::format("SHILO %s, %s", ac
, shift
);
13792 * SHILOV ac, rs - Variable Shift of Accumulator Value Leaving the Result in
13793 * the Same Accumulator
13796 * 10987654321098765432109876543210
13797 * 001000xxxxx 01001001111111
13801 std::string
NMD::SHILOV(uint64 instruction
)
13803 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13804 uint64 ac_value
= extract_ac_13_12(instruction
);
13806 std::string rs
= GPR(copy(rs_value
));
13807 std::string ac
= AC(copy(ac_value
));
13809 return img::format("SHILOV %s, %s", ac
, rs
);
13814 * SHLL.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords
13817 * 10987654321098765432109876543210
13818 * 001000 001110110101
13823 std::string
NMD::SHLL_PH(uint64 instruction
)
13825 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13826 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13827 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
13829 std::string rt
= GPR(copy(rt_value
));
13830 std::string rs
= GPR(copy(rs_value
));
13831 std::string sa
= IMMEDIATE(copy(sa_value
));
13833 return img::format("SHLL.PH %s, %s, %s", rt
, rs
, sa
);
13838 * SHLL.QB rt, rs, sa - Shift Left Logical Vector Quad Bytes
13841 * 10987654321098765432109876543210
13842 * 001000 0100001111111
13847 std::string
NMD::SHLL_QB(uint64 instruction
)
13849 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13850 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13851 uint64 sa_value
= extract_sa_15_14_13(instruction
);
13853 std::string rt
= GPR(copy(rt_value
));
13854 std::string rs
= GPR(copy(rs_value
));
13855 std::string sa
= IMMEDIATE(copy(sa_value
));
13857 return img::format("SHLL.QB %s, %s, %s", rt
, rs
, sa
);
13862 * SHLL_S.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords (saturated)
13865 * 10987654321098765432109876543210
13866 * 001000 001110110101
13871 std::string
NMD::SHLL_S_PH(uint64 instruction
)
13873 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13874 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13875 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
13877 std::string rt
= GPR(copy(rt_value
));
13878 std::string rs
= GPR(copy(rs_value
));
13879 std::string sa
= IMMEDIATE(copy(sa_value
));
13881 return img::format("SHLL_S.PH %s, %s, %s", rt
, rs
, sa
);
13889 * 10987654321098765432109876543210
13890 * 001000 01001001101
13895 std::string
NMD::SHLL_S_W(uint64 instruction
)
13897 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13898 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13899 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
13901 std::string rt
= GPR(copy(rt_value
));
13902 std::string rs
= GPR(copy(rs_value
));
13903 std::string sa
= IMMEDIATE(copy(sa_value
));
13905 return img::format("SHLL_S.W %s, %s, %s", rt
, rs
, sa
);
13913 * 10987654321098765432109876543210
13914 * 001000 01001001101
13919 std::string
NMD::SHLLV_PH(uint64 instruction
)
13921 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13922 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13923 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13925 std::string rd
= GPR(copy(rd_value
));
13926 std::string rt
= GPR(copy(rt_value
));
13927 std::string rs
= GPR(copy(rs_value
));
13929 return img::format("SHLLV.PH %s, %s, %s", rd
, rt
, rs
);
13937 * 10987654321098765432109876543210
13938 * 001000 01001001101
13943 std::string
NMD::SHLLV_QB(uint64 instruction
)
13945 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13946 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13947 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13949 std::string rd
= GPR(copy(rd_value
));
13950 std::string rt
= GPR(copy(rt_value
));
13951 std::string rs
= GPR(copy(rs_value
));
13953 return img::format("SHLLV.QB %s, %s, %s", rd
, rt
, rs
);
13961 * 10987654321098765432109876543210
13962 * 001000 01001001101
13967 std::string
NMD::SHLLV_S_PH(uint64 instruction
)
13969 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13970 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13971 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13973 std::string rd
= GPR(copy(rd_value
));
13974 std::string rt
= GPR(copy(rt_value
));
13975 std::string rs
= GPR(copy(rs_value
));
13977 return img::format("SHLLV_S.PH %s, %s, %s", rd
, rt
, rs
);
13985 * 10987654321098765432109876543210
13986 * 001000 01001001101
13991 std::string
NMD::SHLLV_S_W(uint64 instruction
)
13993 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13994 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13995 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13997 std::string rd
= GPR(copy(rd_value
));
13998 std::string rt
= GPR(copy(rt_value
));
13999 std::string rs
= GPR(copy(rs_value
));
14001 return img::format("SHLLV_S.W %s, %s, %s", rd
, rt
, rs
);
14009 * 10987654321098765432109876543210
14010 * 001000 01001001101
14015 std::string
NMD::SHRA_PH(uint64 instruction
)
14017 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14018 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14019 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14021 std::string rt
= GPR(copy(rt_value
));
14022 std::string rs
= GPR(copy(rs_value
));
14023 std::string sa
= IMMEDIATE(copy(sa_value
));
14025 return img::format("SHRA.PH %s, %s, %s", rt
, rs
, sa
);
14033 * 10987654321098765432109876543210
14034 * 001000 01001001101
14039 std::string
NMD::SHRA_QB(uint64 instruction
)
14041 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14042 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14043 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14045 std::string rt
= GPR(copy(rt_value
));
14046 std::string rs
= GPR(copy(rs_value
));
14047 std::string sa
= IMMEDIATE(copy(sa_value
));
14049 return img::format("SHRA.QB %s, %s, %s", rt
, rs
, sa
);
14057 * 10987654321098765432109876543210
14058 * 001000 01001001101
14063 std::string
NMD::SHRA_R_PH(uint64 instruction
)
14065 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14066 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14067 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14069 std::string rt
= GPR(copy(rt_value
));
14070 std::string rs
= GPR(copy(rs_value
));
14071 std::string sa
= IMMEDIATE(copy(sa_value
));
14073 return img::format("SHRA_R.PH %s, %s, %s", rt
, rs
, sa
);
14081 * 10987654321098765432109876543210
14082 * 001000 01001001101
14087 std::string
NMD::SHRA_R_QB(uint64 instruction
)
14089 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14090 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14091 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14093 std::string rt
= GPR(copy(rt_value
));
14094 std::string rs
= GPR(copy(rs_value
));
14095 std::string sa
= IMMEDIATE(copy(sa_value
));
14097 return img::format("SHRA_R.QB %s, %s, %s", rt
, rs
, sa
);
14105 * 10987654321098765432109876543210
14106 * 001000 01001001101
14111 std::string
NMD::SHRA_R_W(uint64 instruction
)
14113 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14114 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14115 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
14117 std::string rt
= GPR(copy(rt_value
));
14118 std::string rs
= GPR(copy(rs_value
));
14119 std::string sa
= IMMEDIATE(copy(sa_value
));
14121 return img::format("SHRA_R.W %s, %s, %s", rt
, rs
, sa
);
14129 * 10987654321098765432109876543210
14130 * 001000 01001001101
14135 std::string
NMD::SHRAV_PH(uint64 instruction
)
14137 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14138 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14139 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14141 std::string rd
= GPR(copy(rd_value
));
14142 std::string rt
= GPR(copy(rt_value
));
14143 std::string rs
= GPR(copy(rs_value
));
14145 return img::format("SHRAV.PH %s, %s, %s", rd
, rt
, rs
);
14153 * 10987654321098765432109876543210
14154 * 001000 01001001101
14159 std::string
NMD::SHRAV_QB(uint64 instruction
)
14161 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14162 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14163 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14165 std::string rd
= GPR(copy(rd_value
));
14166 std::string rt
= GPR(copy(rt_value
));
14167 std::string rs
= GPR(copy(rs_value
));
14169 return img::format("SHRAV.QB %s, %s, %s", rd
, rt
, rs
);
14177 * 10987654321098765432109876543210
14178 * 001000 01001001101
14183 std::string
NMD::SHRAV_R_PH(uint64 instruction
)
14185 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14186 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14187 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14189 std::string rd
= GPR(copy(rd_value
));
14190 std::string rt
= GPR(copy(rt_value
));
14191 std::string rs
= GPR(copy(rs_value
));
14193 return img::format("SHRAV_R.PH %s, %s, %s", rd
, rt
, rs
);
14201 * 10987654321098765432109876543210
14202 * 001000 01001001101
14207 std::string
NMD::SHRAV_R_QB(uint64 instruction
)
14209 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14210 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14211 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14213 std::string rd
= GPR(copy(rd_value
));
14214 std::string rt
= GPR(copy(rt_value
));
14215 std::string rs
= GPR(copy(rs_value
));
14217 return img::format("SHRAV_R.QB %s, %s, %s", rd
, rt
, rs
);
14225 * 10987654321098765432109876543210
14226 * 001000 01001001101
14231 std::string
NMD::SHRAV_R_W(uint64 instruction
)
14233 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14234 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14235 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14237 std::string rd
= GPR(copy(rd_value
));
14238 std::string rt
= GPR(copy(rt_value
));
14239 std::string rs
= GPR(copy(rs_value
));
14241 return img::format("SHRAV_R.W %s, %s, %s", rd
, rt
, rs
);
14249 * 10987654321098765432109876543210
14250 * 001000 01001001101
14255 std::string
NMD::SHRL_PH(uint64 instruction
)
14257 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14258 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14259 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14261 std::string rt
= GPR(copy(rt_value
));
14262 std::string rs
= GPR(copy(rs_value
));
14263 std::string sa
= IMMEDIATE(copy(sa_value
));
14265 return img::format("SHRL.PH %s, %s, %s", rt
, rs
, sa
);
14273 * 10987654321098765432109876543210
14274 * 001000 01001001101
14279 std::string
NMD::SHRL_QB(uint64 instruction
)
14281 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14282 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14283 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14285 std::string rt
= GPR(copy(rt_value
));
14286 std::string rs
= GPR(copy(rs_value
));
14287 std::string sa
= IMMEDIATE(copy(sa_value
));
14289 return img::format("SHRL.QB %s, %s, %s", rt
, rs
, sa
);
14297 * 10987654321098765432109876543210
14298 * 001000 01001001101
14303 std::string
NMD::SHRLV_PH(uint64 instruction
)
14305 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14306 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14307 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14309 std::string rd
= GPR(copy(rd_value
));
14310 std::string rt
= GPR(copy(rt_value
));
14311 std::string rs
= GPR(copy(rs_value
));
14313 return img::format("SHRLV.PH %s, %s, %s", rd
, rt
, rs
);
14321 * 10987654321098765432109876543210
14322 * 001000 01001001101
14327 std::string
NMD::SHRLV_QB(uint64 instruction
)
14329 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14330 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14331 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14333 std::string rd
= GPR(copy(rd_value
));
14334 std::string rt
= GPR(copy(rt_value
));
14335 std::string rs
= GPR(copy(rs_value
));
14337 return img::format("SHRLV.QB %s, %s, %s", rd
, rt
, rs
);
14345 * 10987654321098765432109876543210
14346 * 001000 01001001101
14351 std::string
NMD::SHX(uint64 instruction
)
14353 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14354 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14355 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14357 std::string rd
= GPR(copy(rd_value
));
14358 std::string rs
= GPR(copy(rs_value
));
14359 std::string rt
= GPR(copy(rt_value
));
14361 return img::format("SHX %s, %s(%s)", rd
, rs
, rt
);
14369 * 10987654321098765432109876543210
14370 * 001000 01001001101
14375 std::string
NMD::SHXS(uint64 instruction
)
14377 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14378 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14379 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14381 std::string rd
= GPR(copy(rd_value
));
14382 std::string rs
= GPR(copy(rs_value
));
14383 std::string rt
= GPR(copy(rt_value
));
14385 return img::format("SHXS %s, %s(%s)", rd
, rs
, rt
);
14393 * 10987654321098765432109876543210
14394 * 001000 01001001101
14399 std::string
NMD::SIGRIE(uint64 instruction
)
14401 uint64 code_value
= extract_code_18_to_0(instruction
);
14403 std::string code
= IMMEDIATE(copy(code_value
));
14405 return img::format("SIGRIE %s", code
);
14413 * 10987654321098765432109876543210
14414 * 001000 01001001101
14419 std::string
NMD::SLL_16_(uint64 instruction
)
14421 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14422 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14423 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14425 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
14426 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
14427 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14429 return img::format("SLL %s, %s, %s", rt3
, rs3
, shift3
);
14437 * 10987654321098765432109876543210
14438 * 001000 01001001101
14443 std::string
NMD::SLL_32_(uint64 instruction
)
14445 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14446 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14447 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14449 std::string rt
= GPR(copy(rt_value
));
14450 std::string rs
= GPR(copy(rs_value
));
14451 std::string shift
= IMMEDIATE(copy(shift_value
));
14453 return img::format("SLL %s, %s, %s", rt
, rs
, shift
);
14461 * 10987654321098765432109876543210
14462 * 001000 01001001101
14467 std::string
NMD::SLLV(uint64 instruction
)
14469 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14470 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14471 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14473 std::string rd
= GPR(copy(rd_value
));
14474 std::string rs
= GPR(copy(rs_value
));
14475 std::string rt
= GPR(copy(rt_value
));
14477 return img::format("SLLV %s, %s, %s", rd
, rs
, rt
);
14485 * 10987654321098765432109876543210
14486 * 001000 01001001101
14491 std::string
NMD::SLT(uint64 instruction
)
14493 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14494 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14495 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14497 std::string rd
= GPR(copy(rd_value
));
14498 std::string rs
= GPR(copy(rs_value
));
14499 std::string rt
= GPR(copy(rt_value
));
14501 return img::format("SLT %s, %s, %s", rd
, rs
, rt
);
14509 * 10987654321098765432109876543210
14510 * 001000 01001001101
14515 std::string
NMD::SLTI(uint64 instruction
)
14517 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14518 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14519 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14521 std::string rt
= GPR(copy(rt_value
));
14522 std::string rs
= GPR(copy(rs_value
));
14523 std::string u
= IMMEDIATE(copy(u_value
));
14525 return img::format("SLTI %s, %s, %s", rt
, rs
, u
);
14533 * 10987654321098765432109876543210
14534 * 001000 01001001101
14539 std::string
NMD::SLTIU(uint64 instruction
)
14541 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14542 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14543 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14545 std::string rt
= GPR(copy(rt_value
));
14546 std::string rs
= GPR(copy(rs_value
));
14547 std::string u
= IMMEDIATE(copy(u_value
));
14549 return img::format("SLTIU %s, %s, %s", rt
, rs
, u
);
14557 * 10987654321098765432109876543210
14558 * 001000 01001001101
14563 std::string
NMD::SLTU(uint64 instruction
)
14565 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14566 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14567 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14569 std::string rd
= GPR(copy(rd_value
));
14570 std::string rs
= GPR(copy(rs_value
));
14571 std::string rt
= GPR(copy(rt_value
));
14573 return img::format("SLTU %s, %s, %s", rd
, rs
, rt
);
14581 * 10987654321098765432109876543210
14582 * 001000 01001001101
14587 std::string
NMD::SOV(uint64 instruction
)
14589 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14590 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14591 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14593 std::string rd
= GPR(copy(rd_value
));
14594 std::string rs
= GPR(copy(rs_value
));
14595 std::string rt
= GPR(copy(rt_value
));
14597 return img::format("SOV %s, %s, %s", rd
, rs
, rt
);
14605 * 10987654321098765432109876543210
14606 * 001000 01001001101
14611 std::string
NMD::SPECIAL2(uint64 instruction
)
14613 uint64 op_value
= extract_op_25_to_3(instruction
);
14615 std::string op
= IMMEDIATE(copy(op_value
));
14617 return img::format("SPECIAL2 %s", op
);
14625 * 10987654321098765432109876543210
14626 * 001000 01001001101
14631 std::string
NMD::SQRT_D(uint64 instruction
)
14633 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14634 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14636 std::string ft
= FPR(copy(ft_value
));
14637 std::string fs
= FPR(copy(fs_value
));
14639 return img::format("SQRT.D %s, %s", ft
, fs
);
14647 * 10987654321098765432109876543210
14648 * 001000 01001001101
14653 std::string
NMD::SQRT_S(uint64 instruction
)
14655 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14656 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14658 std::string ft
= FPR(copy(ft_value
));
14659 std::string fs
= FPR(copy(fs_value
));
14661 return img::format("SQRT.S %s, %s", ft
, fs
);
14666 * SRA rd, rt, sa - Shift Word Right Arithmetic
14669 * 10987654321098765432109876543210
14670 * 00000000000 000011
14675 std::string
NMD::SRA(uint64 instruction
)
14677 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14678 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14679 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14681 std::string rt
= GPR(copy(rt_value
));
14682 std::string rs
= GPR(copy(rs_value
));
14683 std::string shift
= IMMEDIATE(copy(shift_value
));
14685 return img::format("SRA %s, %s, %s", rt
, rs
, shift
);
14690 * SRAV rd, rt, rs - Shift Word Right Arithmetic Variable
14693 * 10987654321098765432109876543210
14694 * 001000 00000000111
14699 std::string
NMD::SRAV(uint64 instruction
)
14701 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14702 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14703 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14705 std::string rd
= GPR(copy(rd_value
));
14706 std::string rs
= GPR(copy(rs_value
));
14707 std::string rt
= GPR(copy(rt_value
));
14709 return img::format("SRAV %s, %s, %s", rd
, rs
, rt
);
14717 * 10987654321098765432109876543210
14718 * 001000 00000000111
14723 std::string
NMD::SRL_16_(uint64 instruction
)
14725 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14726 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14727 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14729 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
14730 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
14731 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14733 return img::format("SRL %s, %s, %s", rt3
, rs3
, shift3
);
14741 * 10987654321098765432109876543210
14742 * 001000 01001001101
14747 std::string
NMD::SRL_32_(uint64 instruction
)
14749 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14750 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14751 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14753 std::string rt
= GPR(copy(rt_value
));
14754 std::string rs
= GPR(copy(rs_value
));
14755 std::string shift
= IMMEDIATE(copy(shift_value
));
14757 return img::format("SRL %s, %s, %s", rt
, rs
, shift
);
14765 * 10987654321098765432109876543210
14766 * 001000 01001001101
14771 std::string
NMD::SRLV(uint64 instruction
)
14773 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14774 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14775 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14777 std::string rd
= GPR(copy(rd_value
));
14778 std::string rs
= GPR(copy(rs_value
));
14779 std::string rt
= GPR(copy(rt_value
));
14781 return img::format("SRLV %s, %s, %s", rd
, rs
, rt
);
14789 * 10987654321098765432109876543210
14790 * 001000 01001001101
14795 std::string
NMD::SUB(uint64 instruction
)
14797 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14798 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14799 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14801 std::string rd
= GPR(copy(rd_value
));
14802 std::string rs
= GPR(copy(rs_value
));
14803 std::string rt
= GPR(copy(rt_value
));
14805 return img::format("SUB %s, %s, %s", rd
, rs
, rt
);
14813 * 10987654321098765432109876543210
14814 * 001000 01001001101
14819 std::string
NMD::SUB_D(uint64 instruction
)
14821 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14822 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14823 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
14825 std::string fd
= FPR(copy(fd_value
));
14826 std::string fs
= FPR(copy(fs_value
));
14827 std::string ft
= FPR(copy(ft_value
));
14829 return img::format("SUB.D %s, %s, %s", fd
, fs
, ft
);
14837 * 10987654321098765432109876543210
14838 * 001000 01001001101
14843 std::string
NMD::SUB_S(uint64 instruction
)
14845 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14846 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14847 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
14849 std::string fd
= FPR(copy(fd_value
));
14850 std::string fs
= FPR(copy(fs_value
));
14851 std::string ft
= FPR(copy(ft_value
));
14853 return img::format("SUB.S %s, %s, %s", fd
, fs
, ft
);
14861 * 10987654321098765432109876543210
14862 * 001000 01001001101
14867 std::string
NMD::SUBQ_PH(uint64 instruction
)
14869 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14870 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14871 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14873 std::string rd
= GPR(copy(rd_value
));
14874 std::string rs
= GPR(copy(rs_value
));
14875 std::string rt
= GPR(copy(rt_value
));
14877 return img::format("SUBQ.PH %s, %s, %s", rd
, rs
, rt
);
14882 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
14886 * 10987654321098765432109876543210
14887 * 001000 01001001101
14892 std::string
NMD::SUBQ_S_PH(uint64 instruction
)
14894 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14895 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14896 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14898 std::string rd
= GPR(copy(rd_value
));
14899 std::string rs
= GPR(copy(rs_value
));
14900 std::string rt
= GPR(copy(rt_value
));
14902 return img::format("SUBQ_S.PH %s, %s, %s", rd
, rs
, rt
);
14907 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
14911 * 10987654321098765432109876543210
14912 * 001000 01001001101
14917 std::string
NMD::SUBQ_S_W(uint64 instruction
)
14919 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14920 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14921 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14923 std::string rd
= GPR(copy(rd_value
));
14924 std::string rs
= GPR(copy(rs_value
));
14925 std::string rt
= GPR(copy(rt_value
));
14927 return img::format("SUBQ_S.W %s, %s, %s", rd
, rs
, rt
);
14932 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
14936 * 10987654321098765432109876543210
14937 * 001000 01001001101
14942 std::string
NMD::SUBQH_PH(uint64 instruction
)
14944 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14945 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14946 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14948 std::string rd
= GPR(copy(rd_value
));
14949 std::string rs
= GPR(copy(rs_value
));
14950 std::string rt
= GPR(copy(rt_value
));
14952 return img::format("SUBQH.PH %s, %s, %s", rd
, rs
, rt
);
14957 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
14961 * 10987654321098765432109876543210
14962 * 001000 01001001101
14967 std::string
NMD::SUBQH_R_PH(uint64 instruction
)
14969 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14970 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14971 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14973 std::string rd
= GPR(copy(rd_value
));
14974 std::string rs
= GPR(copy(rs_value
));
14975 std::string rt
= GPR(copy(rt_value
));
14977 return img::format("SUBQH_R.PH %s, %s, %s", rd
, rs
, rt
);
14982 * SUBQH_R.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
14983 * to Halve Results (rounding)
14986 * 10987654321098765432109876543210
14987 * 001000 11001001101
14992 std::string
NMD::SUBQH_R_W(uint64 instruction
)
14994 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14995 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14996 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14998 std::string rd
= GPR(copy(rd_value
));
14999 std::string rs
= GPR(copy(rs_value
));
15000 std::string rt
= GPR(copy(rt_value
));
15002 return img::format("SUBQH_R.W %s, %s, %s", rd
, rs
, rt
);
15007 * SUBQH.W rd, rs, rt - Subtract Fractional Words And Shift Right to Halve
15011 * 10987654321098765432109876543210
15012 * 001000 01010001101
15017 std::string
NMD::SUBQH_W(uint64 instruction
)
15019 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15020 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15021 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15023 std::string rd
= GPR(copy(rd_value
));
15024 std::string rs
= GPR(copy(rs_value
));
15025 std::string rt
= GPR(copy(rt_value
));
15027 return img::format("SUBQH.W %s, %s, %s", rd
, rs
, rt
);
15032 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15035 * 10987654321098765432109876543210
15036 * 001000 00010001101
15041 std::string
NMD::SUBU_16_(uint64 instruction
)
15043 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
15044 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15045 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
15047 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
15048 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
15049 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
15051 return img::format("SUBU %s, %s, %s", rd3
, rs3
, rt3
);
15056 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15059 * 10987654321098765432109876543210
15060 * 001000 00010001101
15065 std::string
NMD::SUBU_32_(uint64 instruction
)
15067 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15068 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15069 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15071 std::string rd
= GPR(copy(rd_value
));
15072 std::string rs
= GPR(copy(rs_value
));
15073 std::string rt
= GPR(copy(rt_value
));
15075 return img::format("SUBU %s, %s, %s", rd
, rs
, rt
);
15080 * SUBU.PH rd, rs, rt - Subtract Unsigned Integer Halfwords
15083 * 10987654321098765432109876543210
15084 * 001000 01100001101
15089 std::string
NMD::SUBU_PH(uint64 instruction
)
15091 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15092 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15093 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15095 std::string rd
= GPR(copy(rd_value
));
15096 std::string rs
= GPR(copy(rs_value
));
15097 std::string rt
= GPR(copy(rt_value
));
15099 return img::format("SUBU.PH %s, %s, %s", rd
, rs
, rt
);
15104 * SUBU.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector
15107 * 10987654321098765432109876543210
15108 * 001000 01011001101
15113 std::string
NMD::SUBU_QB(uint64 instruction
)
15115 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15116 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15117 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15119 std::string rd
= GPR(copy(rd_value
));
15120 std::string rs
= GPR(copy(rs_value
));
15121 std::string rt
= GPR(copy(rt_value
));
15123 return img::format("SUBU.QB %s, %s, %s", rd
, rs
, rt
);
15128 * SUBU_S.PH rd, rs, rt - Subtract Unsigned Integer Halfwords (saturating)
15131 * 10987654321098765432109876543210
15132 * 001000 11100001101
15137 std::string
NMD::SUBU_S_PH(uint64 instruction
)
15139 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15140 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15141 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15143 std::string rd
= GPR(copy(rd_value
));
15144 std::string rs
= GPR(copy(rs_value
));
15145 std::string rt
= GPR(copy(rt_value
));
15147 return img::format("SUBU_S.PH %s, %s, %s", rd
, rs
, rt
);
15152 * SUBU_S.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector (saturating)
15155 * 10987654321098765432109876543210
15156 * 001000 11011001101
15161 std::string
NMD::SUBU_S_QB(uint64 instruction
)
15163 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15164 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15165 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15167 std::string rd
= GPR(copy(rd_value
));
15168 std::string rs
= GPR(copy(rs_value
));
15169 std::string rt
= GPR(copy(rt_value
));
15171 return img::format("SUBU_S.QB %s, %s, %s", rd
, rs
, rt
);
15176 * SUBUH.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15180 * 10987654321098765432109876543210
15181 * 001000 01101001101
15186 std::string
NMD::SUBUH_QB(uint64 instruction
)
15188 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15189 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15190 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15192 std::string rd
= GPR(copy(rd_value
));
15193 std::string rs
= GPR(copy(rs_value
));
15194 std::string rt
= GPR(copy(rt_value
));
15196 return img::format("SUBUH.QB %s, %s, %s", rd
, rs
, rt
);
15201 * SUBUH_R.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15202 * Results (rounding)
15205 * 10987654321098765432109876543210
15206 * 001000 11101001101
15211 std::string
NMD::SUBUH_R_QB(uint64 instruction
)
15213 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15214 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15215 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15217 std::string rd
= GPR(copy(rd_value
));
15218 std::string rs
= GPR(copy(rs_value
));
15219 std::string rt
= GPR(copy(rt_value
));
15221 return img::format("SUBUH_R.QB %s, %s, %s", rd
, rs
, rt
);
15226 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15229 * 10987654321098765432109876543210
15230 * 001000 00010001101
15235 std::string
NMD::SW_16_(uint64 instruction
)
15237 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15238 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15239 uint64 u_value
= extract_u_3_2_1_0__s2(instruction
);
15241 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
15242 std::string u
= IMMEDIATE(copy(u_value
));
15243 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
15245 return img::format("SW %s, %s(%s)", rtz3
, u
, rs3
);
15250 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15253 * 10987654321098765432109876543210
15254 * 001000 00010001101
15259 std::string
NMD::SW_4X4_(uint64 instruction
)
15261 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
15262 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
15263 uint64 u_value
= extract_u_3_8__s2(instruction
);
15265 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
15266 std::string u
= IMMEDIATE(copy(u_value
));
15267 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
15269 return img::format("SW %s, %s(%s)", rtz4
, u
, rs4
);
15274 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15277 * 10987654321098765432109876543210
15278 * 001000 00010001101
15283 std::string
NMD::SW_GP16_(uint64 instruction
)
15285 uint64 u_value
= extract_u_6_5_4_3_2_1_0__s2(instruction
);
15286 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15288 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
15289 std::string u
= IMMEDIATE(copy(u_value
));
15291 return img::format("SW %s, %s($%d)", rtz3
, u
, 28);
15296 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15299 * 10987654321098765432109876543210
15300 * 001000 00010001101
15305 std::string
NMD::SW_GP_(uint64 instruction
)
15307 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15308 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
15310 std::string rt
= GPR(copy(rt_value
));
15311 std::string u
= IMMEDIATE(copy(u_value
));
15313 return img::format("SW %s, %s($%d)", rt
, u
, 28);
15318 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15321 * 10987654321098765432109876543210
15322 * 001000 00010001101
15327 std::string
NMD::SW_S9_(uint64 instruction
)
15329 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15330 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15331 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15333 std::string rt
= GPR(copy(rt_value
));
15334 std::string s
= IMMEDIATE(copy(s_value
));
15335 std::string rs
= GPR(copy(rs_value
));
15337 return img::format("SW %s, %s(%s)", rt
, s
, rs
);
15342 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15345 * 10987654321098765432109876543210
15346 * 001000 00010001101
15351 std::string
NMD::SW_SP_(uint64 instruction
)
15353 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
15354 uint64 u_value
= extract_u_4_3_2_1_0__s2(instruction
);
15356 std::string rt
= GPR(copy(rt_value
));
15357 std::string u
= IMMEDIATE(copy(u_value
));
15359 return img::format("SW %s, %s($%d)", rt
, u
, 29);
15364 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15367 * 10987654321098765432109876543210
15368 * 001000 00010001101
15373 std::string
NMD::SW_U12_(uint64 instruction
)
15375 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15376 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15377 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15379 std::string rt
= GPR(copy(rt_value
));
15380 std::string u
= IMMEDIATE(copy(u_value
));
15381 std::string rs
= GPR(copy(rs_value
));
15383 return img::format("SW %s, %s(%s)", rt
, u
, rs
);
15388 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15391 * 10987654321098765432109876543210
15392 * 001000 00010001101
15397 std::string
NMD::SWC1_GP_(uint64 instruction
)
15399 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15400 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
15402 std::string ft
= FPR(copy(ft_value
));
15403 std::string u
= IMMEDIATE(copy(u_value
));
15405 return img::format("SWC1 %s, %s($%d)", ft
, u
, 28);
15410 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15413 * 10987654321098765432109876543210
15414 * 001000 00010001101
15419 std::string
NMD::SWC1_S9_(uint64 instruction
)
15421 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15422 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15423 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15425 std::string ft
= FPR(copy(ft_value
));
15426 std::string s
= IMMEDIATE(copy(s_value
));
15427 std::string rs
= GPR(copy(rs_value
));
15429 return img::format("SWC1 %s, %s(%s)", ft
, s
, rs
);
15434 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15437 * 10987654321098765432109876543210
15438 * 001000 00010001101
15443 std::string
NMD::SWC1_U12_(uint64 instruction
)
15445 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15446 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15447 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15449 std::string ft
= FPR(copy(ft_value
));
15450 std::string u
= IMMEDIATE(copy(u_value
));
15451 std::string rs
= GPR(copy(rs_value
));
15453 return img::format("SWC1 %s, %s(%s)", ft
, u
, rs
);
15458 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15461 * 10987654321098765432109876543210
15462 * 001000 00010001101
15467 std::string
NMD::SWC1X(uint64 instruction
)
15469 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15470 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15471 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15473 std::string ft
= FPR(copy(ft_value
));
15474 std::string rs
= GPR(copy(rs_value
));
15475 std::string rt
= GPR(copy(rt_value
));
15477 return img::format("SWC1X %s, %s(%s)", ft
, rs
, rt
);
15482 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15485 * 10987654321098765432109876543210
15486 * 001000 00010001101
15491 std::string
NMD::SWC1XS(uint64 instruction
)
15493 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15494 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15495 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15497 std::string ft
= FPR(copy(ft_value
));
15498 std::string rs
= GPR(copy(rs_value
));
15499 std::string rt
= GPR(copy(rt_value
));
15501 return img::format("SWC1XS %s, %s(%s)", ft
, rs
, rt
);
15506 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15509 * 10987654321098765432109876543210
15510 * 001000 00010001101
15515 std::string
NMD::SWC2(uint64 instruction
)
15517 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
15518 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15519 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15521 std::string cs
= CPR(copy(cs_value
));
15522 std::string s
= IMMEDIATE(copy(s_value
));
15523 std::string rs
= GPR(copy(rs_value
));
15525 return img::format("SWC2 %s, %s(%s)", cs
, s
, rs
);
15530 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15533 * 10987654321098765432109876543210
15534 * 001000 00010001101
15539 std::string
NMD::SWE(uint64 instruction
)
15541 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15542 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15543 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15545 std::string rt
= GPR(copy(rt_value
));
15546 std::string s
= IMMEDIATE(copy(s_value
));
15547 std::string rs
= GPR(copy(rs_value
));
15549 return img::format("SWE %s, %s(%s)", rt
, s
, rs
);
15554 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15557 * 10987654321098765432109876543210
15558 * 001000 00010001101
15563 std::string
NMD::SWM(uint64 instruction
)
15565 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15566 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15567 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15568 uint64 count3_value
= extract_count3_14_13_12(instruction
);
15570 std::string rt
= GPR(copy(rt_value
));
15571 std::string s
= IMMEDIATE(copy(s_value
));
15572 std::string rs
= GPR(copy(rs_value
));
15573 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
15575 return img::format("SWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
15580 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15583 * 10987654321098765432109876543210
15584 * 001000 00010001101
15589 std::string
NMD::SWPC_48_(uint64 instruction
)
15591 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
15592 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
15594 std::string rt
= GPR(copy(rt_value
));
15595 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
15597 return img::format("SWPC %s, %s", rt
, s
);
15602 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15605 * 10987654321098765432109876543210
15606 * 001000 00010001101
15611 std::string
NMD::SWX(uint64 instruction
)
15613 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15614 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15615 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15617 std::string rd
= GPR(copy(rd_value
));
15618 std::string rs
= GPR(copy(rs_value
));
15619 std::string rt
= GPR(copy(rt_value
));
15621 return img::format("SWX %s, %s(%s)", rd
, rs
, rt
);
15626 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15629 * 10987654321098765432109876543210
15630 * 001000 00010001101
15635 std::string
NMD::SWXS(uint64 instruction
)
15637 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15638 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15639 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15641 std::string rd
= GPR(copy(rd_value
));
15642 std::string rs
= GPR(copy(rs_value
));
15643 std::string rt
= GPR(copy(rt_value
));
15645 return img::format("SWXS %s, %s(%s)", rd
, rs
, rt
);
15650 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15653 * 10987654321098765432109876543210
15654 * 001000 00010001101
15659 std::string
NMD::SYNC(uint64 instruction
)
15661 uint64 stype_value
= extract_stype_20_19_18_17_16(instruction
);
15663 std::string stype
= IMMEDIATE(copy(stype_value
));
15665 return img::format("SYNC %s", stype
);
15670 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15673 * 10987654321098765432109876543210
15674 * 001000 00010001101
15679 std::string
NMD::SYNCI(uint64 instruction
)
15681 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15682 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15684 std::string s
= IMMEDIATE(copy(s_value
));
15685 std::string rs
= GPR(copy(rs_value
));
15687 return img::format("SYNCI %s(%s)", s
, rs
);
15692 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15695 * 10987654321098765432109876543210
15696 * 001000 00010001101
15701 std::string
NMD::SYNCIE(uint64 instruction
)
15703 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15704 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15706 std::string s
= IMMEDIATE(copy(s_value
));
15707 std::string rs
= GPR(copy(rs_value
));
15709 return img::format("SYNCIE %s(%s)", s
, rs
);
15714 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15717 * 10987654321098765432109876543210
15718 * 001000 00010001101
15723 std::string
NMD::SYSCALL_16_(uint64 instruction
)
15725 uint64 code_value
= extract_code_1_0(instruction
);
15727 std::string code
= IMMEDIATE(copy(code_value
));
15729 return img::format("SYSCALL %s", code
);
15734 * SYSCALL code - System Call. Cause a System Call Exception
15737 * 10987654321098765432109876543210
15739 * code ------------------
15741 std::string
NMD::SYSCALL_32_(uint64 instruction
)
15743 uint64 code_value
= extract_code_17_to_0(instruction
);
15745 std::string code
= IMMEDIATE(copy(code_value
));
15747 return img::format("SYSCALL %s", code
);
15752 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15755 * 10987654321098765432109876543210
15756 * 001000 00010001101
15761 std::string
NMD::TEQ(uint64 instruction
)
15763 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15764 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15766 std::string rs
= GPR(copy(rs_value
));
15767 std::string rt
= GPR(copy(rt_value
));
15769 return img::format("TEQ %s, %s", rs
, rt
);
15774 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15777 * 10987654321098765432109876543210
15778 * 001000 00010001101
15783 std::string
NMD::TLBGINV(uint64 instruction
)
15792 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15795 * 10987654321098765432109876543210
15796 * 001000 00010001101
15801 std::string
NMD::TLBGINVF(uint64 instruction
)
15805 return "TLBGINVF ";
15810 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15813 * 10987654321098765432109876543210
15814 * 001000 00010001101
15819 std::string
NMD::TLBGP(uint64 instruction
)
15828 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15831 * 10987654321098765432109876543210
15832 * 001000 00010001101
15837 std::string
NMD::TLBGR(uint64 instruction
)
15846 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15849 * 10987654321098765432109876543210
15850 * 001000 00010001101
15855 std::string
NMD::TLBGWI(uint64 instruction
)
15864 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15867 * 10987654321098765432109876543210
15868 * 001000 00010001101
15873 std::string
NMD::TLBGWR(uint64 instruction
)
15882 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15885 * 10987654321098765432109876543210
15886 * 001000 00010001101
15891 std::string
NMD::TLBINV(uint64 instruction
)
15900 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15903 * 10987654321098765432109876543210
15904 * 001000 00010001101
15909 std::string
NMD::TLBINVF(uint64 instruction
)
15918 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15921 * 10987654321098765432109876543210
15922 * 001000 00010001101
15927 std::string
NMD::TLBP(uint64 instruction
)
15936 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15939 * 10987654321098765432109876543210
15940 * 001000 00010001101
15945 std::string
NMD::TLBR(uint64 instruction
)
15954 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15957 * 10987654321098765432109876543210
15958 * 001000 00010001101
15963 std::string
NMD::TLBWI(uint64 instruction
)
15972 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15975 * 10987654321098765432109876543210
15976 * 001000 00010001101
15981 std::string
NMD::TLBWR(uint64 instruction
)
15990 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15993 * 10987654321098765432109876543210
15994 * 001000 00010001101
15999 std::string
NMD::TNE(uint64 instruction
)
16001 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16002 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16004 std::string rs
= GPR(copy(rs_value
));
16005 std::string rt
= GPR(copy(rt_value
));
16007 return img::format("TNE %s, %s", rs
, rt
);
16012 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16015 * 10987654321098765432109876543210
16016 * 001000 00010001101
16021 std::string
NMD::TRUNC_L_D(uint64 instruction
)
16023 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16024 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16026 std::string ft
= FPR(copy(ft_value
));
16027 std::string fs
= FPR(copy(fs_value
));
16029 return img::format("TRUNC.L.D %s, %s", ft
, fs
);
16034 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16037 * 10987654321098765432109876543210
16038 * 001000 00010001101
16043 std::string
NMD::TRUNC_L_S(uint64 instruction
)
16045 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16046 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16048 std::string ft
= FPR(copy(ft_value
));
16049 std::string fs
= FPR(copy(fs_value
));
16051 return img::format("TRUNC.L.S %s, %s", ft
, fs
);
16056 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16059 * 10987654321098765432109876543210
16060 * 001000 00010001101
16065 std::string
NMD::TRUNC_W_D(uint64 instruction
)
16067 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16068 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16070 std::string ft
= FPR(copy(ft_value
));
16071 std::string fs
= FPR(copy(fs_value
));
16073 return img::format("TRUNC.W.D %s, %s", ft
, fs
);
16078 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16081 * 10987654321098765432109876543210
16082 * 001000 00010001101
16087 std::string
NMD::TRUNC_W_S(uint64 instruction
)
16089 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16090 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16092 std::string ft
= FPR(copy(ft_value
));
16093 std::string fs
= FPR(copy(fs_value
));
16095 return img::format("TRUNC.W.S %s, %s", ft
, fs
);
16100 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16103 * 10987654321098765432109876543210
16104 * 001000 00010001101
16109 std::string
NMD::UALDM(uint64 instruction
)
16111 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16112 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16113 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16114 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16116 std::string rt
= GPR(copy(rt_value
));
16117 std::string s
= IMMEDIATE(copy(s_value
));
16118 std::string rs
= GPR(copy(rs_value
));
16119 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16121 return img::format("UALDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16126 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16129 * 10987654321098765432109876543210
16130 * 001000 00010001101
16135 std::string
NMD::UALH(uint64 instruction
)
16137 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16138 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16139 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16141 std::string rt
= GPR(copy(rt_value
));
16142 std::string s
= IMMEDIATE(copy(s_value
));
16143 std::string rs
= GPR(copy(rs_value
));
16145 return img::format("UALH %s, %s(%s)", rt
, s
, rs
);
16150 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16153 * 10987654321098765432109876543210
16154 * 001000 00010001101
16159 std::string
NMD::UALWM(uint64 instruction
)
16161 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16162 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16163 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16164 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16166 std::string rt
= GPR(copy(rt_value
));
16167 std::string s
= IMMEDIATE(copy(s_value
));
16168 std::string rs
= GPR(copy(rs_value
));
16169 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16171 return img::format("UALWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16176 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16179 * 10987654321098765432109876543210
16180 * 001000 00010001101
16185 std::string
NMD::UASDM(uint64 instruction
)
16187 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16188 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16189 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16190 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16192 std::string rt
= GPR(copy(rt_value
));
16193 std::string s
= IMMEDIATE(copy(s_value
));
16194 std::string rs
= GPR(copy(rs_value
));
16195 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16197 return img::format("UASDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16202 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16205 * 10987654321098765432109876543210
16206 * 001000 00010001101
16211 std::string
NMD::UASH(uint64 instruction
)
16213 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16214 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16215 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16217 std::string rt
= GPR(copy(rt_value
));
16218 std::string s
= IMMEDIATE(copy(s_value
));
16219 std::string rs
= GPR(copy(rs_value
));
16221 return img::format("UASH %s, %s(%s)", rt
, s
, rs
);
16226 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16229 * 10987654321098765432109876543210
16230 * 001000 00010001101
16235 std::string
NMD::UASWM(uint64 instruction
)
16237 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16238 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16239 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16240 uint64 count3_value
= extract_count3_14_13_12(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("UASWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16252 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16255 * 10987654321098765432109876543210
16256 * 001000 00010001101
16261 std::string
NMD::UDI(uint64 instruction
)
16263 uint64 op_value
= extract_op_25_to_3(instruction
);
16265 std::string op
= IMMEDIATE(copy(op_value
));
16267 return img::format("UDI %s", op
);
16272 * WAIT code - Enter Wait State
16275 * 10987654321098765432109876543210
16276 * 001000 1100001101111111
16279 std::string
NMD::WAIT(uint64 instruction
)
16281 uint64 code_value
= extract_code_25_24_23_22_21_20_19_18_17_16(instruction
);
16283 std::string code
= IMMEDIATE(copy(code_value
));
16285 return img::format("WAIT %s", code
);
16290 * WRDSP rt, mask - Write Fields to DSPControl Register from a GPR
16293 * 10987654321098765432109876543210
16294 * 001000 01011001111111
16298 std::string
NMD::WRDSP(uint64 instruction
)
16300 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16301 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
16303 std::string rt
= GPR(copy(rt_value
));
16304 std::string mask
= IMMEDIATE(copy(mask_value
));
16306 return img::format("WRDSP %s, %s", rt
, mask
);
16311 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16314 * 10987654321098765432109876543210
16315 * 001000 00010001101
16320 std::string
NMD::WRPGPR(uint64 instruction
)
16322 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16323 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16325 std::string rt
= GPR(copy(rt_value
));
16326 std::string rs
= GPR(copy(rs_value
));
16328 return img::format("WRPGPR %s, %s", rt
, rs
);
16333 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16336 * 10987654321098765432109876543210
16337 * 001000 00010001101
16342 std::string
NMD::XOR_16_(uint64 instruction
)
16344 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
16345 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
16347 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
16348 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
16350 return img::format("XOR %s, %s", rs3
, rt3
);
16355 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16358 * 10987654321098765432109876543210
16359 * 001000 00010001101
16364 std::string
NMD::XOR_32_(uint64 instruction
)
16366 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16367 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16368 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
16370 std::string rd
= GPR(copy(rd_value
));
16371 std::string rs
= GPR(copy(rs_value
));
16372 std::string rt
= GPR(copy(rt_value
));
16374 return img::format("XOR %s, %s, %s", rd
, rs
, rt
);
16379 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16382 * 10987654321098765432109876543210
16383 * 001000 00010001101
16388 std::string
NMD::XORI(uint64 instruction
)
16390 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16391 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16392 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
16394 std::string rt
= GPR(copy(rt_value
));
16395 std::string rs
= GPR(copy(rs_value
));
16396 std::string u
= IMMEDIATE(copy(u_value
));
16398 return img::format("XORI %s, %s, %s", rt
, rs
, u
);
16406 * 10987654321098765432109876543210
16407 * 001000 00010001101
16411 std::string
NMD::YIELD(uint64 instruction
)
16413 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16414 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16416 std::string rt
= GPR(copy(rt_value
));
16417 std::string rs
= GPR(copy(rs_value
));
16419 return img::format("YIELD %s, %s", rt
, rs
);
16424 NMD::Pool
NMD::P_SYSCALL
[2] = {
16425 { instruction
, 0 , 0 , 32,
16426 0xfffc0000, 0x00080000, &NMD::SYSCALL_32_
, 0,
16427 0x0 }, /* SYSCALL[32] */
16428 { instruction
, 0 , 0 , 32,
16429 0xfffc0000, 0x000c0000, &NMD::HYPCALL
, 0,
16430 CP0_
| VZ_
}, /* HYPCALL */
16434 NMD::Pool
NMD::P_RI
[4] = {
16435 { instruction
, 0 , 0 , 32,
16436 0xfff80000, 0x00000000, &NMD::SIGRIE
, 0,
16437 0x0 }, /* SIGRIE */
16438 { pool
, P_SYSCALL
, 2 , 32,
16439 0xfff80000, 0x00080000, 0 , 0,
16440 0x0 }, /* P.SYSCALL */
16441 { instruction
, 0 , 0 , 32,
16442 0xfff80000, 0x00100000, &NMD::BREAK_32_
, 0,
16443 0x0 }, /* BREAK[32] */
16444 { instruction
, 0 , 0 , 32,
16445 0xfff80000, 0x00180000, &NMD::SDBBP_32_
, 0,
16446 EJTAG_
}, /* SDBBP[32] */
16450 NMD::Pool
NMD::P_ADDIU
[2] = {
16451 { pool
, P_RI
, 4 , 32,
16452 0xffe00000, 0x00000000, 0 , 0,
16454 { instruction
, 0 , 0 , 32,
16455 0xfc000000, 0x00000000, &NMD::ADDIU_32_
, &NMD::ADDIU_32__cond
,
16456 0x0 }, /* ADDIU[32] */
16460 NMD::Pool
NMD::P_TRAP
[2] = {
16461 { instruction
, 0 , 0 , 32,
16462 0xfc0007ff, 0x20000000, &NMD::TEQ
, 0,
16464 { instruction
, 0 , 0 , 32,
16465 0xfc0007ff, 0x20000400, &NMD::TNE
, 0,
16470 NMD::Pool
NMD::P_CMOVE
[2] = {
16471 { instruction
, 0 , 0 , 32,
16472 0xfc0007ff, 0x20000210, &NMD::MOVZ
, 0,
16474 { instruction
, 0 , 0 , 32,
16475 0xfc0007ff, 0x20000610, &NMD::MOVN
, 0,
16480 NMD::Pool
NMD::P_D_MT_VPE
[2] = {
16481 { instruction
, 0 , 0 , 32,
16482 0xfc1f3fff, 0x20010ab0, &NMD::DMT
, 0,
16484 { instruction
, 0 , 0 , 32,
16485 0xfc1f3fff, 0x20000ab0, &NMD::DVPE
, 0,
16490 NMD::Pool
NMD::P_E_MT_VPE
[2] = {
16491 { instruction
, 0 , 0 , 32,
16492 0xfc1f3fff, 0x20010eb0, &NMD::EMT
, 0,
16494 { instruction
, 0 , 0 , 32,
16495 0xfc1f3fff, 0x20000eb0, &NMD::EVPE
, 0,
16500 NMD::Pool
NMD::_P_MT_VPE
[2] = {
16501 { pool
, P_D_MT_VPE
, 2 , 32,
16502 0xfc003fff, 0x20000ab0, 0 , 0,
16503 0x0 }, /* P.D_MT_VPE */
16504 { pool
, P_E_MT_VPE
, 2 , 32,
16505 0xfc003fff, 0x20000eb0, 0 , 0,
16506 0x0 }, /* P.E_MT_VPE */
16510 NMD::Pool
NMD::P_MT_VPE
[8] = {
16511 { reserved_block
, 0 , 0 , 32,
16512 0xfc003bff, 0x200002b0, 0 , 0,
16513 0x0 }, /* P.MT_VPE~*(0) */
16514 { pool
, _P_MT_VPE
, 2 , 32,
16515 0xfc003bff, 0x20000ab0, 0 , 0,
16516 0x0 }, /* _P.MT_VPE */
16517 { reserved_block
, 0 , 0 , 32,
16518 0xfc003bff, 0x200012b0, 0 , 0,
16519 0x0 }, /* P.MT_VPE~*(2) */
16520 { reserved_block
, 0 , 0 , 32,
16521 0xfc003bff, 0x20001ab0, 0 , 0,
16522 0x0 }, /* P.MT_VPE~*(3) */
16523 { reserved_block
, 0 , 0 , 32,
16524 0xfc003bff, 0x200022b0, 0 , 0,
16525 0x0 }, /* P.MT_VPE~*(4) */
16526 { reserved_block
, 0 , 0 , 32,
16527 0xfc003bff, 0x20002ab0, 0 , 0,
16528 0x0 }, /* P.MT_VPE~*(5) */
16529 { reserved_block
, 0 , 0 , 32,
16530 0xfc003bff, 0x200032b0, 0 , 0,
16531 0x0 }, /* P.MT_VPE~*(6) */
16532 { reserved_block
, 0 , 0 , 32,
16533 0xfc003bff, 0x20003ab0, 0 , 0,
16534 0x0 }, /* P.MT_VPE~*(7) */
16538 NMD::Pool
NMD::P_DVP
[2] = {
16539 { instruction
, 0 , 0 , 32,
16540 0xfc00ffff, 0x20000390, &NMD::DVP
, 0,
16542 { instruction
, 0 , 0 , 32,
16543 0xfc00ffff, 0x20000790, &NMD::EVP
, 0,
16548 NMD::Pool
NMD::P_SLTU
[2] = {
16549 { pool
, P_DVP
, 2 , 32,
16550 0xfc00fbff, 0x20000390, 0 , 0,
16552 { instruction
, 0 , 0 , 32,
16553 0xfc0003ff, 0x20000390, &NMD::SLTU
, &NMD::SLTU_cond
,
16558 NMD::Pool
NMD::_POOL32A0
[128] = {
16559 { pool
, P_TRAP
, 2 , 32,
16560 0xfc0003ff, 0x20000000, 0 , 0,
16561 0x0 }, /* P.TRAP */
16562 { instruction
, 0 , 0 , 32,
16563 0xfc0003ff, 0x20000008, &NMD::SEB
, 0,
16565 { instruction
, 0 , 0 , 32,
16566 0xfc0003ff, 0x20000010, &NMD::SLLV
, 0,
16568 { instruction
, 0 , 0 , 32,
16569 0xfc0003ff, 0x20000018, &NMD::MUL_32_
, 0,
16570 0x0 }, /* MUL[32] */
16571 { reserved_block
, 0 , 0 , 32,
16572 0xfc0003ff, 0x20000020, 0 , 0,
16573 0x0 }, /* _POOL32A0~*(4) */
16574 { reserved_block
, 0 , 0 , 32,
16575 0xfc0003ff, 0x20000028, 0 , 0,
16576 0x0 }, /* _POOL32A0~*(5) */
16577 { instruction
, 0 , 0 , 32,
16578 0xfc0003ff, 0x20000030, &NMD::MFC0
, 0,
16580 { instruction
, 0 , 0 , 32,
16581 0xfc0003ff, 0x20000038, &NMD::MFHC0
, 0,
16582 CP0_
| MVH_
}, /* MFHC0 */
16583 { reserved_block
, 0 , 0 , 32,
16584 0xfc0003ff, 0x20000040, 0 , 0,
16585 0x0 }, /* _POOL32A0~*(8) */
16586 { instruction
, 0 , 0 , 32,
16587 0xfc0003ff, 0x20000048, &NMD::SEH
, 0,
16589 { instruction
, 0 , 0 , 32,
16590 0xfc0003ff, 0x20000050, &NMD::SRLV
, 0,
16592 { instruction
, 0 , 0 , 32,
16593 0xfc0003ff, 0x20000058, &NMD::MUH
, 0,
16595 { reserved_block
, 0 , 0 , 32,
16596 0xfc0003ff, 0x20000060, 0 , 0,
16597 0x0 }, /* _POOL32A0~*(12) */
16598 { reserved_block
, 0 , 0 , 32,
16599 0xfc0003ff, 0x20000068, 0 , 0,
16600 0x0 }, /* _POOL32A0~*(13) */
16601 { instruction
, 0 , 0 , 32,
16602 0xfc0003ff, 0x20000070, &NMD::MTC0
, 0,
16604 { instruction
, 0 , 0 , 32,
16605 0xfc0003ff, 0x20000078, &NMD::MTHC0
, 0,
16606 CP0_
| MVH_
}, /* MTHC0 */
16607 { reserved_block
, 0 , 0 , 32,
16608 0xfc0003ff, 0x20000080, 0 , 0,
16609 0x0 }, /* _POOL32A0~*(16) */
16610 { reserved_block
, 0 , 0 , 32,
16611 0xfc0003ff, 0x20000088, 0 , 0,
16612 0x0 }, /* _POOL32A0~*(17) */
16613 { instruction
, 0 , 0 , 32,
16614 0xfc0003ff, 0x20000090, &NMD::SRAV
, 0,
16616 { instruction
, 0 , 0 , 32,
16617 0xfc0003ff, 0x20000098, &NMD::MULU
, 0,
16619 { reserved_block
, 0 , 0 , 32,
16620 0xfc0003ff, 0x200000a0, 0 , 0,
16621 0x0 }, /* _POOL32A0~*(20) */
16622 { reserved_block
, 0 , 0 , 32,
16623 0xfc0003ff, 0x200000a8, 0 , 0,
16624 0x0 }, /* _POOL32A0~*(21) */
16625 { instruction
, 0 , 0 , 32,
16626 0xfc0003ff, 0x200000b0, &NMD::MFGC0
, 0,
16627 CP0_
| VZ_
}, /* MFGC0 */
16628 { instruction
, 0 , 0 , 32,
16629 0xfc0003ff, 0x200000b8, &NMD::MFHGC0
, 0,
16630 CP0_
| VZ_
| MVH_
}, /* MFHGC0 */
16631 { reserved_block
, 0 , 0 , 32,
16632 0xfc0003ff, 0x200000c0, 0 , 0,
16633 0x0 }, /* _POOL32A0~*(24) */
16634 { reserved_block
, 0 , 0 , 32,
16635 0xfc0003ff, 0x200000c8, 0 , 0,
16636 0x0 }, /* _POOL32A0~*(25) */
16637 { instruction
, 0 , 0 , 32,
16638 0xfc0003ff, 0x200000d0, &NMD::ROTRV
, 0,
16640 { instruction
, 0 , 0 , 32,
16641 0xfc0003ff, 0x200000d8, &NMD::MUHU
, 0,
16643 { reserved_block
, 0 , 0 , 32,
16644 0xfc0003ff, 0x200000e0, 0 , 0,
16645 0x0 }, /* _POOL32A0~*(28) */
16646 { reserved_block
, 0 , 0 , 32,
16647 0xfc0003ff, 0x200000e8, 0 , 0,
16648 0x0 }, /* _POOL32A0~*(29) */
16649 { instruction
, 0 , 0 , 32,
16650 0xfc0003ff, 0x200000f0, &NMD::MTGC0
, 0,
16651 CP0_
| VZ_
}, /* MTGC0 */
16652 { instruction
, 0 , 0 , 32,
16653 0xfc0003ff, 0x200000f8, &NMD::MTHGC0
, 0,
16654 CP0_
| VZ_
| MVH_
}, /* MTHGC0 */
16655 { reserved_block
, 0 , 0 , 32,
16656 0xfc0003ff, 0x20000100, 0 , 0,
16657 0x0 }, /* _POOL32A0~*(32) */
16658 { reserved_block
, 0 , 0 , 32,
16659 0xfc0003ff, 0x20000108, 0 , 0,
16660 0x0 }, /* _POOL32A0~*(33) */
16661 { instruction
, 0 , 0 , 32,
16662 0xfc0003ff, 0x20000110, &NMD::ADD
, 0,
16664 { instruction
, 0 , 0 , 32,
16665 0xfc0003ff, 0x20000118, &NMD::DIV
, 0,
16667 { reserved_block
, 0 , 0 , 32,
16668 0xfc0003ff, 0x20000120, 0 , 0,
16669 0x0 }, /* _POOL32A0~*(36) */
16670 { reserved_block
, 0 , 0 , 32,
16671 0xfc0003ff, 0x20000128, 0 , 0,
16672 0x0 }, /* _POOL32A0~*(37) */
16673 { instruction
, 0 , 0 , 32,
16674 0xfc0003ff, 0x20000130, &NMD::DMFC0
, 0,
16675 CP0_
| MIPS64_
}, /* DMFC0 */
16676 { reserved_block
, 0 , 0 , 32,
16677 0xfc0003ff, 0x20000138, 0 , 0,
16678 0x0 }, /* _POOL32A0~*(39) */
16679 { reserved_block
, 0 , 0 , 32,
16680 0xfc0003ff, 0x20000140, 0 , 0,
16681 0x0 }, /* _POOL32A0~*(40) */
16682 { reserved_block
, 0 , 0 , 32,
16683 0xfc0003ff, 0x20000148, 0 , 0,
16684 0x0 }, /* _POOL32A0~*(41) */
16685 { instruction
, 0 , 0 , 32,
16686 0xfc0003ff, 0x20000150, &NMD::ADDU_32_
, 0,
16687 0x0 }, /* ADDU[32] */
16688 { instruction
, 0 , 0 , 32,
16689 0xfc0003ff, 0x20000158, &NMD::MOD
, 0,
16691 { reserved_block
, 0 , 0 , 32,
16692 0xfc0003ff, 0x20000160, 0 , 0,
16693 0x0 }, /* _POOL32A0~*(44) */
16694 { reserved_block
, 0 , 0 , 32,
16695 0xfc0003ff, 0x20000168, 0 , 0,
16696 0x0 }, /* _POOL32A0~*(45) */
16697 { instruction
, 0 , 0 , 32,
16698 0xfc0003ff, 0x20000170, &NMD::DMTC0
, 0,
16699 CP0_
| MIPS64_
}, /* DMTC0 */
16700 { reserved_block
, 0 , 0 , 32,
16701 0xfc0003ff, 0x20000178, 0 , 0,
16702 0x0 }, /* _POOL32A0~*(47) */
16703 { reserved_block
, 0 , 0 , 32,
16704 0xfc0003ff, 0x20000180, 0 , 0,
16705 0x0 }, /* _POOL32A0~*(48) */
16706 { reserved_block
, 0 , 0 , 32,
16707 0xfc0003ff, 0x20000188, 0 , 0,
16708 0x0 }, /* _POOL32A0~*(49) */
16709 { instruction
, 0 , 0 , 32,
16710 0xfc0003ff, 0x20000190, &NMD::SUB
, 0,
16712 { instruction
, 0 , 0 , 32,
16713 0xfc0003ff, 0x20000198, &NMD::DIVU
, 0,
16715 { reserved_block
, 0 , 0 , 32,
16716 0xfc0003ff, 0x200001a0, 0 , 0,
16717 0x0 }, /* _POOL32A0~*(52) */
16718 { reserved_block
, 0 , 0 , 32,
16719 0xfc0003ff, 0x200001a8, 0 , 0,
16720 0x0 }, /* _POOL32A0~*(53) */
16721 { instruction
, 0 , 0 , 32,
16722 0xfc0003ff, 0x200001b0, &NMD::DMFGC0
, 0,
16723 CP0_
| MIPS64_
| VZ_
}, /* DMFGC0 */
16724 { reserved_block
, 0 , 0 , 32,
16725 0xfc0003ff, 0x200001b8, 0 , 0,
16726 0x0 }, /* _POOL32A0~*(55) */
16727 { instruction
, 0 , 0 , 32,
16728 0xfc0003ff, 0x200001c0, &NMD::RDHWR
, 0,
16729 XMMS_
}, /* RDHWR */
16730 { reserved_block
, 0 , 0 , 32,
16731 0xfc0003ff, 0x200001c8, 0 , 0,
16732 0x0 }, /* _POOL32A0~*(57) */
16733 { instruction
, 0 , 0 , 32,
16734 0xfc0003ff, 0x200001d0, &NMD::SUBU_32_
, 0,
16735 0x0 }, /* SUBU[32] */
16736 { instruction
, 0 , 0 , 32,
16737 0xfc0003ff, 0x200001d8, &NMD::MODU
, 0,
16739 { reserved_block
, 0 , 0 , 32,
16740 0xfc0003ff, 0x200001e0, 0 , 0,
16741 0x0 }, /* _POOL32A0~*(60) */
16742 { reserved_block
, 0 , 0 , 32,
16743 0xfc0003ff, 0x200001e8, 0 , 0,
16744 0x0 }, /* _POOL32A0~*(61) */
16745 { instruction
, 0 , 0 , 32,
16746 0xfc0003ff, 0x200001f0, &NMD::DMTGC0
, 0,
16747 CP0_
| MIPS64_
| VZ_
}, /* DMTGC0 */
16748 { reserved_block
, 0 , 0 , 32,
16749 0xfc0003ff, 0x200001f8, 0 , 0,
16750 0x0 }, /* _POOL32A0~*(63) */
16751 { reserved_block
, 0 , 0 , 32,
16752 0xfc0003ff, 0x20000200, 0 , 0,
16753 0x0 }, /* _POOL32A0~*(64) */
16754 { reserved_block
, 0 , 0 , 32,
16755 0xfc0003ff, 0x20000208, 0 , 0,
16756 0x0 }, /* _POOL32A0~*(65) */
16757 { pool
, P_CMOVE
, 2 , 32,
16758 0xfc0003ff, 0x20000210, 0 , 0,
16759 0x0 }, /* P.CMOVE */
16760 { reserved_block
, 0 , 0 , 32,
16761 0xfc0003ff, 0x20000218, 0 , 0,
16762 0x0 }, /* _POOL32A0~*(67) */
16763 { reserved_block
, 0 , 0 , 32,
16764 0xfc0003ff, 0x20000220, 0 , 0,
16765 0x0 }, /* _POOL32A0~*(68) */
16766 { instruction
, 0 , 0 , 32,
16767 0xfc0003ff, 0x20000228, &NMD::FORK
, 0,
16769 { instruction
, 0 , 0 , 32,
16770 0xfc0003ff, 0x20000230, &NMD::MFTR
, 0,
16772 { instruction
, 0 , 0 , 32,
16773 0xfc0003ff, 0x20000238, &NMD::MFHTR
, 0,
16775 { reserved_block
, 0 , 0 , 32,
16776 0xfc0003ff, 0x20000240, 0 , 0,
16777 0x0 }, /* _POOL32A0~*(72) */
16778 { reserved_block
, 0 , 0 , 32,
16779 0xfc0003ff, 0x20000248, 0 , 0,
16780 0x0 }, /* _POOL32A0~*(73) */
16781 { instruction
, 0 , 0 , 32,
16782 0xfc0003ff, 0x20000250, &NMD::AND_32_
, 0,
16783 0x0 }, /* AND[32] */
16784 { reserved_block
, 0 , 0 , 32,
16785 0xfc0003ff, 0x20000258, 0 , 0,
16786 0x0 }, /* _POOL32A0~*(75) */
16787 { reserved_block
, 0 , 0 , 32,
16788 0xfc0003ff, 0x20000260, 0 , 0,
16789 0x0 }, /* _POOL32A0~*(76) */
16790 { instruction
, 0 , 0 , 32,
16791 0xfc0003ff, 0x20000268, &NMD::YIELD
, 0,
16793 { instruction
, 0 , 0 , 32,
16794 0xfc0003ff, 0x20000270, &NMD::MTTR
, 0,
16796 { instruction
, 0 , 0 , 32,
16797 0xfc0003ff, 0x20000278, &NMD::MTHTR
, 0,
16799 { reserved_block
, 0 , 0 , 32,
16800 0xfc0003ff, 0x20000280, 0 , 0,
16801 0x0 }, /* _POOL32A0~*(80) */
16802 { reserved_block
, 0 , 0 , 32,
16803 0xfc0003ff, 0x20000288, 0 , 0,
16804 0x0 }, /* _POOL32A0~*(81) */
16805 { instruction
, 0 , 0 , 32,
16806 0xfc0003ff, 0x20000290, &NMD::OR_32_
, 0,
16807 0x0 }, /* OR[32] */
16808 { reserved_block
, 0 , 0 , 32,
16809 0xfc0003ff, 0x20000298, 0 , 0,
16810 0x0 }, /* _POOL32A0~*(83) */
16811 { reserved_block
, 0 , 0 , 32,
16812 0xfc0003ff, 0x200002a0, 0 , 0,
16813 0x0 }, /* _POOL32A0~*(84) */
16814 { reserved_block
, 0 , 0 , 32,
16815 0xfc0003ff, 0x200002a8, 0 , 0,
16816 0x0 }, /* _POOL32A0~*(85) */
16817 { pool
, P_MT_VPE
, 8 , 32,
16818 0xfc0003ff, 0x200002b0, 0 , 0,
16819 0x0 }, /* P.MT_VPE */
16820 { reserved_block
, 0 , 0 , 32,
16821 0xfc0003ff, 0x200002b8, 0 , 0,
16822 0x0 }, /* _POOL32A0~*(87) */
16823 { reserved_block
, 0 , 0 , 32,
16824 0xfc0003ff, 0x200002c0, 0 , 0,
16825 0x0 }, /* _POOL32A0~*(88) */
16826 { reserved_block
, 0 , 0 , 32,
16827 0xfc0003ff, 0x200002c8, 0 , 0,
16828 0x0 }, /* _POOL32A0~*(89) */
16829 { instruction
, 0 , 0 , 32,
16830 0xfc0003ff, 0x200002d0, &NMD::NOR
, 0,
16832 { reserved_block
, 0 , 0 , 32,
16833 0xfc0003ff, 0x200002d8, 0 , 0,
16834 0x0 }, /* _POOL32A0~*(91) */
16835 { reserved_block
, 0 , 0 , 32,
16836 0xfc0003ff, 0x200002e0, 0 , 0,
16837 0x0 }, /* _POOL32A0~*(92) */
16838 { reserved_block
, 0 , 0 , 32,
16839 0xfc0003ff, 0x200002e8, 0 , 0,
16840 0x0 }, /* _POOL32A0~*(93) */
16841 { reserved_block
, 0 , 0 , 32,
16842 0xfc0003ff, 0x200002f0, 0 , 0,
16843 0x0 }, /* _POOL32A0~*(94) */
16844 { reserved_block
, 0 , 0 , 32,
16845 0xfc0003ff, 0x200002f8, 0 , 0,
16846 0x0 }, /* _POOL32A0~*(95) */
16847 { reserved_block
, 0 , 0 , 32,
16848 0xfc0003ff, 0x20000300, 0 , 0,
16849 0x0 }, /* _POOL32A0~*(96) */
16850 { reserved_block
, 0 , 0 , 32,
16851 0xfc0003ff, 0x20000308, 0 , 0,
16852 0x0 }, /* _POOL32A0~*(97) */
16853 { instruction
, 0 , 0 , 32,
16854 0xfc0003ff, 0x20000310, &NMD::XOR_32_
, 0,
16855 0x0 }, /* XOR[32] */
16856 { reserved_block
, 0 , 0 , 32,
16857 0xfc0003ff, 0x20000318, 0 , 0,
16858 0x0 }, /* _POOL32A0~*(99) */
16859 { reserved_block
, 0 , 0 , 32,
16860 0xfc0003ff, 0x20000320, 0 , 0,
16861 0x0 }, /* _POOL32A0~*(100) */
16862 { reserved_block
, 0 , 0 , 32,
16863 0xfc0003ff, 0x20000328, 0 , 0,
16864 0x0 }, /* _POOL32A0~*(101) */
16865 { reserved_block
, 0 , 0 , 32,
16866 0xfc0003ff, 0x20000330, 0 , 0,
16867 0x0 }, /* _POOL32A0~*(102) */
16868 { reserved_block
, 0 , 0 , 32,
16869 0xfc0003ff, 0x20000338, 0 , 0,
16870 0x0 }, /* _POOL32A0~*(103) */
16871 { reserved_block
, 0 , 0 , 32,
16872 0xfc0003ff, 0x20000340, 0 , 0,
16873 0x0 }, /* _POOL32A0~*(104) */
16874 { reserved_block
, 0 , 0 , 32,
16875 0xfc0003ff, 0x20000348, 0 , 0,
16876 0x0 }, /* _POOL32A0~*(105) */
16877 { instruction
, 0 , 0 , 32,
16878 0xfc0003ff, 0x20000350, &NMD::SLT
, 0,
16880 { reserved_block
, 0 , 0 , 32,
16881 0xfc0003ff, 0x20000358, 0 , 0,
16882 0x0 }, /* _POOL32A0~*(107) */
16883 { reserved_block
, 0 , 0 , 32,
16884 0xfc0003ff, 0x20000360, 0 , 0,
16885 0x0 }, /* _POOL32A0~*(108) */
16886 { reserved_block
, 0 , 0 , 32,
16887 0xfc0003ff, 0x20000368, 0 , 0,
16888 0x0 }, /* _POOL32A0~*(109) */
16889 { reserved_block
, 0 , 0 , 32,
16890 0xfc0003ff, 0x20000370, 0 , 0,
16891 0x0 }, /* _POOL32A0~*(110) */
16892 { reserved_block
, 0 , 0 , 32,
16893 0xfc0003ff, 0x20000378, 0 , 0,
16894 0x0 }, /* _POOL32A0~*(111) */
16895 { reserved_block
, 0 , 0 , 32,
16896 0xfc0003ff, 0x20000380, 0 , 0,
16897 0x0 }, /* _POOL32A0~*(112) */
16898 { reserved_block
, 0 , 0 , 32,
16899 0xfc0003ff, 0x20000388, 0 , 0,
16900 0x0 }, /* _POOL32A0~*(113) */
16901 { pool
, P_SLTU
, 2 , 32,
16902 0xfc0003ff, 0x20000390, 0 , 0,
16903 0x0 }, /* P.SLTU */
16904 { reserved_block
, 0 , 0 , 32,
16905 0xfc0003ff, 0x20000398, 0 , 0,
16906 0x0 }, /* _POOL32A0~*(115) */
16907 { reserved_block
, 0 , 0 , 32,
16908 0xfc0003ff, 0x200003a0, 0 , 0,
16909 0x0 }, /* _POOL32A0~*(116) */
16910 { reserved_block
, 0 , 0 , 32,
16911 0xfc0003ff, 0x200003a8, 0 , 0,
16912 0x0 }, /* _POOL32A0~*(117) */
16913 { reserved_block
, 0 , 0 , 32,
16914 0xfc0003ff, 0x200003b0, 0 , 0,
16915 0x0 }, /* _POOL32A0~*(118) */
16916 { reserved_block
, 0 , 0 , 32,
16917 0xfc0003ff, 0x200003b8, 0 , 0,
16918 0x0 }, /* _POOL32A0~*(119) */
16919 { reserved_block
, 0 , 0 , 32,
16920 0xfc0003ff, 0x200003c0, 0 , 0,
16921 0x0 }, /* _POOL32A0~*(120) */
16922 { reserved_block
, 0 , 0 , 32,
16923 0xfc0003ff, 0x200003c8, 0 , 0,
16924 0x0 }, /* _POOL32A0~*(121) */
16925 { instruction
, 0 , 0 , 32,
16926 0xfc0003ff, 0x200003d0, &NMD::SOV
, 0,
16928 { reserved_block
, 0 , 0 , 32,
16929 0xfc0003ff, 0x200003d8, 0 , 0,
16930 0x0 }, /* _POOL32A0~*(123) */
16931 { reserved_block
, 0 , 0 , 32,
16932 0xfc0003ff, 0x200003e0, 0 , 0,
16933 0x0 }, /* _POOL32A0~*(124) */
16934 { reserved_block
, 0 , 0 , 32,
16935 0xfc0003ff, 0x200003e8, 0 , 0,
16936 0x0 }, /* _POOL32A0~*(125) */
16937 { reserved_block
, 0 , 0 , 32,
16938 0xfc0003ff, 0x200003f0, 0 , 0,
16939 0x0 }, /* _POOL32A0~*(126) */
16940 { reserved_block
, 0 , 0 , 32,
16941 0xfc0003ff, 0x200003f8, 0 , 0,
16942 0x0 }, /* _POOL32A0~*(127) */
16946 NMD::Pool
NMD::ADDQ__S__PH
[2] = {
16947 { instruction
, 0 , 0 , 32,
16948 0xfc0007ff, 0x2000000d, &NMD::ADDQ_PH
, 0,
16949 DSP_
}, /* ADDQ.PH */
16950 { instruction
, 0 , 0 , 32,
16951 0xfc0007ff, 0x2000040d, &NMD::ADDQ_S_PH
, 0,
16952 DSP_
}, /* ADDQ_S.PH */
16956 NMD::Pool
NMD::MUL__S__PH
[2] = {
16957 { instruction
, 0 , 0 , 32,
16958 0xfc0007ff, 0x2000002d, &NMD::MUL_PH
, 0,
16959 DSP_
}, /* MUL.PH */
16960 { instruction
, 0 , 0 , 32,
16961 0xfc0007ff, 0x2000042d, &NMD::MUL_S_PH
, 0,
16962 DSP_
}, /* MUL_S.PH */
16966 NMD::Pool
NMD::ADDQH__R__PH
[2] = {
16967 { instruction
, 0 , 0 , 32,
16968 0xfc0007ff, 0x2000004d, &NMD::ADDQH_PH
, 0,
16969 DSP_
}, /* ADDQH.PH */
16970 { instruction
, 0 , 0 , 32,
16971 0xfc0007ff, 0x2000044d, &NMD::ADDQH_R_PH
, 0,
16972 DSP_
}, /* ADDQH_R.PH */
16976 NMD::Pool
NMD::ADDQH__R__W
[2] = {
16977 { instruction
, 0 , 0 , 32,
16978 0xfc0007ff, 0x2000008d, &NMD::ADDQH_W
, 0,
16979 DSP_
}, /* ADDQH.W */
16980 { instruction
, 0 , 0 , 32,
16981 0xfc0007ff, 0x2000048d, &NMD::ADDQH_R_W
, 0,
16982 DSP_
}, /* ADDQH_R.W */
16986 NMD::Pool
NMD::ADDU__S__QB
[2] = {
16987 { instruction
, 0 , 0 , 32,
16988 0xfc0007ff, 0x200000cd, &NMD::ADDU_QB
, 0,
16989 DSP_
}, /* ADDU.QB */
16990 { instruction
, 0 , 0 , 32,
16991 0xfc0007ff, 0x200004cd, &NMD::ADDU_S_QB
, 0,
16992 DSP_
}, /* ADDU_S.QB */
16996 NMD::Pool
NMD::ADDU__S__PH
[2] = {
16997 { instruction
, 0 , 0 , 32,
16998 0xfc0007ff, 0x2000010d, &NMD::ADDU_PH
, 0,
16999 DSP_
}, /* ADDU.PH */
17000 { instruction
, 0 , 0 , 32,
17001 0xfc0007ff, 0x2000050d, &NMD::ADDU_S_PH
, 0,
17002 DSP_
}, /* ADDU_S.PH */
17006 NMD::Pool
NMD::ADDUH__R__QB
[2] = {
17007 { instruction
, 0 , 0 , 32,
17008 0xfc0007ff, 0x2000014d, &NMD::ADDUH_QB
, 0,
17009 DSP_
}, /* ADDUH.QB */
17010 { instruction
, 0 , 0 , 32,
17011 0xfc0007ff, 0x2000054d, &NMD::ADDUH_R_QB
, 0,
17012 DSP_
}, /* ADDUH_R.QB */
17016 NMD::Pool
NMD::SHRAV__R__PH
[2] = {
17017 { instruction
, 0 , 0 , 32,
17018 0xfc0007ff, 0x2000018d, &NMD::SHRAV_PH
, 0,
17019 DSP_
}, /* SHRAV.PH */
17020 { instruction
, 0 , 0 , 32,
17021 0xfc0007ff, 0x2000058d, &NMD::SHRAV_R_PH
, 0,
17022 DSP_
}, /* SHRAV_R.PH */
17026 NMD::Pool
NMD::SHRAV__R__QB
[2] = {
17027 { instruction
, 0 , 0 , 32,
17028 0xfc0007ff, 0x200001cd, &NMD::SHRAV_QB
, 0,
17029 DSP_
}, /* SHRAV.QB */
17030 { instruction
, 0 , 0 , 32,
17031 0xfc0007ff, 0x200005cd, &NMD::SHRAV_R_QB
, 0,
17032 DSP_
}, /* SHRAV_R.QB */
17036 NMD::Pool
NMD::SUBQ__S__PH
[2] = {
17037 { instruction
, 0 , 0 , 32,
17038 0xfc0007ff, 0x2000020d, &NMD::SUBQ_PH
, 0,
17039 DSP_
}, /* SUBQ.PH */
17040 { instruction
, 0 , 0 , 32,
17041 0xfc0007ff, 0x2000060d, &NMD::SUBQ_S_PH
, 0,
17042 DSP_
}, /* SUBQ_S.PH */
17046 NMD::Pool
NMD::SUBQH__R__PH
[2] = {
17047 { instruction
, 0 , 0 , 32,
17048 0xfc0007ff, 0x2000024d, &NMD::SUBQH_PH
, 0,
17049 DSP_
}, /* SUBQH.PH */
17050 { instruction
, 0 , 0 , 32,
17051 0xfc0007ff, 0x2000064d, &NMD::SUBQH_R_PH
, 0,
17052 DSP_
}, /* SUBQH_R.PH */
17056 NMD::Pool
NMD::SUBQH__R__W
[2] = {
17057 { instruction
, 0 , 0 , 32,
17058 0xfc0007ff, 0x2000028d, &NMD::SUBQH_W
, 0,
17059 DSP_
}, /* SUBQH.W */
17060 { instruction
, 0 , 0 , 32,
17061 0xfc0007ff, 0x2000068d, &NMD::SUBQH_R_W
, 0,
17062 DSP_
}, /* SUBQH_R.W */
17066 NMD::Pool
NMD::SUBU__S__QB
[2] = {
17067 { instruction
, 0 , 0 , 32,
17068 0xfc0007ff, 0x200002cd, &NMD::SUBU_QB
, 0,
17069 DSP_
}, /* SUBU.QB */
17070 { instruction
, 0 , 0 , 32,
17071 0xfc0007ff, 0x200006cd, &NMD::SUBU_S_QB
, 0,
17072 DSP_
}, /* SUBU_S.QB */
17076 NMD::Pool
NMD::SUBU__S__PH
[2] = {
17077 { instruction
, 0 , 0 , 32,
17078 0xfc0007ff, 0x2000030d, &NMD::SUBU_PH
, 0,
17079 DSP_
}, /* SUBU.PH */
17080 { instruction
, 0 , 0 , 32,
17081 0xfc0007ff, 0x2000070d, &NMD::SUBU_S_PH
, 0,
17082 DSP_
}, /* SUBU_S.PH */
17086 NMD::Pool
NMD::SHRA__R__PH
[2] = {
17087 { instruction
, 0 , 0 , 32,
17088 0xfc0007ff, 0x20000335, &NMD::SHRA_PH
, 0,
17089 DSP_
}, /* SHRA.PH */
17090 { instruction
, 0 , 0 , 32,
17091 0xfc0007ff, 0x20000735, &NMD::SHRA_R_PH
, 0,
17092 DSP_
}, /* SHRA_R.PH */
17096 NMD::Pool
NMD::SUBUH__R__QB
[2] = {
17097 { instruction
, 0 , 0 , 32,
17098 0xfc0007ff, 0x2000034d, &NMD::SUBUH_QB
, 0,
17099 DSP_
}, /* SUBUH.QB */
17100 { instruction
, 0 , 0 , 32,
17101 0xfc0007ff, 0x2000074d, &NMD::SUBUH_R_QB
, 0,
17102 DSP_
}, /* SUBUH_R.QB */
17106 NMD::Pool
NMD::SHLLV__S__PH
[2] = {
17107 { instruction
, 0 , 0 , 32,
17108 0xfc0007ff, 0x2000038d, &NMD::SHLLV_PH
, 0,
17109 DSP_
}, /* SHLLV.PH */
17110 { instruction
, 0 , 0 , 32,
17111 0xfc0007ff, 0x2000078d, &NMD::SHLLV_S_PH
, 0,
17112 DSP_
}, /* SHLLV_S.PH */
17116 NMD::Pool
NMD::SHLL__S__PH
[4] = {
17117 { instruction
, 0 , 0 , 32,
17118 0xfc000fff, 0x200003b5, &NMD::SHLL_PH
, 0,
17119 DSP_
}, /* SHLL.PH */
17120 { reserved_block
, 0 , 0 , 32,
17121 0xfc000fff, 0x200007b5, 0 , 0,
17122 0x0 }, /* SHLL[_S].PH~*(1) */
17123 { instruction
, 0 , 0 , 32,
17124 0xfc000fff, 0x20000bb5, &NMD::SHLL_S_PH
, 0,
17125 DSP_
}, /* SHLL_S.PH */
17126 { reserved_block
, 0 , 0 , 32,
17127 0xfc000fff, 0x20000fb5, 0 , 0,
17128 0x0 }, /* SHLL[_S].PH~*(3) */
17132 NMD::Pool
NMD::PRECR_SRA__R__PH_W
[2] = {
17133 { instruction
, 0 , 0 , 32,
17134 0xfc0007ff, 0x200003cd, &NMD::PRECR_SRA_PH_W
, 0,
17135 DSP_
}, /* PRECR_SRA.PH.W */
17136 { instruction
, 0 , 0 , 32,
17137 0xfc0007ff, 0x200007cd, &NMD::PRECR_SRA_R_PH_W
, 0,
17138 DSP_
}, /* PRECR_SRA_R.PH.W */
17142 NMD::Pool
NMD::_POOL32A5
[128] = {
17143 { instruction
, 0 , 0 , 32,
17144 0xfc0003ff, 0x20000005, &NMD::CMP_EQ_PH
, 0,
17145 DSP_
}, /* CMP.EQ.PH */
17146 { pool
, ADDQ__S__PH
, 2 , 32,
17147 0xfc0003ff, 0x2000000d, 0 , 0,
17148 0x0 }, /* ADDQ[_S].PH */
17149 { reserved_block
, 0 , 0 , 32,
17150 0xfc0003ff, 0x20000015, 0 , 0,
17151 0x0 }, /* _POOL32A5~*(2) */
17152 { instruction
, 0 , 0 , 32,
17153 0xfc0003ff, 0x2000001d, &NMD::SHILO
, 0,
17154 DSP_
}, /* SHILO */
17155 { instruction
, 0 , 0 , 32,
17156 0xfc0003ff, 0x20000025, &NMD::MULEQ_S_W_PHL
, 0,
17157 DSP_
}, /* MULEQ_S.W.PHL */
17158 { pool
, MUL__S__PH
, 2 , 32,
17159 0xfc0003ff, 0x2000002d, 0 , 0,
17160 0x0 }, /* MUL[_S].PH */
17161 { reserved_block
, 0 , 0 , 32,
17162 0xfc0003ff, 0x20000035, 0 , 0,
17163 0x0 }, /* _POOL32A5~*(6) */
17164 { instruction
, 0 , 0 , 32,
17165 0xfc0003ff, 0x2000003d, &NMD::REPL_PH
, 0,
17166 DSP_
}, /* REPL.PH */
17167 { instruction
, 0 , 0 , 32,
17168 0xfc0003ff, 0x20000045, &NMD::CMP_LT_PH
, 0,
17169 DSP_
}, /* CMP.LT.PH */
17170 { pool
, ADDQH__R__PH
, 2 , 32,
17171 0xfc0003ff, 0x2000004d, 0 , 0,
17172 0x0 }, /* ADDQH[_R].PH */
17173 { reserved_block
, 0 , 0 , 32,
17174 0xfc0003ff, 0x20000055, 0 , 0,
17175 0x0 }, /* _POOL32A5~*(10) */
17176 { reserved_block
, 0 , 0 , 32,
17177 0xfc0003ff, 0x2000005d, 0 , 0,
17178 0x0 }, /* _POOL32A5~*(11) */
17179 { instruction
, 0 , 0 , 32,
17180 0xfc0003ff, 0x20000065, &NMD::MULEQ_S_W_PHR
, 0,
17181 DSP_
}, /* MULEQ_S.W.PHR */
17182 { instruction
, 0 , 0 , 32,
17183 0xfc0003ff, 0x2000006d, &NMD::PRECR_QB_PH
, 0,
17184 DSP_
}, /* PRECR.QB.PH */
17185 { reserved_block
, 0 , 0 , 32,
17186 0xfc0003ff, 0x20000075, 0 , 0,
17187 0x0 }, /* _POOL32A5~*(14) */
17188 { reserved_block
, 0 , 0 , 32,
17189 0xfc0003ff, 0x2000007d, 0 , 0,
17190 0x0 }, /* _POOL32A5~*(15) */
17191 { instruction
, 0 , 0 , 32,
17192 0xfc0003ff, 0x20000085, &NMD::CMP_LE_PH
, 0,
17193 DSP_
}, /* CMP.LE.PH */
17194 { pool
, ADDQH__R__W
, 2 , 32,
17195 0xfc0003ff, 0x2000008d, 0 , 0,
17196 0x0 }, /* ADDQH[_R].W */
17197 { instruction
, 0 , 0 , 32,
17198 0xfc0003ff, 0x20000095, &NMD::MULEU_S_PH_QBL
, 0,
17199 DSP_
}, /* MULEU_S.PH.QBL */
17200 { reserved_block
, 0 , 0 , 32,
17201 0xfc0003ff, 0x2000009d, 0 , 0,
17202 0x0 }, /* _POOL32A5~*(19) */
17203 { reserved_block
, 0 , 0 , 32,
17204 0xfc0003ff, 0x200000a5, 0 , 0,
17205 0x0 }, /* _POOL32A5~*(20) */
17206 { instruction
, 0 , 0 , 32,
17207 0xfc0003ff, 0x200000ad, &NMD::PRECRQ_QB_PH
, 0,
17208 DSP_
}, /* PRECRQ.QB.PH */
17209 { reserved_block
, 0 , 0 , 32,
17210 0xfc0003ff, 0x200000b5, 0 , 0,
17211 0x0 }, /* _POOL32A5~*(22) */
17212 { reserved_block
, 0 , 0 , 32,
17213 0xfc0003ff, 0x200000bd, 0 , 0,
17214 0x0 }, /* _POOL32A5~*(23) */
17215 { instruction
, 0 , 0 , 32,
17216 0xfc0003ff, 0x200000c5, &NMD::CMPGU_EQ_QB
, 0,
17217 DSP_
}, /* CMPGU.EQ.QB */
17218 { pool
, ADDU__S__QB
, 2 , 32,
17219 0xfc0003ff, 0x200000cd, 0 , 0,
17220 0x0 }, /* ADDU[_S].QB */
17221 { instruction
, 0 , 0 , 32,
17222 0xfc0003ff, 0x200000d5, &NMD::MULEU_S_PH_QBR
, 0,
17223 DSP_
}, /* MULEU_S.PH.QBR */
17224 { reserved_block
, 0 , 0 , 32,
17225 0xfc0003ff, 0x200000dd, 0 , 0,
17226 0x0 }, /* _POOL32A5~*(27) */
17227 { reserved_block
, 0 , 0 , 32,
17228 0xfc0003ff, 0x200000e5, 0 , 0,
17229 0x0 }, /* _POOL32A5~*(28) */
17230 { instruction
, 0 , 0 , 32,
17231 0xfc0003ff, 0x200000ed, &NMD::PRECRQ_PH_W
, 0,
17232 DSP_
}, /* PRECRQ.PH.W */
17233 { reserved_block
, 0 , 0 , 32,
17234 0xfc0003ff, 0x200000f5, 0 , 0,
17235 0x0 }, /* _POOL32A5~*(30) */
17236 { reserved_block
, 0 , 0 , 32,
17237 0xfc0003ff, 0x200000fd, 0 , 0,
17238 0x0 }, /* _POOL32A5~*(31) */
17239 { instruction
, 0 , 0 , 32,
17240 0xfc0003ff, 0x20000105, &NMD::CMPGU_LT_QB
, 0,
17241 DSP_
}, /* CMPGU.LT.QB */
17242 { pool
, ADDU__S__PH
, 2 , 32,
17243 0xfc0003ff, 0x2000010d, 0 , 0,
17244 0x0 }, /* ADDU[_S].PH */
17245 { instruction
, 0 , 0 , 32,
17246 0xfc0003ff, 0x20000115, &NMD::MULQ_RS_PH
, 0,
17247 DSP_
}, /* MULQ_RS.PH */
17248 { reserved_block
, 0 , 0 , 32,
17249 0xfc0003ff, 0x2000011d, 0 , 0,
17250 0x0 }, /* _POOL32A5~*(35) */
17251 { reserved_block
, 0 , 0 , 32,
17252 0xfc0003ff, 0x20000125, 0 , 0,
17253 0x0 }, /* _POOL32A5~*(36) */
17254 { instruction
, 0 , 0 , 32,
17255 0xfc0003ff, 0x2000012d, &NMD::PRECRQ_RS_PH_W
, 0,
17256 DSP_
}, /* PRECRQ_RS.PH.W */
17257 { reserved_block
, 0 , 0 , 32,
17258 0xfc0003ff, 0x20000135, 0 , 0,
17259 0x0 }, /* _POOL32A5~*(38) */
17260 { reserved_block
, 0 , 0 , 32,
17261 0xfc0003ff, 0x2000013d, 0 , 0,
17262 0x0 }, /* _POOL32A5~*(39) */
17263 { instruction
, 0 , 0 , 32,
17264 0xfc0003ff, 0x20000145, &NMD::CMPGU_LE_QB
, 0,
17265 DSP_
}, /* CMPGU.LE.QB */
17266 { pool
, ADDUH__R__QB
, 2 , 32,
17267 0xfc0003ff, 0x2000014d, 0 , 0,
17268 0x0 }, /* ADDUH[_R].QB */
17269 { instruction
, 0 , 0 , 32,
17270 0xfc0003ff, 0x20000155, &NMD::MULQ_S_PH
, 0,
17271 DSP_
}, /* MULQ_S.PH */
17272 { reserved_block
, 0 , 0 , 32,
17273 0xfc0003ff, 0x2000015d, 0 , 0,
17274 0x0 }, /* _POOL32A5~*(43) */
17275 { reserved_block
, 0 , 0 , 32,
17276 0xfc0003ff, 0x20000165, 0 , 0,
17277 0x0 }, /* _POOL32A5~*(44) */
17278 { instruction
, 0 , 0 , 32,
17279 0xfc0003ff, 0x2000016d, &NMD::PRECRQU_S_QB_PH
, 0,
17280 DSP_
}, /* PRECRQU_S.QB.PH */
17281 { reserved_block
, 0 , 0 , 32,
17282 0xfc0003ff, 0x20000175, 0 , 0,
17283 0x0 }, /* _POOL32A5~*(46) */
17284 { reserved_block
, 0 , 0 , 32,
17285 0xfc0003ff, 0x2000017d, 0 , 0,
17286 0x0 }, /* _POOL32A5~*(47) */
17287 { instruction
, 0 , 0 , 32,
17288 0xfc0003ff, 0x20000185, &NMD::CMPGDU_EQ_QB
, 0,
17289 DSP_
}, /* CMPGDU.EQ.QB */
17290 { pool
, SHRAV__R__PH
, 2 , 32,
17291 0xfc0003ff, 0x2000018d, 0 , 0,
17292 0x0 }, /* SHRAV[_R].PH */
17293 { instruction
, 0 , 0 , 32,
17294 0xfc0003ff, 0x20000195, &NMD::MULQ_RS_W
, 0,
17295 DSP_
}, /* MULQ_RS.W */
17296 { reserved_block
, 0 , 0 , 32,
17297 0xfc0003ff, 0x2000019d, 0 , 0,
17298 0x0 }, /* _POOL32A5~*(51) */
17299 { reserved_block
, 0 , 0 , 32,
17300 0xfc0003ff, 0x200001a5, 0 , 0,
17301 0x0 }, /* _POOL32A5~*(52) */
17302 { instruction
, 0 , 0 , 32,
17303 0xfc0003ff, 0x200001ad, &NMD::PACKRL_PH
, 0,
17304 DSP_
}, /* PACKRL.PH */
17305 { reserved_block
, 0 , 0 , 32,
17306 0xfc0003ff, 0x200001b5, 0 , 0,
17307 0x0 }, /* _POOL32A5~*(54) */
17308 { reserved_block
, 0 , 0 , 32,
17309 0xfc0003ff, 0x200001bd, 0 , 0,
17310 0x0 }, /* _POOL32A5~*(55) */
17311 { instruction
, 0 , 0 , 32,
17312 0xfc0003ff, 0x200001c5, &NMD::CMPGDU_LT_QB
, 0,
17313 DSP_
}, /* CMPGDU.LT.QB */
17314 { pool
, SHRAV__R__QB
, 2 , 32,
17315 0xfc0003ff, 0x200001cd, 0 , 0,
17316 0x0 }, /* SHRAV[_R].QB */
17317 { instruction
, 0 , 0 , 32,
17318 0xfc0003ff, 0x200001d5, &NMD::MULQ_S_W
, 0,
17319 DSP_
}, /* MULQ_S.W */
17320 { reserved_block
, 0 , 0 , 32,
17321 0xfc0003ff, 0x200001dd, 0 , 0,
17322 0x0 }, /* _POOL32A5~*(59) */
17323 { reserved_block
, 0 , 0 , 32,
17324 0xfc0003ff, 0x200001e5, 0 , 0,
17325 0x0 }, /* _POOL32A5~*(60) */
17326 { instruction
, 0 , 0 , 32,
17327 0xfc0003ff, 0x200001ed, &NMD::PICK_QB
, 0,
17328 DSP_
}, /* PICK.QB */
17329 { reserved_block
, 0 , 0 , 32,
17330 0xfc0003ff, 0x200001f5, 0 , 0,
17331 0x0 }, /* _POOL32A5~*(62) */
17332 { reserved_block
, 0 , 0 , 32,
17333 0xfc0003ff, 0x200001fd, 0 , 0,
17334 0x0 }, /* _POOL32A5~*(63) */
17335 { instruction
, 0 , 0 , 32,
17336 0xfc0003ff, 0x20000205, &NMD::CMPGDU_LE_QB
, 0,
17337 DSP_
}, /* CMPGDU.LE.QB */
17338 { pool
, SUBQ__S__PH
, 2 , 32,
17339 0xfc0003ff, 0x2000020d, 0 , 0,
17340 0x0 }, /* SUBQ[_S].PH */
17341 { instruction
, 0 , 0 , 32,
17342 0xfc0003ff, 0x20000215, &NMD::APPEND
, 0,
17343 DSP_
}, /* APPEND */
17344 { reserved_block
, 0 , 0 , 32,
17345 0xfc0003ff, 0x2000021d, 0 , 0,
17346 0x0 }, /* _POOL32A5~*(67) */
17347 { reserved_block
, 0 , 0 , 32,
17348 0xfc0003ff, 0x20000225, 0 , 0,
17349 0x0 }, /* _POOL32A5~*(68) */
17350 { instruction
, 0 , 0 , 32,
17351 0xfc0003ff, 0x2000022d, &NMD::PICK_PH
, 0,
17352 DSP_
}, /* PICK.PH */
17353 { reserved_block
, 0 , 0 , 32,
17354 0xfc0003ff, 0x20000235, 0 , 0,
17355 0x0 }, /* _POOL32A5~*(70) */
17356 { reserved_block
, 0 , 0 , 32,
17357 0xfc0003ff, 0x2000023d, 0 , 0,
17358 0x0 }, /* _POOL32A5~*(71) */
17359 { instruction
, 0 , 0 , 32,
17360 0xfc0003ff, 0x20000245, &NMD::CMPU_EQ_QB
, 0,
17361 DSP_
}, /* CMPU.EQ.QB */
17362 { pool
, SUBQH__R__PH
, 2 , 32,
17363 0xfc0003ff, 0x2000024d, 0 , 0,
17364 0x0 }, /* SUBQH[_R].PH */
17365 { instruction
, 0 , 0 , 32,
17366 0xfc0003ff, 0x20000255, &NMD::PREPEND
, 0,
17367 DSP_
}, /* PREPEND */
17368 { reserved_block
, 0 , 0 , 32,
17369 0xfc0003ff, 0x2000025d, 0 , 0,
17370 0x0 }, /* _POOL32A5~*(75) */
17371 { reserved_block
, 0 , 0 , 32,
17372 0xfc0003ff, 0x20000265, 0 , 0,
17373 0x0 }, /* _POOL32A5~*(76) */
17374 { reserved_block
, 0 , 0 , 32,
17375 0xfc0003ff, 0x2000026d, 0 , 0,
17376 0x0 }, /* _POOL32A5~*(77) */
17377 { reserved_block
, 0 , 0 , 32,
17378 0xfc0003ff, 0x20000275, 0 , 0,
17379 0x0 }, /* _POOL32A5~*(78) */
17380 { reserved_block
, 0 , 0 , 32,
17381 0xfc0003ff, 0x2000027d, 0 , 0,
17382 0x0 }, /* _POOL32A5~*(79) */
17383 { instruction
, 0 , 0 , 32,
17384 0xfc0003ff, 0x20000285, &NMD::CMPU_LT_QB
, 0,
17385 DSP_
}, /* CMPU.LT.QB */
17386 { pool
, SUBQH__R__W
, 2 , 32,
17387 0xfc0003ff, 0x2000028d, 0 , 0,
17388 0x0 }, /* SUBQH[_R].W */
17389 { instruction
, 0 , 0 , 32,
17390 0xfc0003ff, 0x20000295, &NMD::MODSUB
, 0,
17391 DSP_
}, /* MODSUB */
17392 { reserved_block
, 0 , 0 , 32,
17393 0xfc0003ff, 0x2000029d, 0 , 0,
17394 0x0 }, /* _POOL32A5~*(83) */
17395 { reserved_block
, 0 , 0 , 32,
17396 0xfc0003ff, 0x200002a5, 0 , 0,
17397 0x0 }, /* _POOL32A5~*(84) */
17398 { reserved_block
, 0 , 0 , 32,
17399 0xfc0003ff, 0x200002ad, 0 , 0,
17400 0x0 }, /* _POOL32A5~*(85) */
17401 { reserved_block
, 0 , 0 , 32,
17402 0xfc0003ff, 0x200002b5, 0 , 0,
17403 0x0 }, /* _POOL32A5~*(86) */
17404 { reserved_block
, 0 , 0 , 32,
17405 0xfc0003ff, 0x200002bd, 0 , 0,
17406 0x0 }, /* _POOL32A5~*(87) */
17407 { instruction
, 0 , 0 , 32,
17408 0xfc0003ff, 0x200002c5, &NMD::CMPU_LE_QB
, 0,
17409 DSP_
}, /* CMPU.LE.QB */
17410 { pool
, SUBU__S__QB
, 2 , 32,
17411 0xfc0003ff, 0x200002cd, 0 , 0,
17412 0x0 }, /* SUBU[_S].QB */
17413 { instruction
, 0 , 0 , 32,
17414 0xfc0003ff, 0x200002d5, &NMD::SHRAV_R_W
, 0,
17415 DSP_
}, /* SHRAV_R.W */
17416 { reserved_block
, 0 , 0 , 32,
17417 0xfc0003ff, 0x200002dd, 0 , 0,
17418 0x0 }, /* _POOL32A5~*(91) */
17419 { reserved_block
, 0 , 0 , 32,
17420 0xfc0003ff, 0x200002e5, 0 , 0,
17421 0x0 }, /* _POOL32A5~*(92) */
17422 { reserved_block
, 0 , 0 , 32,
17423 0xfc0003ff, 0x200002ed, 0 , 0,
17424 0x0 }, /* _POOL32A5~*(93) */
17425 { instruction
, 0 , 0 , 32,
17426 0xfc0003ff, 0x200002f5, &NMD::SHRA_R_W
, 0,
17427 DSP_
}, /* SHRA_R.W */
17428 { reserved_block
, 0 , 0 , 32,
17429 0xfc0003ff, 0x200002fd, 0 , 0,
17430 0x0 }, /* _POOL32A5~*(95) */
17431 { instruction
, 0 , 0 , 32,
17432 0xfc0003ff, 0x20000305, &NMD::ADDQ_S_W
, 0,
17433 DSP_
}, /* ADDQ_S.W */
17434 { pool
, SUBU__S__PH
, 2 , 32,
17435 0xfc0003ff, 0x2000030d, 0 , 0,
17436 0x0 }, /* SUBU[_S].PH */
17437 { instruction
, 0 , 0 , 32,
17438 0xfc0003ff, 0x20000315, &NMD::SHRLV_PH
, 0,
17439 DSP_
}, /* SHRLV.PH */
17440 { reserved_block
, 0 , 0 , 32,
17441 0xfc0003ff, 0x2000031d, 0 , 0,
17442 0x0 }, /* _POOL32A5~*(99) */
17443 { reserved_block
, 0 , 0 , 32,
17444 0xfc0003ff, 0x20000325, 0 , 0,
17445 0x0 }, /* _POOL32A5~*(100) */
17446 { reserved_block
, 0 , 0 , 32,
17447 0xfc0003ff, 0x2000032d, 0 , 0,
17448 0x0 }, /* _POOL32A5~*(101) */
17449 { pool
, SHRA__R__PH
, 2 , 32,
17450 0xfc0003ff, 0x20000335, 0 , 0,
17451 0x0 }, /* SHRA[_R].PH */
17452 { reserved_block
, 0 , 0 , 32,
17453 0xfc0003ff, 0x2000033d, 0 , 0,
17454 0x0 }, /* _POOL32A5~*(103) */
17455 { instruction
, 0 , 0 , 32,
17456 0xfc0003ff, 0x20000345, &NMD::SUBQ_S_W
, 0,
17457 DSP_
}, /* SUBQ_S.W */
17458 { pool
, SUBUH__R__QB
, 2 , 32,
17459 0xfc0003ff, 0x2000034d, 0 , 0,
17460 0x0 }, /* SUBUH[_R].QB */
17461 { instruction
, 0 , 0 , 32,
17462 0xfc0003ff, 0x20000355, &NMD::SHRLV_QB
, 0,
17463 DSP_
}, /* SHRLV.QB */
17464 { reserved_block
, 0 , 0 , 32,
17465 0xfc0003ff, 0x2000035d, 0 , 0,
17466 0x0 }, /* _POOL32A5~*(107) */
17467 { reserved_block
, 0 , 0 , 32,
17468 0xfc0003ff, 0x20000365, 0 , 0,
17469 0x0 }, /* _POOL32A5~*(108) */
17470 { reserved_block
, 0 , 0 , 32,
17471 0xfc0003ff, 0x2000036d, 0 , 0,
17472 0x0 }, /* _POOL32A5~*(109) */
17473 { reserved_block
, 0 , 0 , 32,
17474 0xfc0003ff, 0x20000375, 0 , 0,
17475 0x0 }, /* _POOL32A5~*(110) */
17476 { reserved_block
, 0 , 0 , 32,
17477 0xfc0003ff, 0x2000037d, 0 , 0,
17478 0x0 }, /* _POOL32A5~*(111) */
17479 { instruction
, 0 , 0 , 32,
17480 0xfc0003ff, 0x20000385, &NMD::ADDSC
, 0,
17481 DSP_
}, /* ADDSC */
17482 { pool
, SHLLV__S__PH
, 2 , 32,
17483 0xfc0003ff, 0x2000038d, 0 , 0,
17484 0x0 }, /* SHLLV[_S].PH */
17485 { instruction
, 0 , 0 , 32,
17486 0xfc0003ff, 0x20000395, &NMD::SHLLV_QB
, 0,
17487 DSP_
}, /* SHLLV.QB */
17488 { reserved_block
, 0 , 0 , 32,
17489 0xfc0003ff, 0x2000039d, 0 , 0,
17490 0x0 }, /* _POOL32A5~*(115) */
17491 { reserved_block
, 0 , 0 , 32,
17492 0xfc0003ff, 0x200003a5, 0 , 0,
17493 0x0 }, /* _POOL32A5~*(116) */
17494 { reserved_block
, 0 , 0 , 32,
17495 0xfc0003ff, 0x200003ad, 0 , 0,
17496 0x0 }, /* _POOL32A5~*(117) */
17497 { pool
, SHLL__S__PH
, 4 , 32,
17498 0xfc0003ff, 0x200003b5, 0 , 0,
17499 0x0 }, /* SHLL[_S].PH */
17500 { reserved_block
, 0 , 0 , 32,
17501 0xfc0003ff, 0x200003bd, 0 , 0,
17502 0x0 }, /* _POOL32A5~*(119) */
17503 { instruction
, 0 , 0 , 32,
17504 0xfc0003ff, 0x200003c5, &NMD::ADDWC
, 0,
17505 DSP_
}, /* ADDWC */
17506 { pool
, PRECR_SRA__R__PH_W
, 2 , 32,
17507 0xfc0003ff, 0x200003cd, 0 , 0,
17508 0x0 }, /* PRECR_SRA[_R].PH.W */
17509 { instruction
, 0 , 0 , 32,
17510 0xfc0003ff, 0x200003d5, &NMD::SHLLV_S_W
, 0,
17511 DSP_
}, /* SHLLV_S.W */
17512 { reserved_block
, 0 , 0 , 32,
17513 0xfc0003ff, 0x200003dd, 0 , 0,
17514 0x0 }, /* _POOL32A5~*(123) */
17515 { reserved_block
, 0 , 0 , 32,
17516 0xfc0003ff, 0x200003e5, 0 , 0,
17517 0x0 }, /* _POOL32A5~*(124) */
17518 { reserved_block
, 0 , 0 , 32,
17519 0xfc0003ff, 0x200003ed, 0 , 0,
17520 0x0 }, /* _POOL32A5~*(125) */
17521 { instruction
, 0 , 0 , 32,
17522 0xfc0003ff, 0x200003f5, &NMD::SHLL_S_W
, 0,
17523 DSP_
}, /* SHLL_S.W */
17524 { reserved_block
, 0 , 0 , 32,
17525 0xfc0003ff, 0x200003fd, 0 , 0,
17526 0x0 }, /* _POOL32A5~*(127) */
17530 NMD::Pool
NMD::PP_LSX
[16] = {
17531 { instruction
, 0 , 0 , 32,
17532 0xfc0007ff, 0x20000007, &NMD::LBX
, 0,
17534 { instruction
, 0 , 0 , 32,
17535 0xfc0007ff, 0x20000087, &NMD::SBX
, 0,
17537 { instruction
, 0 , 0 , 32,
17538 0xfc0007ff, 0x20000107, &NMD::LBUX
, 0,
17540 { reserved_block
, 0 , 0 , 32,
17541 0xfc0007ff, 0x20000187, 0 , 0,
17542 0x0 }, /* PP.LSX~*(3) */
17543 { instruction
, 0 , 0 , 32,
17544 0xfc0007ff, 0x20000207, &NMD::LHX
, 0,
17546 { instruction
, 0 , 0 , 32,
17547 0xfc0007ff, 0x20000287, &NMD::SHX
, 0,
17549 { instruction
, 0 , 0 , 32,
17550 0xfc0007ff, 0x20000307, &NMD::LHUX
, 0,
17552 { instruction
, 0 , 0 , 32,
17553 0xfc0007ff, 0x20000387, &NMD::LWUX
, 0,
17554 MIPS64_
}, /* LWUX */
17555 { instruction
, 0 , 0 , 32,
17556 0xfc0007ff, 0x20000407, &NMD::LWX
, 0,
17558 { instruction
, 0 , 0 , 32,
17559 0xfc0007ff, 0x20000487, &NMD::SWX
, 0,
17561 { instruction
, 0 , 0 , 32,
17562 0xfc0007ff, 0x20000507, &NMD::LWC1X
, 0,
17563 CP1_
}, /* LWC1X */
17564 { instruction
, 0 , 0 , 32,
17565 0xfc0007ff, 0x20000587, &NMD::SWC1X
, 0,
17566 CP1_
}, /* SWC1X */
17567 { instruction
, 0 , 0 , 32,
17568 0xfc0007ff, 0x20000607, &NMD::LDX
, 0,
17569 MIPS64_
}, /* LDX */
17570 { instruction
, 0 , 0 , 32,
17571 0xfc0007ff, 0x20000687, &NMD::SDX
, 0,
17572 MIPS64_
}, /* SDX */
17573 { instruction
, 0 , 0 , 32,
17574 0xfc0007ff, 0x20000707, &NMD::LDC1X
, 0,
17575 CP1_
}, /* LDC1X */
17576 { instruction
, 0 , 0 , 32,
17577 0xfc0007ff, 0x20000787, &NMD::SDC1X
, 0,
17578 CP1_
}, /* SDC1X */
17582 NMD::Pool
NMD::PP_LSXS
[16] = {
17583 { reserved_block
, 0 , 0 , 32,
17584 0xfc0007ff, 0x20000047, 0 , 0,
17585 0x0 }, /* PP.LSXS~*(0) */
17586 { reserved_block
, 0 , 0 , 32,
17587 0xfc0007ff, 0x200000c7, 0 , 0,
17588 0x0 }, /* PP.LSXS~*(1) */
17589 { reserved_block
, 0 , 0 , 32,
17590 0xfc0007ff, 0x20000147, 0 , 0,
17591 0x0 }, /* PP.LSXS~*(2) */
17592 { reserved_block
, 0 , 0 , 32,
17593 0xfc0007ff, 0x200001c7, 0 , 0,
17594 0x0 }, /* PP.LSXS~*(3) */
17595 { instruction
, 0 , 0 , 32,
17596 0xfc0007ff, 0x20000247, &NMD::LHXS
, 0,
17598 { instruction
, 0 , 0 , 32,
17599 0xfc0007ff, 0x200002c7, &NMD::SHXS
, 0,
17600 XMMS_
}, /* SHXS */
17601 { instruction
, 0 , 0 , 32,
17602 0xfc0007ff, 0x20000347, &NMD::LHUXS
, 0,
17604 { instruction
, 0 , 0 , 32,
17605 0xfc0007ff, 0x200003c7, &NMD::LWUXS
, 0,
17606 MIPS64_
}, /* LWUXS */
17607 { instruction
, 0 , 0 , 32,
17608 0xfc0007ff, 0x20000447, &NMD::LWXS_32_
, 0,
17609 0x0 }, /* LWXS[32] */
17610 { instruction
, 0 , 0 , 32,
17611 0xfc0007ff, 0x200004c7, &NMD::SWXS
, 0,
17612 XMMS_
}, /* SWXS */
17613 { instruction
, 0 , 0 , 32,
17614 0xfc0007ff, 0x20000547, &NMD::LWC1XS
, 0,
17615 CP1_
}, /* LWC1XS */
17616 { instruction
, 0 , 0 , 32,
17617 0xfc0007ff, 0x200005c7, &NMD::SWC1XS
, 0,
17618 CP1_
}, /* SWC1XS */
17619 { instruction
, 0 , 0 , 32,
17620 0xfc0007ff, 0x20000647, &NMD::LDXS
, 0,
17621 MIPS64_
}, /* LDXS */
17622 { instruction
, 0 , 0 , 32,
17623 0xfc0007ff, 0x200006c7, &NMD::SDXS
, 0,
17624 MIPS64_
}, /* SDXS */
17625 { instruction
, 0 , 0 , 32,
17626 0xfc0007ff, 0x20000747, &NMD::LDC1XS
, 0,
17627 CP1_
}, /* LDC1XS */
17628 { instruction
, 0 , 0 , 32,
17629 0xfc0007ff, 0x200007c7, &NMD::SDC1XS
, 0,
17630 CP1_
}, /* SDC1XS */
17634 NMD::Pool
NMD::P_LSX
[2] = {
17635 { pool
, PP_LSX
, 16 , 32,
17636 0xfc00007f, 0x20000007, 0 , 0,
17637 0x0 }, /* PP.LSX */
17638 { pool
, PP_LSXS
, 16 , 32,
17639 0xfc00007f, 0x20000047, 0 , 0,
17640 0x0 }, /* PP.LSXS */
17644 NMD::Pool
NMD::POOL32Axf_1_0
[4] = {
17645 { instruction
, 0 , 0 , 32,
17646 0xfc003fff, 0x2000007f, &NMD::MFHI_DSP_
, 0,
17647 DSP_
}, /* MFHI[DSP] */
17648 { instruction
, 0 , 0 , 32,
17649 0xfc003fff, 0x2000107f, &NMD::MFLO_DSP_
, 0,
17650 DSP_
}, /* MFLO[DSP] */
17651 { instruction
, 0 , 0 , 32,
17652 0xfc003fff, 0x2000207f, &NMD::MTHI_DSP_
, 0,
17653 DSP_
}, /* MTHI[DSP] */
17654 { instruction
, 0 , 0 , 32,
17655 0xfc003fff, 0x2000307f, &NMD::MTLO_DSP_
, 0,
17656 DSP_
}, /* MTLO[DSP] */
17660 NMD::Pool
NMD::POOL32Axf_1_1
[4] = {
17661 { instruction
, 0 , 0 , 32,
17662 0xfc003fff, 0x2000027f, &NMD::MTHLIP
, 0,
17663 DSP_
}, /* MTHLIP */
17664 { instruction
, 0 , 0 , 32,
17665 0xfc003fff, 0x2000127f, &NMD::SHILOV
, 0,
17666 DSP_
}, /* SHILOV */
17667 { reserved_block
, 0 , 0 , 32,
17668 0xfc003fff, 0x2000227f, 0 , 0,
17669 0x0 }, /* POOL32Axf_1_1~*(2) */
17670 { reserved_block
, 0 , 0 , 32,
17671 0xfc003fff, 0x2000327f, 0 , 0,
17672 0x0 }, /* POOL32Axf_1_1~*(3) */
17676 NMD::Pool
NMD::POOL32Axf_1_3
[4] = {
17677 { instruction
, 0 , 0 , 32,
17678 0xfc003fff, 0x2000067f, &NMD::RDDSP
, 0,
17679 DSP_
}, /* RDDSP */
17680 { instruction
, 0 , 0 , 32,
17681 0xfc003fff, 0x2000167f, &NMD::WRDSP
, 0,
17682 DSP_
}, /* WRDSP */
17683 { instruction
, 0 , 0 , 32,
17684 0xfc003fff, 0x2000267f, &NMD::EXTP
, 0,
17686 { instruction
, 0 , 0 , 32,
17687 0xfc003fff, 0x2000367f, &NMD::EXTPDP
, 0,
17688 DSP_
}, /* EXTPDP */
17692 NMD::Pool
NMD::POOL32Axf_1_4
[2] = {
17693 { instruction
, 0 , 0 , 32,
17694 0xfc001fff, 0x2000087f, &NMD::SHLL_QB
, 0,
17695 DSP_
}, /* SHLL.QB */
17696 { instruction
, 0 , 0 , 32,
17697 0xfc001fff, 0x2000187f, &NMD::SHRL_QB
, 0,
17698 DSP_
}, /* SHRL.QB */
17702 NMD::Pool
NMD::MAQ_S_A__W_PHR
[2] = {
17703 { instruction
, 0 , 0 , 32,
17704 0xfc003fff, 0x20000a7f, &NMD::MAQ_S_W_PHR
, 0,
17705 DSP_
}, /* MAQ_S.W.PHR */
17706 { instruction
, 0 , 0 , 32,
17707 0xfc003fff, 0x20002a7f, &NMD::MAQ_SA_W_PHR
, 0,
17708 DSP_
}, /* MAQ_SA.W.PHR */
17712 NMD::Pool
NMD::MAQ_S_A__W_PHL
[2] = {
17713 { instruction
, 0 , 0 , 32,
17714 0xfc003fff, 0x20001a7f, &NMD::MAQ_S_W_PHL
, 0,
17715 DSP_
}, /* MAQ_S.W.PHL */
17716 { instruction
, 0 , 0 , 32,
17717 0xfc003fff, 0x20003a7f, &NMD::MAQ_SA_W_PHL
, 0,
17718 DSP_
}, /* MAQ_SA.W.PHL */
17722 NMD::Pool
NMD::POOL32Axf_1_5
[2] = {
17723 { pool
, MAQ_S_A__W_PHR
, 2 , 32,
17724 0xfc001fff, 0x20000a7f, 0 , 0,
17725 0x0 }, /* MAQ_S[A].W.PHR */
17726 { pool
, MAQ_S_A__W_PHL
, 2 , 32,
17727 0xfc001fff, 0x20001a7f, 0 , 0,
17728 0x0 }, /* MAQ_S[A].W.PHL */
17732 NMD::Pool
NMD::POOL32Axf_1_7
[4] = {
17733 { instruction
, 0 , 0 , 32,
17734 0xfc003fff, 0x20000e7f, &NMD::EXTR_W
, 0,
17735 DSP_
}, /* EXTR.W */
17736 { instruction
, 0 , 0 , 32,
17737 0xfc003fff, 0x20001e7f, &NMD::EXTR_R_W
, 0,
17738 DSP_
}, /* EXTR_R.W */
17739 { instruction
, 0 , 0 , 32,
17740 0xfc003fff, 0x20002e7f, &NMD::EXTR_RS_W
, 0,
17741 DSP_
}, /* EXTR_RS.W */
17742 { instruction
, 0 , 0 , 32,
17743 0xfc003fff, 0x20003e7f, &NMD::EXTR_S_H
, 0,
17744 DSP_
}, /* EXTR_S.H */
17748 NMD::Pool
NMD::POOL32Axf_1
[8] = {
17749 { pool
, POOL32Axf_1_0
, 4 , 32,
17750 0xfc000fff, 0x2000007f, 0 , 0,
17751 0x0 }, /* POOL32Axf_1_0 */
17752 { pool
, POOL32Axf_1_1
, 4 , 32,
17753 0xfc000fff, 0x2000027f, 0 , 0,
17754 0x0 }, /* POOL32Axf_1_1 */
17755 { reserved_block
, 0 , 0 , 32,
17756 0xfc000fff, 0x2000047f, 0 , 0,
17757 0x0 }, /* POOL32Axf_1~*(2) */
17758 { pool
, POOL32Axf_1_3
, 4 , 32,
17759 0xfc000fff, 0x2000067f, 0 , 0,
17760 0x0 }, /* POOL32Axf_1_3 */
17761 { pool
, POOL32Axf_1_4
, 2 , 32,
17762 0xfc000fff, 0x2000087f, 0 , 0,
17763 0x0 }, /* POOL32Axf_1_4 */
17764 { pool
, POOL32Axf_1_5
, 2 , 32,
17765 0xfc000fff, 0x20000a7f, 0 , 0,
17766 0x0 }, /* POOL32Axf_1_5 */
17767 { reserved_block
, 0 , 0 , 32,
17768 0xfc000fff, 0x20000c7f, 0 , 0,
17769 0x0 }, /* POOL32Axf_1~*(6) */
17770 { pool
, POOL32Axf_1_7
, 4 , 32,
17771 0xfc000fff, 0x20000e7f, 0 , 0,
17772 0x0 }, /* POOL32Axf_1_7 */
17776 NMD::Pool
NMD::POOL32Axf_2_DSP__0_7
[8] = {
17777 { instruction
, 0 , 0 , 32,
17778 0xfc003fff, 0x200000bf, &NMD::DPA_W_PH
, 0,
17779 DSP_
}, /* DPA.W.PH */
17780 { instruction
, 0 , 0 , 32,
17781 0xfc003fff, 0x200002bf, &NMD::DPAQ_S_W_PH
, 0,
17782 DSP_
}, /* DPAQ_S.W.PH */
17783 { instruction
, 0 , 0 , 32,
17784 0xfc003fff, 0x200004bf, &NMD::DPS_W_PH
, 0,
17785 DSP_
}, /* DPS.W.PH */
17786 { instruction
, 0 , 0 , 32,
17787 0xfc003fff, 0x200006bf, &NMD::DPSQ_S_W_PH
, 0,
17788 DSP_
}, /* DPSQ_S.W.PH */
17789 { reserved_block
, 0 , 0 , 32,
17790 0xfc003fff, 0x200008bf, 0 , 0,
17791 0x0 }, /* POOL32Axf_2(DSP)_0_7~*(4) */
17792 { instruction
, 0 , 0 , 32,
17793 0xfc003fff, 0x20000abf, &NMD::MADD_DSP_
, 0,
17794 DSP_
}, /* MADD[DSP] */
17795 { instruction
, 0 , 0 , 32,
17796 0xfc003fff, 0x20000cbf, &NMD::MULT_DSP_
, 0,
17797 DSP_
}, /* MULT[DSP] */
17798 { instruction
, 0 , 0 , 32,
17799 0xfc003fff, 0x20000ebf, &NMD::EXTRV_W
, 0,
17800 DSP_
}, /* EXTRV.W */
17804 NMD::Pool
NMD::POOL32Axf_2_DSP__8_15
[8] = {
17805 { instruction
, 0 , 0 , 32,
17806 0xfc003fff, 0x200010bf, &NMD::DPAX_W_PH
, 0,
17807 DSP_
}, /* DPAX.W.PH */
17808 { instruction
, 0 , 0 , 32,
17809 0xfc003fff, 0x200012bf, &NMD::DPAQ_SA_L_W
, 0,
17810 DSP_
}, /* DPAQ_SA.L.W */
17811 { instruction
, 0 , 0 , 32,
17812 0xfc003fff, 0x200014bf, &NMD::DPSX_W_PH
, 0,
17813 DSP_
}, /* DPSX.W.PH */
17814 { instruction
, 0 , 0 , 32,
17815 0xfc003fff, 0x200016bf, &NMD::DPSQ_SA_L_W
, 0,
17816 DSP_
}, /* DPSQ_SA.L.W */
17817 { reserved_block
, 0 , 0 , 32,
17818 0xfc003fff, 0x200018bf, 0 , 0,
17819 0x0 }, /* POOL32Axf_2(DSP)_8_15~*(4) */
17820 { instruction
, 0 , 0 , 32,
17821 0xfc003fff, 0x20001abf, &NMD::MADDU_DSP_
, 0,
17822 DSP_
}, /* MADDU[DSP] */
17823 { instruction
, 0 , 0 , 32,
17824 0xfc003fff, 0x20001cbf, &NMD::MULTU_DSP_
, 0,
17825 DSP_
}, /* MULTU[DSP] */
17826 { instruction
, 0 , 0 , 32,
17827 0xfc003fff, 0x20001ebf, &NMD::EXTRV_R_W
, 0,
17828 DSP_
}, /* EXTRV_R.W */
17832 NMD::Pool
NMD::POOL32Axf_2_DSP__16_23
[8] = {
17833 { instruction
, 0 , 0 , 32,
17834 0xfc003fff, 0x200020bf, &NMD::DPAU_H_QBL
, 0,
17835 DSP_
}, /* DPAU.H.QBL */
17836 { instruction
, 0 , 0 , 32,
17837 0xfc003fff, 0x200022bf, &NMD::DPAQX_S_W_PH
, 0,
17838 DSP_
}, /* DPAQX_S.W.PH */
17839 { instruction
, 0 , 0 , 32,
17840 0xfc003fff, 0x200024bf, &NMD::DPSU_H_QBL
, 0,
17841 DSP_
}, /* DPSU.H.QBL */
17842 { instruction
, 0 , 0 , 32,
17843 0xfc003fff, 0x200026bf, &NMD::DPSQX_S_W_PH
, 0,
17844 DSP_
}, /* DPSQX_S.W.PH */
17845 { instruction
, 0 , 0 , 32,
17846 0xfc003fff, 0x200028bf, &NMD::EXTPV
, 0,
17847 DSP_
}, /* EXTPV */
17848 { instruction
, 0 , 0 , 32,
17849 0xfc003fff, 0x20002abf, &NMD::MSUB_DSP_
, 0,
17850 DSP_
}, /* MSUB[DSP] */
17851 { instruction
, 0 , 0 , 32,
17852 0xfc003fff, 0x20002cbf, &NMD::MULSA_W_PH
, 0,
17853 DSP_
}, /* MULSA.W.PH */
17854 { instruction
, 0 , 0 , 32,
17855 0xfc003fff, 0x20002ebf, &NMD::EXTRV_RS_W
, 0,
17856 DSP_
}, /* EXTRV_RS.W */
17860 NMD::Pool
NMD::POOL32Axf_2_DSP__24_31
[8] = {
17861 { instruction
, 0 , 0 , 32,
17862 0xfc003fff, 0x200030bf, &NMD::DPAU_H_QBR
, 0,
17863 DSP_
}, /* DPAU.H.QBR */
17864 { instruction
, 0 , 0 , 32,
17865 0xfc003fff, 0x200032bf, &NMD::DPAQX_SA_W_PH
, 0,
17866 DSP_
}, /* DPAQX_SA.W.PH */
17867 { instruction
, 0 , 0 , 32,
17868 0xfc003fff, 0x200034bf, &NMD::DPSU_H_QBR
, 0,
17869 DSP_
}, /* DPSU.H.QBR */
17870 { instruction
, 0 , 0 , 32,
17871 0xfc003fff, 0x200036bf, &NMD::DPSQX_SA_W_PH
, 0,
17872 DSP_
}, /* DPSQX_SA.W.PH */
17873 { instruction
, 0 , 0 , 32,
17874 0xfc003fff, 0x200038bf, &NMD::EXTPDPV
, 0,
17875 DSP_
}, /* EXTPDPV */
17876 { instruction
, 0 , 0 , 32,
17877 0xfc003fff, 0x20003abf, &NMD::MSUBU_DSP_
, 0,
17878 DSP_
}, /* MSUBU[DSP] */
17879 { instruction
, 0 , 0 , 32,
17880 0xfc003fff, 0x20003cbf, &NMD::MULSAQ_S_W_PH
, 0,
17881 DSP_
}, /* MULSAQ_S.W.PH */
17882 { instruction
, 0 , 0 , 32,
17883 0xfc003fff, 0x20003ebf, &NMD::EXTRV_S_H
, 0,
17884 DSP_
}, /* EXTRV_S.H */
17888 NMD::Pool
NMD::POOL32Axf_2
[4] = {
17889 { pool
, POOL32Axf_2_DSP__0_7
, 8 , 32,
17890 0xfc0031ff, 0x200000bf, 0 , 0,
17891 0x0 }, /* POOL32Axf_2(DSP)_0_7 */
17892 { pool
, POOL32Axf_2_DSP__8_15
, 8 , 32,
17893 0xfc0031ff, 0x200010bf, 0 , 0,
17894 0x0 }, /* POOL32Axf_2(DSP)_8_15 */
17895 { pool
, POOL32Axf_2_DSP__16_23
, 8 , 32,
17896 0xfc0031ff, 0x200020bf, 0 , 0,
17897 0x0 }, /* POOL32Axf_2(DSP)_16_23 */
17898 { pool
, POOL32Axf_2_DSP__24_31
, 8 , 32,
17899 0xfc0031ff, 0x200030bf, 0 , 0,
17900 0x0 }, /* POOL32Axf_2(DSP)_24_31 */
17904 NMD::Pool
NMD::POOL32Axf_4
[128] = {
17905 { instruction
, 0 , 0 , 32,
17906 0xfc00ffff, 0x2000013f, &NMD::ABSQ_S_QB
, 0,
17907 DSP_
}, /* ABSQ_S.QB */
17908 { instruction
, 0 , 0 , 32,
17909 0xfc00ffff, 0x2000033f, &NMD::REPLV_PH
, 0,
17910 DSP_
}, /* REPLV.PH */
17911 { reserved_block
, 0 , 0 , 32,
17912 0xfc00ffff, 0x2000053f, 0 , 0,
17913 0x0 }, /* POOL32Axf_4~*(2) */
17914 { reserved_block
, 0 , 0 , 32,
17915 0xfc00ffff, 0x2000073f, 0 , 0,
17916 0x0 }, /* POOL32Axf_4~*(3) */
17917 { reserved_block
, 0 , 0 , 32,
17918 0xfc00ffff, 0x2000093f, 0 , 0,
17919 0x0 }, /* POOL32Axf_4~*(4) */
17920 { reserved_block
, 0 , 0 , 32,
17921 0xfc00ffff, 0x20000b3f, 0 , 0,
17922 0x0 }, /* POOL32Axf_4~*(5) */
17923 { reserved_block
, 0 , 0 , 32,
17924 0xfc00ffff, 0x20000d3f, 0 , 0,
17925 0x0 }, /* POOL32Axf_4~*(6) */
17926 { reserved_block
, 0 , 0 , 32,
17927 0xfc00ffff, 0x20000f3f, 0 , 0,
17928 0x0 }, /* POOL32Axf_4~*(7) */
17929 { instruction
, 0 , 0 , 32,
17930 0xfc00ffff, 0x2000113f, &NMD::ABSQ_S_PH
, 0,
17931 DSP_
}, /* ABSQ_S.PH */
17932 { instruction
, 0 , 0 , 32,
17933 0xfc00ffff, 0x2000133f, &NMD::REPLV_QB
, 0,
17934 DSP_
}, /* REPLV.QB */
17935 { reserved_block
, 0 , 0 , 32,
17936 0xfc00ffff, 0x2000153f, 0 , 0,
17937 0x0 }, /* POOL32Axf_4~*(10) */
17938 { reserved_block
, 0 , 0 , 32,
17939 0xfc00ffff, 0x2000173f, 0 , 0,
17940 0x0 }, /* POOL32Axf_4~*(11) */
17941 { reserved_block
, 0 , 0 , 32,
17942 0xfc00ffff, 0x2000193f, 0 , 0,
17943 0x0 }, /* POOL32Axf_4~*(12) */
17944 { reserved_block
, 0 , 0 , 32,
17945 0xfc00ffff, 0x20001b3f, 0 , 0,
17946 0x0 }, /* POOL32Axf_4~*(13) */
17947 { reserved_block
, 0 , 0 , 32,
17948 0xfc00ffff, 0x20001d3f, 0 , 0,
17949 0x0 }, /* POOL32Axf_4~*(14) */
17950 { reserved_block
, 0 , 0 , 32,
17951 0xfc00ffff, 0x20001f3f, 0 , 0,
17952 0x0 }, /* POOL32Axf_4~*(15) */
17953 { instruction
, 0 , 0 , 32,
17954 0xfc00ffff, 0x2000213f, &NMD::ABSQ_S_W
, 0,
17955 DSP_
}, /* ABSQ_S.W */
17956 { reserved_block
, 0 , 0 , 32,
17957 0xfc00ffff, 0x2000233f, 0 , 0,
17958 0x0 }, /* POOL32Axf_4~*(17) */
17959 { reserved_block
, 0 , 0 , 32,
17960 0xfc00ffff, 0x2000253f, 0 , 0,
17961 0x0 }, /* POOL32Axf_4~*(18) */
17962 { reserved_block
, 0 , 0 , 32,
17963 0xfc00ffff, 0x2000273f, 0 , 0,
17964 0x0 }, /* POOL32Axf_4~*(19) */
17965 { reserved_block
, 0 , 0 , 32,
17966 0xfc00ffff, 0x2000293f, 0 , 0,
17967 0x0 }, /* POOL32Axf_4~*(20) */
17968 { reserved_block
, 0 , 0 , 32,
17969 0xfc00ffff, 0x20002b3f, 0 , 0,
17970 0x0 }, /* POOL32Axf_4~*(21) */
17971 { reserved_block
, 0 , 0 , 32,
17972 0xfc00ffff, 0x20002d3f, 0 , 0,
17973 0x0 }, /* POOL32Axf_4~*(22) */
17974 { reserved_block
, 0 , 0 , 32,
17975 0xfc00ffff, 0x20002f3f, 0 , 0,
17976 0x0 }, /* POOL32Axf_4~*(23) */
17977 { reserved_block
, 0 , 0 , 32,
17978 0xfc00ffff, 0x2000313f, 0 , 0,
17979 0x0 }, /* POOL32Axf_4~*(24) */
17980 { reserved_block
, 0 , 0 , 32,
17981 0xfc00ffff, 0x2000333f, 0 , 0,
17982 0x0 }, /* POOL32Axf_4~*(25) */
17983 { reserved_block
, 0 , 0 , 32,
17984 0xfc00ffff, 0x2000353f, 0 , 0,
17985 0x0 }, /* POOL32Axf_4~*(26) */
17986 { reserved_block
, 0 , 0 , 32,
17987 0xfc00ffff, 0x2000373f, 0 , 0,
17988 0x0 }, /* POOL32Axf_4~*(27) */
17989 { reserved_block
, 0 , 0 , 32,
17990 0xfc00ffff, 0x2000393f, 0 , 0,
17991 0x0 }, /* POOL32Axf_4~*(28) */
17992 { reserved_block
, 0 , 0 , 32,
17993 0xfc00ffff, 0x20003b3f, 0 , 0,
17994 0x0 }, /* POOL32Axf_4~*(29) */
17995 { reserved_block
, 0 , 0 , 32,
17996 0xfc00ffff, 0x20003d3f, 0 , 0,
17997 0x0 }, /* POOL32Axf_4~*(30) */
17998 { reserved_block
, 0 , 0 , 32,
17999 0xfc00ffff, 0x20003f3f, 0 , 0,
18000 0x0 }, /* POOL32Axf_4~*(31) */
18001 { instruction
, 0 , 0 , 32,
18002 0xfc00ffff, 0x2000413f, &NMD::INSV
, 0,
18004 { reserved_block
, 0 , 0 , 32,
18005 0xfc00ffff, 0x2000433f, 0 , 0,
18006 0x0 }, /* POOL32Axf_4~*(33) */
18007 { reserved_block
, 0 , 0 , 32,
18008 0xfc00ffff, 0x2000453f, 0 , 0,
18009 0x0 }, /* POOL32Axf_4~*(34) */
18010 { reserved_block
, 0 , 0 , 32,
18011 0xfc00ffff, 0x2000473f, 0 , 0,
18012 0x0 }, /* POOL32Axf_4~*(35) */
18013 { reserved_block
, 0 , 0 , 32,
18014 0xfc00ffff, 0x2000493f, 0 , 0,
18015 0x0 }, /* POOL32Axf_4~*(36) */
18016 { instruction
, 0 , 0 , 32,
18017 0xfc00ffff, 0x20004b3f, &NMD::CLO
, 0,
18019 { instruction
, 0 , 0 , 32,
18020 0xfc00ffff, 0x20004d3f, &NMD::MFC2
, 0,
18022 { reserved_block
, 0 , 0 , 32,
18023 0xfc00ffff, 0x20004f3f, 0 , 0,
18024 0x0 }, /* POOL32Axf_4~*(39) */
18025 { instruction
, 0 , 0 , 32,
18026 0xfc00ffff, 0x2000513f, &NMD::PRECEQ_W_PHL
, 0,
18027 DSP_
}, /* PRECEQ.W.PHL */
18028 { reserved_block
, 0 , 0 , 32,
18029 0xfc00ffff, 0x2000533f, 0 , 0,
18030 0x0 }, /* POOL32Axf_4~*(41) */
18031 { reserved_block
, 0 , 0 , 32,
18032 0xfc00ffff, 0x2000553f, 0 , 0,
18033 0x0 }, /* POOL32Axf_4~*(42) */
18034 { reserved_block
, 0 , 0 , 32,
18035 0xfc00ffff, 0x2000573f, 0 , 0,
18036 0x0 }, /* POOL32Axf_4~*(43) */
18037 { reserved_block
, 0 , 0 , 32,
18038 0xfc00ffff, 0x2000593f, 0 , 0,
18039 0x0 }, /* POOL32Axf_4~*(44) */
18040 { instruction
, 0 , 0 , 32,
18041 0xfc00ffff, 0x20005b3f, &NMD::CLZ
, 0,
18043 { instruction
, 0 , 0 , 32,
18044 0xfc00ffff, 0x20005d3f, &NMD::MTC2
, 0,
18046 { reserved_block
, 0 , 0 , 32,
18047 0xfc00ffff, 0x20005f3f, 0 , 0,
18048 0x0 }, /* POOL32Axf_4~*(47) */
18049 { instruction
, 0 , 0 , 32,
18050 0xfc00ffff, 0x2000613f, &NMD::PRECEQ_W_PHR
, 0,
18051 DSP_
}, /* PRECEQ.W.PHR */
18052 { reserved_block
, 0 , 0 , 32,
18053 0xfc00ffff, 0x2000633f, 0 , 0,
18054 0x0 }, /* POOL32Axf_4~*(49) */
18055 { reserved_block
, 0 , 0 , 32,
18056 0xfc00ffff, 0x2000653f, 0 , 0,
18057 0x0 }, /* POOL32Axf_4~*(50) */
18058 { reserved_block
, 0 , 0 , 32,
18059 0xfc00ffff, 0x2000673f, 0 , 0,
18060 0x0 }, /* POOL32Axf_4~*(51) */
18061 { reserved_block
, 0 , 0 , 32,
18062 0xfc00ffff, 0x2000693f, 0 , 0,
18063 0x0 }, /* POOL32Axf_4~*(52) */
18064 { reserved_block
, 0 , 0 , 32,
18065 0xfc00ffff, 0x20006b3f, 0 , 0,
18066 0x0 }, /* POOL32Axf_4~*(53) */
18067 { instruction
, 0 , 0 , 32,
18068 0xfc00ffff, 0x20006d3f, &NMD::DMFC2
, 0,
18069 CP2_
}, /* DMFC2 */
18070 { reserved_block
, 0 , 0 , 32,
18071 0xfc00ffff, 0x20006f3f, 0 , 0,
18072 0x0 }, /* POOL32Axf_4~*(55) */
18073 { instruction
, 0 , 0 , 32,
18074 0xfc00ffff, 0x2000713f, &NMD::PRECEQU_PH_QBL
, 0,
18075 DSP_
}, /* PRECEQU.PH.QBL */
18076 { instruction
, 0 , 0 , 32,
18077 0xfc00ffff, 0x2000733f, &NMD::PRECEQU_PH_QBLA
, 0,
18078 DSP_
}, /* PRECEQU.PH.QBLA */
18079 { reserved_block
, 0 , 0 , 32,
18080 0xfc00ffff, 0x2000753f, 0 , 0,
18081 0x0 }, /* POOL32Axf_4~*(58) */
18082 { reserved_block
, 0 , 0 , 32,
18083 0xfc00ffff, 0x2000773f, 0 , 0,
18084 0x0 }, /* POOL32Axf_4~*(59) */
18085 { reserved_block
, 0 , 0 , 32,
18086 0xfc00ffff, 0x2000793f, 0 , 0,
18087 0x0 }, /* POOL32Axf_4~*(60) */
18088 { reserved_block
, 0 , 0 , 32,
18089 0xfc00ffff, 0x20007b3f, 0 , 0,
18090 0x0 }, /* POOL32Axf_4~*(61) */
18091 { instruction
, 0 , 0 , 32,
18092 0xfc00ffff, 0x20007d3f, &NMD::DMTC2
, 0,
18093 CP2_
}, /* DMTC2 */
18094 { reserved_block
, 0 , 0 , 32,
18095 0xfc00ffff, 0x20007f3f, 0 , 0,
18096 0x0 }, /* POOL32Axf_4~*(63) */
18097 { reserved_block
, 0 , 0 , 32,
18098 0xfc00ffff, 0x2000813f, 0 , 0,
18099 0x0 }, /* POOL32Axf_4~*(64) */
18100 { reserved_block
, 0 , 0 , 32,
18101 0xfc00ffff, 0x2000833f, 0 , 0,
18102 0x0 }, /* POOL32Axf_4~*(65) */
18103 { reserved_block
, 0 , 0 , 32,
18104 0xfc00ffff, 0x2000853f, 0 , 0,
18105 0x0 }, /* POOL32Axf_4~*(66) */
18106 { reserved_block
, 0 , 0 , 32,
18107 0xfc00ffff, 0x2000873f, 0 , 0,
18108 0x0 }, /* POOL32Axf_4~*(67) */
18109 { reserved_block
, 0 , 0 , 32,
18110 0xfc00ffff, 0x2000893f, 0 , 0,
18111 0x0 }, /* POOL32Axf_4~*(68) */
18112 { reserved_block
, 0 , 0 , 32,
18113 0xfc00ffff, 0x20008b3f, 0 , 0,
18114 0x0 }, /* POOL32Axf_4~*(69) */
18115 { instruction
, 0 , 0 , 32,
18116 0xfc00ffff, 0x20008d3f, &NMD::MFHC2
, 0,
18117 CP2_
}, /* MFHC2 */
18118 { reserved_block
, 0 , 0 , 32,
18119 0xfc00ffff, 0x20008f3f, 0 , 0,
18120 0x0 }, /* POOL32Axf_4~*(71) */
18121 { instruction
, 0 , 0 , 32,
18122 0xfc00ffff, 0x2000913f, &NMD::PRECEQU_PH_QBR
, 0,
18123 DSP_
}, /* PRECEQU.PH.QBR */
18124 { instruction
, 0 , 0 , 32,
18125 0xfc00ffff, 0x2000933f, &NMD::PRECEQU_PH_QBRA
, 0,
18126 DSP_
}, /* PRECEQU.PH.QBRA */
18127 { reserved_block
, 0 , 0 , 32,
18128 0xfc00ffff, 0x2000953f, 0 , 0,
18129 0x0 }, /* POOL32Axf_4~*(74) */
18130 { reserved_block
, 0 , 0 , 32,
18131 0xfc00ffff, 0x2000973f, 0 , 0,
18132 0x0 }, /* POOL32Axf_4~*(75) */
18133 { reserved_block
, 0 , 0 , 32,
18134 0xfc00ffff, 0x2000993f, 0 , 0,
18135 0x0 }, /* POOL32Axf_4~*(76) */
18136 { reserved_block
, 0 , 0 , 32,
18137 0xfc00ffff, 0x20009b3f, 0 , 0,
18138 0x0 }, /* POOL32Axf_4~*(77) */
18139 { instruction
, 0 , 0 , 32,
18140 0xfc00ffff, 0x20009d3f, &NMD::MTHC2
, 0,
18141 CP2_
}, /* MTHC2 */
18142 { reserved_block
, 0 , 0 , 32,
18143 0xfc00ffff, 0x20009f3f, 0 , 0,
18144 0x0 }, /* POOL32Axf_4~*(79) */
18145 { reserved_block
, 0 , 0 , 32,
18146 0xfc00ffff, 0x2000a13f, 0 , 0,
18147 0x0 }, /* POOL32Axf_4~*(80) */
18148 { reserved_block
, 0 , 0 , 32,
18149 0xfc00ffff, 0x2000a33f, 0 , 0,
18150 0x0 }, /* POOL32Axf_4~*(81) */
18151 { reserved_block
, 0 , 0 , 32,
18152 0xfc00ffff, 0x2000a53f, 0 , 0,
18153 0x0 }, /* POOL32Axf_4~*(82) */
18154 { reserved_block
, 0 , 0 , 32,
18155 0xfc00ffff, 0x2000a73f, 0 , 0,
18156 0x0 }, /* POOL32Axf_4~*(83) */
18157 { reserved_block
, 0 , 0 , 32,
18158 0xfc00ffff, 0x2000a93f, 0 , 0,
18159 0x0 }, /* POOL32Axf_4~*(84) */
18160 { reserved_block
, 0 , 0 , 32,
18161 0xfc00ffff, 0x2000ab3f, 0 , 0,
18162 0x0 }, /* POOL32Axf_4~*(85) */
18163 { reserved_block
, 0 , 0 , 32,
18164 0xfc00ffff, 0x2000ad3f, 0 , 0,
18165 0x0 }, /* POOL32Axf_4~*(86) */
18166 { reserved_block
, 0 , 0 , 32,
18167 0xfc00ffff, 0x2000af3f, 0 , 0,
18168 0x0 }, /* POOL32Axf_4~*(87) */
18169 { instruction
, 0 , 0 , 32,
18170 0xfc00ffff, 0x2000b13f, &NMD::PRECEU_PH_QBL
, 0,
18171 DSP_
}, /* PRECEU.PH.QBL */
18172 { instruction
, 0 , 0 , 32,
18173 0xfc00ffff, 0x2000b33f, &NMD::PRECEU_PH_QBLA
, 0,
18174 DSP_
}, /* PRECEU.PH.QBLA */
18175 { reserved_block
, 0 , 0 , 32,
18176 0xfc00ffff, 0x2000b53f, 0 , 0,
18177 0x0 }, /* POOL32Axf_4~*(90) */
18178 { reserved_block
, 0 , 0 , 32,
18179 0xfc00ffff, 0x2000b73f, 0 , 0,
18180 0x0 }, /* POOL32Axf_4~*(91) */
18181 { reserved_block
, 0 , 0 , 32,
18182 0xfc00ffff, 0x2000b93f, 0 , 0,
18183 0x0 }, /* POOL32Axf_4~*(92) */
18184 { reserved_block
, 0 , 0 , 32,
18185 0xfc00ffff, 0x2000bb3f, 0 , 0,
18186 0x0 }, /* POOL32Axf_4~*(93) */
18187 { reserved_block
, 0 , 0 , 32,
18188 0xfc00ffff, 0x2000bd3f, 0 , 0,
18189 0x0 }, /* POOL32Axf_4~*(94) */
18190 { reserved_block
, 0 , 0 , 32,
18191 0xfc00ffff, 0x2000bf3f, 0 , 0,
18192 0x0 }, /* POOL32Axf_4~*(95) */
18193 { reserved_block
, 0 , 0 , 32,
18194 0xfc00ffff, 0x2000c13f, 0 , 0,
18195 0x0 }, /* POOL32Axf_4~*(96) */
18196 { reserved_block
, 0 , 0 , 32,
18197 0xfc00ffff, 0x2000c33f, 0 , 0,
18198 0x0 }, /* POOL32Axf_4~*(97) */
18199 { reserved_block
, 0 , 0 , 32,
18200 0xfc00ffff, 0x2000c53f, 0 , 0,
18201 0x0 }, /* POOL32Axf_4~*(98) */
18202 { reserved_block
, 0 , 0 , 32,
18203 0xfc00ffff, 0x2000c73f, 0 , 0,
18204 0x0 }, /* POOL32Axf_4~*(99) */
18205 { reserved_block
, 0 , 0 , 32,
18206 0xfc00ffff, 0x2000c93f, 0 , 0,
18207 0x0 }, /* POOL32Axf_4~*(100) */
18208 { reserved_block
, 0 , 0 , 32,
18209 0xfc00ffff, 0x2000cb3f, 0 , 0,
18210 0x0 }, /* POOL32Axf_4~*(101) */
18211 { instruction
, 0 , 0 , 32,
18212 0xfc00ffff, 0x2000cd3f, &NMD::CFC2
, 0,
18214 { reserved_block
, 0 , 0 , 32,
18215 0xfc00ffff, 0x2000cf3f, 0 , 0,
18216 0x0 }, /* POOL32Axf_4~*(103) */
18217 { instruction
, 0 , 0 , 32,
18218 0xfc00ffff, 0x2000d13f, &NMD::PRECEU_PH_QBR
, 0,
18219 DSP_
}, /* PRECEU.PH.QBR */
18220 { instruction
, 0 , 0 , 32,
18221 0xfc00ffff, 0x2000d33f, &NMD::PRECEU_PH_QBRA
, 0,
18222 DSP_
}, /* PRECEU.PH.QBRA */
18223 { reserved_block
, 0 , 0 , 32,
18224 0xfc00ffff, 0x2000d53f, 0 , 0,
18225 0x0 }, /* POOL32Axf_4~*(106) */
18226 { reserved_block
, 0 , 0 , 32,
18227 0xfc00ffff, 0x2000d73f, 0 , 0,
18228 0x0 }, /* POOL32Axf_4~*(107) */
18229 { reserved_block
, 0 , 0 , 32,
18230 0xfc00ffff, 0x2000d93f, 0 , 0,
18231 0x0 }, /* POOL32Axf_4~*(108) */
18232 { reserved_block
, 0 , 0 , 32,
18233 0xfc00ffff, 0x2000db3f, 0 , 0,
18234 0x0 }, /* POOL32Axf_4~*(109) */
18235 { instruction
, 0 , 0 , 32,
18236 0xfc00ffff, 0x2000dd3f, &NMD::CTC2
, 0,
18238 { reserved_block
, 0 , 0 , 32,
18239 0xfc00ffff, 0x2000df3f, 0 , 0,
18240 0x0 }, /* POOL32Axf_4~*(111) */
18241 { reserved_block
, 0 , 0 , 32,
18242 0xfc00ffff, 0x2000e13f, 0 , 0,
18243 0x0 }, /* POOL32Axf_4~*(112) */
18244 { reserved_block
, 0 , 0 , 32,
18245 0xfc00ffff, 0x2000e33f, 0 , 0,
18246 0x0 }, /* POOL32Axf_4~*(113) */
18247 { reserved_block
, 0 , 0 , 32,
18248 0xfc00ffff, 0x2000e53f, 0 , 0,
18249 0x0 }, /* POOL32Axf_4~*(114) */
18250 { reserved_block
, 0 , 0 , 32,
18251 0xfc00ffff, 0x2000e73f, 0 , 0,
18252 0x0 }, /* POOL32Axf_4~*(115) */
18253 { reserved_block
, 0 , 0 , 32,
18254 0xfc00ffff, 0x2000e93f, 0 , 0,
18255 0x0 }, /* POOL32Axf_4~*(116) */
18256 { reserved_block
, 0 , 0 , 32,
18257 0xfc00ffff, 0x2000eb3f, 0 , 0,
18258 0x0 }, /* POOL32Axf_4~*(117) */
18259 { reserved_block
, 0 , 0 , 32,
18260 0xfc00ffff, 0x2000ed3f, 0 , 0,
18261 0x0 }, /* POOL32Axf_4~*(118) */
18262 { reserved_block
, 0 , 0 , 32,
18263 0xfc00ffff, 0x2000ef3f, 0 , 0,
18264 0x0 }, /* POOL32Axf_4~*(119) */
18265 { instruction
, 0 , 0 , 32,
18266 0xfc00ffff, 0x2000f13f, &NMD::RADDU_W_QB
, 0,
18267 DSP_
}, /* RADDU.W.QB */
18268 { reserved_block
, 0 , 0 , 32,
18269 0xfc00ffff, 0x2000f33f, 0 , 0,
18270 0x0 }, /* POOL32Axf_4~*(121) */
18271 { reserved_block
, 0 , 0 , 32,
18272 0xfc00ffff, 0x2000f53f, 0 , 0,
18273 0x0 }, /* POOL32Axf_4~*(122) */
18274 { reserved_block
, 0 , 0 , 32,
18275 0xfc00ffff, 0x2000f73f, 0 , 0,
18276 0x0 }, /* POOL32Axf_4~*(123) */
18277 { reserved_block
, 0 , 0 , 32,
18278 0xfc00ffff, 0x2000f93f, 0 , 0,
18279 0x0 }, /* POOL32Axf_4~*(124) */
18280 { reserved_block
, 0 , 0 , 32,
18281 0xfc00ffff, 0x2000fb3f, 0 , 0,
18282 0x0 }, /* POOL32Axf_4~*(125) */
18283 { reserved_block
, 0 , 0 , 32,
18284 0xfc00ffff, 0x2000fd3f, 0 , 0,
18285 0x0 }, /* POOL32Axf_4~*(126) */
18286 { reserved_block
, 0 , 0 , 32,
18287 0xfc00ffff, 0x2000ff3f, 0 , 0,
18288 0x0 }, /* POOL32Axf_4~*(127) */
18292 NMD::Pool
NMD::POOL32Axf_5_group0
[32] = {
18293 { instruction
, 0 , 0 , 32,
18294 0xfc00ffff, 0x2000017f, &NMD::TLBGP
, 0,
18295 CP0_
| VZ_
| TLB_
}, /* TLBGP */
18296 { instruction
, 0 , 0 , 32,
18297 0xfc00ffff, 0x2000037f, &NMD::TLBP
, 0,
18298 CP0_
| TLB_
}, /* TLBP */
18299 { instruction
, 0 , 0 , 32,
18300 0xfc00ffff, 0x2000057f, &NMD::TLBGINV
, 0,
18301 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINV */
18302 { instruction
, 0 , 0 , 32,
18303 0xfc00ffff, 0x2000077f, &NMD::TLBINV
, 0,
18304 CP0_
| TLB_
| TLBINV_
}, /* TLBINV */
18305 { reserved_block
, 0 , 0 , 32,
18306 0xfc00ffff, 0x2000097f, 0 , 0,
18307 0x0 }, /* POOL32Axf_5_group0~*(4) */
18308 { reserved_block
, 0 , 0 , 32,
18309 0xfc00ffff, 0x20000b7f, 0 , 0,
18310 0x0 }, /* POOL32Axf_5_group0~*(5) */
18311 { reserved_block
, 0 , 0 , 32,
18312 0xfc00ffff, 0x20000d7f, 0 , 0,
18313 0x0 }, /* POOL32Axf_5_group0~*(6) */
18314 { reserved_block
, 0 , 0 , 32,
18315 0xfc00ffff, 0x20000f7f, 0 , 0,
18316 0x0 }, /* POOL32Axf_5_group0~*(7) */
18317 { instruction
, 0 , 0 , 32,
18318 0xfc00ffff, 0x2000117f, &NMD::TLBGR
, 0,
18319 CP0_
| VZ_
| TLB_
}, /* TLBGR */
18320 { instruction
, 0 , 0 , 32,
18321 0xfc00ffff, 0x2000137f, &NMD::TLBR
, 0,
18322 CP0_
| TLB_
}, /* TLBR */
18323 { instruction
, 0 , 0 , 32,
18324 0xfc00ffff, 0x2000157f, &NMD::TLBGINVF
, 0,
18325 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINVF */
18326 { instruction
, 0 , 0 , 32,
18327 0xfc00ffff, 0x2000177f, &NMD::TLBINVF
, 0,
18328 CP0_
| TLB_
| TLBINV_
}, /* TLBINVF */
18329 { reserved_block
, 0 , 0 , 32,
18330 0xfc00ffff, 0x2000197f, 0 , 0,
18331 0x0 }, /* POOL32Axf_5_group0~*(12) */
18332 { reserved_block
, 0 , 0 , 32,
18333 0xfc00ffff, 0x20001b7f, 0 , 0,
18334 0x0 }, /* POOL32Axf_5_group0~*(13) */
18335 { reserved_block
, 0 , 0 , 32,
18336 0xfc00ffff, 0x20001d7f, 0 , 0,
18337 0x0 }, /* POOL32Axf_5_group0~*(14) */
18338 { reserved_block
, 0 , 0 , 32,
18339 0xfc00ffff, 0x20001f7f, 0 , 0,
18340 0x0 }, /* POOL32Axf_5_group0~*(15) */
18341 { instruction
, 0 , 0 , 32,
18342 0xfc00ffff, 0x2000217f, &NMD::TLBGWI
, 0,
18343 CP0_
| VZ_
| TLB_
}, /* TLBGWI */
18344 { instruction
, 0 , 0 , 32,
18345 0xfc00ffff, 0x2000237f, &NMD::TLBWI
, 0,
18346 CP0_
| TLB_
}, /* TLBWI */
18347 { reserved_block
, 0 , 0 , 32,
18348 0xfc00ffff, 0x2000257f, 0 , 0,
18349 0x0 }, /* POOL32Axf_5_group0~*(18) */
18350 { reserved_block
, 0 , 0 , 32,
18351 0xfc00ffff, 0x2000277f, 0 , 0,
18352 0x0 }, /* POOL32Axf_5_group0~*(19) */
18353 { reserved_block
, 0 , 0 , 32,
18354 0xfc00ffff, 0x2000297f, 0 , 0,
18355 0x0 }, /* POOL32Axf_5_group0~*(20) */
18356 { reserved_block
, 0 , 0 , 32,
18357 0xfc00ffff, 0x20002b7f, 0 , 0,
18358 0x0 }, /* POOL32Axf_5_group0~*(21) */
18359 { reserved_block
, 0 , 0 , 32,
18360 0xfc00ffff, 0x20002d7f, 0 , 0,
18361 0x0 }, /* POOL32Axf_5_group0~*(22) */
18362 { reserved_block
, 0 , 0 , 32,
18363 0xfc00ffff, 0x20002f7f, 0 , 0,
18364 0x0 }, /* POOL32Axf_5_group0~*(23) */
18365 { instruction
, 0 , 0 , 32,
18366 0xfc00ffff, 0x2000317f, &NMD::TLBGWR
, 0,
18367 CP0_
| VZ_
| TLB_
}, /* TLBGWR */
18368 { instruction
, 0 , 0 , 32,
18369 0xfc00ffff, 0x2000337f, &NMD::TLBWR
, 0,
18370 CP0_
| TLB_
}, /* TLBWR */
18371 { reserved_block
, 0 , 0 , 32,
18372 0xfc00ffff, 0x2000357f, 0 , 0,
18373 0x0 }, /* POOL32Axf_5_group0~*(26) */
18374 { reserved_block
, 0 , 0 , 32,
18375 0xfc00ffff, 0x2000377f, 0 , 0,
18376 0x0 }, /* POOL32Axf_5_group0~*(27) */
18377 { reserved_block
, 0 , 0 , 32,
18378 0xfc00ffff, 0x2000397f, 0 , 0,
18379 0x0 }, /* POOL32Axf_5_group0~*(28) */
18380 { reserved_block
, 0 , 0 , 32,
18381 0xfc00ffff, 0x20003b7f, 0 , 0,
18382 0x0 }, /* POOL32Axf_5_group0~*(29) */
18383 { reserved_block
, 0 , 0 , 32,
18384 0xfc00ffff, 0x20003d7f, 0 , 0,
18385 0x0 }, /* POOL32Axf_5_group0~*(30) */
18386 { reserved_block
, 0 , 0 , 32,
18387 0xfc00ffff, 0x20003f7f, 0 , 0,
18388 0x0 }, /* POOL32Axf_5_group0~*(31) */
18392 NMD::Pool
NMD::POOL32Axf_5_group1
[32] = {
18393 { reserved_block
, 0 , 0 , 32,
18394 0xfc00ffff, 0x2000417f, 0 , 0,
18395 0x0 }, /* POOL32Axf_5_group1~*(0) */
18396 { reserved_block
, 0 , 0 , 32,
18397 0xfc00ffff, 0x2000437f, 0 , 0,
18398 0x0 }, /* POOL32Axf_5_group1~*(1) */
18399 { reserved_block
, 0 , 0 , 32,
18400 0xfc00ffff, 0x2000457f, 0 , 0,
18401 0x0 }, /* POOL32Axf_5_group1~*(2) */
18402 { instruction
, 0 , 0 , 32,
18403 0xfc00ffff, 0x2000477f, &NMD::DI
, 0,
18405 { reserved_block
, 0 , 0 , 32,
18406 0xfc00ffff, 0x2000497f, 0 , 0,
18407 0x0 }, /* POOL32Axf_5_group1~*(4) */
18408 { reserved_block
, 0 , 0 , 32,
18409 0xfc00ffff, 0x20004b7f, 0 , 0,
18410 0x0 }, /* POOL32Axf_5_group1~*(5) */
18411 { reserved_block
, 0 , 0 , 32,
18412 0xfc00ffff, 0x20004d7f, 0 , 0,
18413 0x0 }, /* POOL32Axf_5_group1~*(6) */
18414 { reserved_block
, 0 , 0 , 32,
18415 0xfc00ffff, 0x20004f7f, 0 , 0,
18416 0x0 }, /* POOL32Axf_5_group1~*(7) */
18417 { reserved_block
, 0 , 0 , 32,
18418 0xfc00ffff, 0x2000517f, 0 , 0,
18419 0x0 }, /* POOL32Axf_5_group1~*(8) */
18420 { reserved_block
, 0 , 0 , 32,
18421 0xfc00ffff, 0x2000537f, 0 , 0,
18422 0x0 }, /* POOL32Axf_5_group1~*(9) */
18423 { reserved_block
, 0 , 0 , 32,
18424 0xfc00ffff, 0x2000557f, 0 , 0,
18425 0x0 }, /* POOL32Axf_5_group1~*(10) */
18426 { instruction
, 0 , 0 , 32,
18427 0xfc00ffff, 0x2000577f, &NMD::EI
, 0,
18429 { reserved_block
, 0 , 0 , 32,
18430 0xfc00ffff, 0x2000597f, 0 , 0,
18431 0x0 }, /* POOL32Axf_5_group1~*(12) */
18432 { reserved_block
, 0 , 0 , 32,
18433 0xfc00ffff, 0x20005b7f, 0 , 0,
18434 0x0 }, /* POOL32Axf_5_group1~*(13) */
18435 { reserved_block
, 0 , 0 , 32,
18436 0xfc00ffff, 0x20005d7f, 0 , 0,
18437 0x0 }, /* POOL32Axf_5_group1~*(14) */
18438 { reserved_block
, 0 , 0 , 32,
18439 0xfc00ffff, 0x20005f7f, 0 , 0,
18440 0x0 }, /* POOL32Axf_5_group1~*(15) */
18441 { reserved_block
, 0 , 0 , 32,
18442 0xfc00ffff, 0x2000617f, 0 , 0,
18443 0x0 }, /* POOL32Axf_5_group1~*(16) */
18444 { reserved_block
, 0 , 0 , 32,
18445 0xfc00ffff, 0x2000637f, 0 , 0,
18446 0x0 }, /* POOL32Axf_5_group1~*(17) */
18447 { reserved_block
, 0 , 0 , 32,
18448 0xfc00ffff, 0x2000657f, 0 , 0,
18449 0x0 }, /* POOL32Axf_5_group1~*(18) */
18450 { reserved_block
, 0 , 0 , 32,
18451 0xfc00ffff, 0x2000677f, 0 , 0,
18452 0x0 }, /* POOL32Axf_5_group1~*(19) */
18453 { reserved_block
, 0 , 0 , 32,
18454 0xfc00ffff, 0x2000697f, 0 , 0,
18455 0x0 }, /* POOL32Axf_5_group1~*(20) */
18456 { reserved_block
, 0 , 0 , 32,
18457 0xfc00ffff, 0x20006b7f, 0 , 0,
18458 0x0 }, /* POOL32Axf_5_group1~*(21) */
18459 { reserved_block
, 0 , 0 , 32,
18460 0xfc00ffff, 0x20006d7f, 0 , 0,
18461 0x0 }, /* POOL32Axf_5_group1~*(22) */
18462 { reserved_block
, 0 , 0 , 32,
18463 0xfc00ffff, 0x20006f7f, 0 , 0,
18464 0x0 }, /* POOL32Axf_5_group1~*(23) */
18465 { reserved_block
, 0 , 0 , 32,
18466 0xfc00ffff, 0x2000717f, 0 , 0,
18467 0x0 }, /* POOL32Axf_5_group1~*(24) */
18468 { reserved_block
, 0 , 0 , 32,
18469 0xfc00ffff, 0x2000737f, 0 , 0,
18470 0x0 }, /* POOL32Axf_5_group1~*(25) */
18471 { reserved_block
, 0 , 0 , 32,
18472 0xfc00ffff, 0x2000757f, 0 , 0,
18473 0x0 }, /* POOL32Axf_5_group1~*(26) */
18474 { reserved_block
, 0 , 0 , 32,
18475 0xfc00ffff, 0x2000777f, 0 , 0,
18476 0x0 }, /* POOL32Axf_5_group1~*(27) */
18477 { reserved_block
, 0 , 0 , 32,
18478 0xfc00ffff, 0x2000797f, 0 , 0,
18479 0x0 }, /* POOL32Axf_5_group1~*(28) */
18480 { reserved_block
, 0 , 0 , 32,
18481 0xfc00ffff, 0x20007b7f, 0 , 0,
18482 0x0 }, /* POOL32Axf_5_group1~*(29) */
18483 { reserved_block
, 0 , 0 , 32,
18484 0xfc00ffff, 0x20007d7f, 0 , 0,
18485 0x0 }, /* POOL32Axf_5_group1~*(30) */
18486 { reserved_block
, 0 , 0 , 32,
18487 0xfc00ffff, 0x20007f7f, 0 , 0,
18488 0x0 }, /* POOL32Axf_5_group1~*(31) */
18492 NMD::Pool
NMD::ERETx
[2] = {
18493 { instruction
, 0 , 0 , 32,
18494 0xfc01ffff, 0x2000f37f, &NMD::ERET
, 0,
18496 { instruction
, 0 , 0 , 32,
18497 0xfc01ffff, 0x2001f37f, &NMD::ERETNC
, 0,
18498 0x0 }, /* ERETNC */
18502 NMD::Pool
NMD::POOL32Axf_5_group3
[32] = {
18503 { reserved_block
, 0 , 0 , 32,
18504 0xfc00ffff, 0x2000c17f, 0 , 0,
18505 0x0 }, /* POOL32Axf_5_group3~*(0) */
18506 { instruction
, 0 , 0 , 32,
18507 0xfc00ffff, 0x2000c37f, &NMD::WAIT
, 0,
18509 { reserved_block
, 0 , 0 , 32,
18510 0xfc00ffff, 0x2000c57f, 0 , 0,
18511 0x0 }, /* POOL32Axf_5_group3~*(2) */
18512 { reserved_block
, 0 , 0 , 32,
18513 0xfc00ffff, 0x2000c77f, 0 , 0,
18514 0x0 }, /* POOL32Axf_5_group3~*(3) */
18515 { reserved_block
, 0 , 0 , 32,
18516 0xfc00ffff, 0x2000c97f, 0 , 0,
18517 0x0 }, /* POOL32Axf_5_group3~*(4) */
18518 { reserved_block
, 0 , 0 , 32,
18519 0xfc00ffff, 0x2000cb7f, 0 , 0,
18520 0x0 }, /* POOL32Axf_5_group3~*(5) */
18521 { reserved_block
, 0 , 0 , 32,
18522 0xfc00ffff, 0x2000cd7f, 0 , 0,
18523 0x0 }, /* POOL32Axf_5_group3~*(6) */
18524 { reserved_block
, 0 , 0 , 32,
18525 0xfc00ffff, 0x2000cf7f, 0 , 0,
18526 0x0 }, /* POOL32Axf_5_group3~*(7) */
18527 { reserved_block
, 0 , 0 , 32,
18528 0xfc00ffff, 0x2000d17f, 0 , 0,
18529 0x0 }, /* POOL32Axf_5_group3~*(8) */
18530 { instruction
, 0 , 0 , 32,
18531 0xfc00ffff, 0x2000d37f, &NMD::IRET
, 0,
18533 { reserved_block
, 0 , 0 , 32,
18534 0xfc00ffff, 0x2000d57f, 0 , 0,
18535 0x0 }, /* POOL32Axf_5_group3~*(10) */
18536 { reserved_block
, 0 , 0 , 32,
18537 0xfc00ffff, 0x2000d77f, 0 , 0,
18538 0x0 }, /* POOL32Axf_5_group3~*(11) */
18539 { reserved_block
, 0 , 0 , 32,
18540 0xfc00ffff, 0x2000d97f, 0 , 0,
18541 0x0 }, /* POOL32Axf_5_group3~*(12) */
18542 { reserved_block
, 0 , 0 , 32,
18543 0xfc00ffff, 0x2000db7f, 0 , 0,
18544 0x0 }, /* POOL32Axf_5_group3~*(13) */
18545 { reserved_block
, 0 , 0 , 32,
18546 0xfc00ffff, 0x2000dd7f, 0 , 0,
18547 0x0 }, /* POOL32Axf_5_group3~*(14) */
18548 { reserved_block
, 0 , 0 , 32,
18549 0xfc00ffff, 0x2000df7f, 0 , 0,
18550 0x0 }, /* POOL32Axf_5_group3~*(15) */
18551 { instruction
, 0 , 0 , 32,
18552 0xfc00ffff, 0x2000e17f, &NMD::RDPGPR
, 0,
18553 CP0_
}, /* RDPGPR */
18554 { instruction
, 0 , 0 , 32,
18555 0xfc00ffff, 0x2000e37f, &NMD::DERET
, 0,
18556 EJTAG_
}, /* DERET */
18557 { reserved_block
, 0 , 0 , 32,
18558 0xfc00ffff, 0x2000e57f, 0 , 0,
18559 0x0 }, /* POOL32Axf_5_group3~*(18) */
18560 { reserved_block
, 0 , 0 , 32,
18561 0xfc00ffff, 0x2000e77f, 0 , 0,
18562 0x0 }, /* POOL32Axf_5_group3~*(19) */
18563 { reserved_block
, 0 , 0 , 32,
18564 0xfc00ffff, 0x2000e97f, 0 , 0,
18565 0x0 }, /* POOL32Axf_5_group3~*(20) */
18566 { reserved_block
, 0 , 0 , 32,
18567 0xfc00ffff, 0x2000eb7f, 0 , 0,
18568 0x0 }, /* POOL32Axf_5_group3~*(21) */
18569 { reserved_block
, 0 , 0 , 32,
18570 0xfc00ffff, 0x2000ed7f, 0 , 0,
18571 0x0 }, /* POOL32Axf_5_group3~*(22) */
18572 { reserved_block
, 0 , 0 , 32,
18573 0xfc00ffff, 0x2000ef7f, 0 , 0,
18574 0x0 }, /* POOL32Axf_5_group3~*(23) */
18575 { instruction
, 0 , 0 , 32,
18576 0xfc00ffff, 0x2000f17f, &NMD::WRPGPR
, 0,
18577 CP0_
}, /* WRPGPR */
18578 { pool
, ERETx
, 2 , 32,
18579 0xfc00ffff, 0x2000f37f, 0 , 0,
18581 { reserved_block
, 0 , 0 , 32,
18582 0xfc00ffff, 0x2000f57f, 0 , 0,
18583 0x0 }, /* POOL32Axf_5_group3~*(26) */
18584 { reserved_block
, 0 , 0 , 32,
18585 0xfc00ffff, 0x2000f77f, 0 , 0,
18586 0x0 }, /* POOL32Axf_5_group3~*(27) */
18587 { reserved_block
, 0 , 0 , 32,
18588 0xfc00ffff, 0x2000f97f, 0 , 0,
18589 0x0 }, /* POOL32Axf_5_group3~*(28) */
18590 { reserved_block
, 0 , 0 , 32,
18591 0xfc00ffff, 0x2000fb7f, 0 , 0,
18592 0x0 }, /* POOL32Axf_5_group3~*(29) */
18593 { reserved_block
, 0 , 0 , 32,
18594 0xfc00ffff, 0x2000fd7f, 0 , 0,
18595 0x0 }, /* POOL32Axf_5_group3~*(30) */
18596 { reserved_block
, 0 , 0 , 32,
18597 0xfc00ffff, 0x2000ff7f, 0 , 0,
18598 0x0 }, /* POOL32Axf_5_group3~*(31) */
18602 NMD::Pool
NMD::POOL32Axf_5
[4] = {
18603 { pool
, POOL32Axf_5_group0
, 32 , 32,
18604 0xfc00c1ff, 0x2000017f, 0 , 0,
18605 0x0 }, /* POOL32Axf_5_group0 */
18606 { pool
, POOL32Axf_5_group1
, 32 , 32,
18607 0xfc00c1ff, 0x2000417f, 0 , 0,
18608 0x0 }, /* POOL32Axf_5_group1 */
18609 { reserved_block
, 0 , 0 , 32,
18610 0xfc00c1ff, 0x2000817f, 0 , 0,
18611 0x0 }, /* POOL32Axf_5~*(2) */
18612 { pool
, POOL32Axf_5_group3
, 32 , 32,
18613 0xfc00c1ff, 0x2000c17f, 0 , 0,
18614 0x0 }, /* POOL32Axf_5_group3 */
18618 NMD::Pool
NMD::SHRA__R__QB
[2] = {
18619 { instruction
, 0 , 0 , 32,
18620 0xfc001fff, 0x200001ff, &NMD::SHRA_QB
, 0,
18621 DSP_
}, /* SHRA.QB */
18622 { instruction
, 0 , 0 , 32,
18623 0xfc001fff, 0x200011ff, &NMD::SHRA_R_QB
, 0,
18624 DSP_
}, /* SHRA_R.QB */
18628 NMD::Pool
NMD::POOL32Axf_7
[8] = {
18629 { pool
, SHRA__R__QB
, 2 , 32,
18630 0xfc000fff, 0x200001ff, 0 , 0,
18631 0x0 }, /* SHRA[_R].QB */
18632 { instruction
, 0 , 0 , 32,
18633 0xfc000fff, 0x200003ff, &NMD::SHRL_PH
, 0,
18634 DSP_
}, /* SHRL.PH */
18635 { instruction
, 0 , 0 , 32,
18636 0xfc000fff, 0x200005ff, &NMD::REPL_QB
, 0,
18637 DSP_
}, /* REPL.QB */
18638 { reserved_block
, 0 , 0 , 32,
18639 0xfc000fff, 0x200007ff, 0 , 0,
18640 0x0 }, /* POOL32Axf_7~*(3) */
18641 { reserved_block
, 0 , 0 , 32,
18642 0xfc000fff, 0x200009ff, 0 , 0,
18643 0x0 }, /* POOL32Axf_7~*(4) */
18644 { reserved_block
, 0 , 0 , 32,
18645 0xfc000fff, 0x20000bff, 0 , 0,
18646 0x0 }, /* POOL32Axf_7~*(5) */
18647 { reserved_block
, 0 , 0 , 32,
18648 0xfc000fff, 0x20000dff, 0 , 0,
18649 0x0 }, /* POOL32Axf_7~*(6) */
18650 { reserved_block
, 0 , 0 , 32,
18651 0xfc000fff, 0x20000fff, 0 , 0,
18652 0x0 }, /* POOL32Axf_7~*(7) */
18656 NMD::Pool
NMD::POOL32Axf
[8] = {
18657 { reserved_block
, 0 , 0 , 32,
18658 0xfc0001ff, 0x2000003f, 0 , 0,
18659 0x0 }, /* POOL32Axf~*(0) */
18660 { pool
, POOL32Axf_1
, 8 , 32,
18661 0xfc0001ff, 0x2000007f, 0 , 0,
18662 0x0 }, /* POOL32Axf_1 */
18663 { pool
, POOL32Axf_2
, 4 , 32,
18664 0xfc0001ff, 0x200000bf, 0 , 0,
18665 0x0 }, /* POOL32Axf_2 */
18666 { reserved_block
, 0 , 0 , 32,
18667 0xfc0001ff, 0x200000ff, 0 , 0,
18668 0x0 }, /* POOL32Axf~*(3) */
18669 { pool
, POOL32Axf_4
, 128 , 32,
18670 0xfc0001ff, 0x2000013f, 0 , 0,
18671 0x0 }, /* POOL32Axf_4 */
18672 { pool
, POOL32Axf_5
, 4 , 32,
18673 0xfc0001ff, 0x2000017f, 0 , 0,
18674 0x0 }, /* POOL32Axf_5 */
18675 { reserved_block
, 0 , 0 , 32,
18676 0xfc0001ff, 0x200001bf, 0 , 0,
18677 0x0 }, /* POOL32Axf~*(6) */
18678 { pool
, POOL32Axf_7
, 8 , 32,
18679 0xfc0001ff, 0x200001ff, 0 , 0,
18680 0x0 }, /* POOL32Axf_7 */
18684 NMD::Pool
NMD::_POOL32A7
[8] = {
18685 { pool
, P_LSX
, 2 , 32,
18686 0xfc00003f, 0x20000007, 0 , 0,
18688 { instruction
, 0 , 0 , 32,
18689 0xfc00003f, 0x2000000f, &NMD::LSA
, 0,
18691 { reserved_block
, 0 , 0 , 32,
18692 0xfc00003f, 0x20000017, 0 , 0,
18693 0x0 }, /* _POOL32A7~*(2) */
18694 { instruction
, 0 , 0 , 32,
18695 0xfc00003f, 0x2000001f, &NMD::EXTW
, 0,
18697 { reserved_block
, 0 , 0 , 32,
18698 0xfc00003f, 0x20000027, 0 , 0,
18699 0x0 }, /* _POOL32A7~*(4) */
18700 { reserved_block
, 0 , 0 , 32,
18701 0xfc00003f, 0x2000002f, 0 , 0,
18702 0x0 }, /* _POOL32A7~*(5) */
18703 { reserved_block
, 0 , 0 , 32,
18704 0xfc00003f, 0x20000037, 0 , 0,
18705 0x0 }, /* _POOL32A7~*(6) */
18706 { pool
, POOL32Axf
, 8 , 32,
18707 0xfc00003f, 0x2000003f, 0 , 0,
18708 0x0 }, /* POOL32Axf */
18712 NMD::Pool
NMD::P32A
[8] = {
18713 { pool
, _POOL32A0
, 128 , 32,
18714 0xfc000007, 0x20000000, 0 , 0,
18715 0x0 }, /* _POOL32A0 */
18716 { instruction
, 0 , 0 , 32,
18717 0xfc000007, 0x20000001, &NMD::SPECIAL2
, 0,
18718 UDI_
}, /* SPECIAL2 */
18719 { instruction
, 0 , 0 , 32,
18720 0xfc000007, 0x20000002, &NMD::COP2_1
, 0,
18721 CP2_
}, /* COP2_1 */
18722 { instruction
, 0 , 0 , 32,
18723 0xfc000007, 0x20000003, &NMD::UDI
, 0,
18725 { reserved_block
, 0 , 0 , 32,
18726 0xfc000007, 0x20000004, 0 , 0,
18727 0x0 }, /* P32A~*(4) */
18728 { pool
, _POOL32A5
, 128 , 32,
18729 0xfc000007, 0x20000005, 0 , 0,
18730 0x0 }, /* _POOL32A5 */
18731 { reserved_block
, 0 , 0 , 32,
18732 0xfc000007, 0x20000006, 0 , 0,
18733 0x0 }, /* P32A~*(6) */
18734 { pool
, _POOL32A7
, 8 , 32,
18735 0xfc000007, 0x20000007, 0 , 0,
18736 0x0 }, /* _POOL32A7 */
18740 NMD::Pool
NMD::P_GP_D
[2] = {
18741 { instruction
, 0 , 0 , 32,
18742 0xfc000007, 0x40000001, &NMD::LD_GP_
, 0,
18743 MIPS64_
}, /* LD[GP] */
18744 { instruction
, 0 , 0 , 32,
18745 0xfc000007, 0x40000005, &NMD::SD_GP_
, 0,
18746 MIPS64_
}, /* SD[GP] */
18750 NMD::Pool
NMD::P_GP_W
[4] = {
18751 { instruction
, 0 , 0 , 32,
18752 0xfc000003, 0x40000000, &NMD::ADDIU_GP_W_
, 0,
18753 0x0 }, /* ADDIU[GP.W] */
18754 { pool
, P_GP_D
, 2 , 32,
18755 0xfc000003, 0x40000001, 0 , 0,
18756 0x0 }, /* P.GP.D */
18757 { instruction
, 0 , 0 , 32,
18758 0xfc000003, 0x40000002, &NMD::LW_GP_
, 0,
18759 0x0 }, /* LW[GP] */
18760 { instruction
, 0 , 0 , 32,
18761 0xfc000003, 0x40000003, &NMD::SW_GP_
, 0,
18762 0x0 }, /* SW[GP] */
18766 NMD::Pool
NMD::POOL48I
[32] = {
18767 { instruction
, 0 , 0 , 48,
18768 0xfc1f00000000ull
, 0x600000000000ull
, &NMD::LI_48_
, 0,
18769 XMMS_
}, /* LI[48] */
18770 { instruction
, 0 , 0 , 48,
18771 0xfc1f00000000ull
, 0x600100000000ull
, &NMD::ADDIU_48_
, 0,
18772 XMMS_
}, /* ADDIU[48] */
18773 { instruction
, 0 , 0 , 48,
18774 0xfc1f00000000ull
, 0x600200000000ull
, &NMD::ADDIU_GP48_
, 0,
18775 XMMS_
}, /* ADDIU[GP48] */
18776 { instruction
, 0 , 0 , 48,
18777 0xfc1f00000000ull
, 0x600300000000ull
, &NMD::ADDIUPC_48_
, 0,
18778 XMMS_
}, /* ADDIUPC[48] */
18779 { reserved_block
, 0 , 0 , 48,
18780 0xfc1f00000000ull
, 0x600400000000ull
, 0 , 0,
18781 0x0 }, /* POOL48I~*(4) */
18782 { reserved_block
, 0 , 0 , 48,
18783 0xfc1f00000000ull
, 0x600500000000ull
, 0 , 0,
18784 0x0 }, /* POOL48I~*(5) */
18785 { reserved_block
, 0 , 0 , 48,
18786 0xfc1f00000000ull
, 0x600600000000ull
, 0 , 0,
18787 0x0 }, /* POOL48I~*(6) */
18788 { reserved_block
, 0 , 0 , 48,
18789 0xfc1f00000000ull
, 0x600700000000ull
, 0 , 0,
18790 0x0 }, /* POOL48I~*(7) */
18791 { reserved_block
, 0 , 0 , 48,
18792 0xfc1f00000000ull
, 0x600800000000ull
, 0 , 0,
18793 0x0 }, /* POOL48I~*(8) */
18794 { reserved_block
, 0 , 0 , 48,
18795 0xfc1f00000000ull
, 0x600900000000ull
, 0 , 0,
18796 0x0 }, /* POOL48I~*(9) */
18797 { reserved_block
, 0 , 0 , 48,
18798 0xfc1f00000000ull
, 0x600a00000000ull
, 0 , 0,
18799 0x0 }, /* POOL48I~*(10) */
18800 { instruction
, 0 , 0 , 48,
18801 0xfc1f00000000ull
, 0x600b00000000ull
, &NMD::LWPC_48_
, 0,
18802 XMMS_
}, /* LWPC[48] */
18803 { reserved_block
, 0 , 0 , 48,
18804 0xfc1f00000000ull
, 0x600c00000000ull
, 0 , 0,
18805 0x0 }, /* POOL48I~*(12) */
18806 { reserved_block
, 0 , 0 , 48,
18807 0xfc1f00000000ull
, 0x600d00000000ull
, 0 , 0,
18808 0x0 }, /* POOL48I~*(13) */
18809 { reserved_block
, 0 , 0 , 48,
18810 0xfc1f00000000ull
, 0x600e00000000ull
, 0 , 0,
18811 0x0 }, /* POOL48I~*(14) */
18812 { instruction
, 0 , 0 , 48,
18813 0xfc1f00000000ull
, 0x600f00000000ull
, &NMD::SWPC_48_
, 0,
18814 XMMS_
}, /* SWPC[48] */
18815 { reserved_block
, 0 , 0 , 48,
18816 0xfc1f00000000ull
, 0x601000000000ull
, 0 , 0,
18817 0x0 }, /* POOL48I~*(16) */
18818 { instruction
, 0 , 0 , 48,
18819 0xfc1f00000000ull
, 0x601100000000ull
, &NMD::DADDIU_48_
, 0,
18820 MIPS64_
}, /* DADDIU[48] */
18821 { reserved_block
, 0 , 0 , 48,
18822 0xfc1f00000000ull
, 0x601200000000ull
, 0 , 0,
18823 0x0 }, /* POOL48I~*(18) */
18824 { reserved_block
, 0 , 0 , 48,
18825 0xfc1f00000000ull
, 0x601300000000ull
, 0 , 0,
18826 0x0 }, /* POOL48I~*(19) */
18827 { instruction
, 0 , 0 , 48,
18828 0xfc1f00000000ull
, 0x601400000000ull
, &NMD::DLUI_48_
, 0,
18829 MIPS64_
}, /* DLUI[48] */
18830 { reserved_block
, 0 , 0 , 48,
18831 0xfc1f00000000ull
, 0x601500000000ull
, 0 , 0,
18832 0x0 }, /* POOL48I~*(21) */
18833 { reserved_block
, 0 , 0 , 48,
18834 0xfc1f00000000ull
, 0x601600000000ull
, 0 , 0,
18835 0x0 }, /* POOL48I~*(22) */
18836 { reserved_block
, 0 , 0 , 48,
18837 0xfc1f00000000ull
, 0x601700000000ull
, 0 , 0,
18838 0x0 }, /* POOL48I~*(23) */
18839 { reserved_block
, 0 , 0 , 48,
18840 0xfc1f00000000ull
, 0x601800000000ull
, 0 , 0,
18841 0x0 }, /* POOL48I~*(24) */
18842 { reserved_block
, 0 , 0 , 48,
18843 0xfc1f00000000ull
, 0x601900000000ull
, 0 , 0,
18844 0x0 }, /* POOL48I~*(25) */
18845 { reserved_block
, 0 , 0 , 48,
18846 0xfc1f00000000ull
, 0x601a00000000ull
, 0 , 0,
18847 0x0 }, /* POOL48I~*(26) */
18848 { instruction
, 0 , 0 , 48,
18849 0xfc1f00000000ull
, 0x601b00000000ull
, &NMD::LDPC_48_
, 0,
18850 MIPS64_
}, /* LDPC[48] */
18851 { reserved_block
, 0 , 0 , 48,
18852 0xfc1f00000000ull
, 0x601c00000000ull
, 0 , 0,
18853 0x0 }, /* POOL48I~*(28) */
18854 { reserved_block
, 0 , 0 , 48,
18855 0xfc1f00000000ull
, 0x601d00000000ull
, 0 , 0,
18856 0x0 }, /* POOL48I~*(29) */
18857 { reserved_block
, 0 , 0 , 48,
18858 0xfc1f00000000ull
, 0x601e00000000ull
, 0 , 0,
18859 0x0 }, /* POOL48I~*(30) */
18860 { instruction
, 0 , 0 , 48,
18861 0xfc1f00000000ull
, 0x601f00000000ull
, &NMD::SDPC_48_
, 0,
18862 MIPS64_
}, /* SDPC[48] */
18866 NMD::Pool
NMD::PP_SR
[4] = {
18867 { instruction
, 0 , 0 , 32,
18868 0xfc10f003, 0x80003000, &NMD::SAVE_32_
, 0,
18869 0x0 }, /* SAVE[32] */
18870 { reserved_block
, 0 , 0 , 32,
18871 0xfc10f003, 0x80003001, 0 , 0,
18872 0x0 }, /* PP.SR~*(1) */
18873 { instruction
, 0 , 0 , 32,
18874 0xfc10f003, 0x80003002, &NMD::RESTORE_32_
, 0,
18875 0x0 }, /* RESTORE[32] */
18876 { return_instruction
, 0 , 0 , 32,
18877 0xfc10f003, 0x80003003, &NMD::RESTORE_JRC_32_
, 0,
18878 0x0 }, /* RESTORE.JRC[32] */
18882 NMD::Pool
NMD::P_SR_F
[8] = {
18883 { instruction
, 0 , 0 , 32,
18884 0xfc10f007, 0x80103000, &NMD::SAVEF
, 0,
18885 CP1_
}, /* SAVEF */
18886 { instruction
, 0 , 0 , 32,
18887 0xfc10f007, 0x80103001, &NMD::RESTOREF
, 0,
18888 CP1_
}, /* RESTOREF */
18889 { reserved_block
, 0 , 0 , 32,
18890 0xfc10f007, 0x80103002, 0 , 0,
18891 0x0 }, /* P.SR.F~*(2) */
18892 { reserved_block
, 0 , 0 , 32,
18893 0xfc10f007, 0x80103003, 0 , 0,
18894 0x0 }, /* P.SR.F~*(3) */
18895 { reserved_block
, 0 , 0 , 32,
18896 0xfc10f007, 0x80103004, 0 , 0,
18897 0x0 }, /* P.SR.F~*(4) */
18898 { reserved_block
, 0 , 0 , 32,
18899 0xfc10f007, 0x80103005, 0 , 0,
18900 0x0 }, /* P.SR.F~*(5) */
18901 { reserved_block
, 0 , 0 , 32,
18902 0xfc10f007, 0x80103006, 0 , 0,
18903 0x0 }, /* P.SR.F~*(6) */
18904 { reserved_block
, 0 , 0 , 32,
18905 0xfc10f007, 0x80103007, 0 , 0,
18906 0x0 }, /* P.SR.F~*(7) */
18910 NMD::Pool
NMD::P_SR
[2] = {
18911 { pool
, PP_SR
, 4 , 32,
18912 0xfc10f000, 0x80003000, 0 , 0,
18914 { pool
, P_SR_F
, 8 , 32,
18915 0xfc10f000, 0x80103000, 0 , 0,
18916 0x0 }, /* P.SR.F */
18920 NMD::Pool
NMD::P_SLL
[5] = {
18921 { instruction
, 0 , 0 , 32,
18922 0xffe0f1ff, 0x8000c000, &NMD::NOP_32_
, 0,
18923 0x0 }, /* NOP[32] */
18924 { instruction
, 0 , 0 , 32,
18925 0xffe0f1ff, 0x8000c003, &NMD::EHB
, 0,
18927 { instruction
, 0 , 0 , 32,
18928 0xffe0f1ff, 0x8000c005, &NMD::PAUSE
, 0,
18930 { instruction
, 0 , 0 , 32,
18931 0xffe0f1ff, 0x8000c006, &NMD::SYNC
, 0,
18933 { instruction
, 0 , 0 , 32,
18934 0xfc00f1e0, 0x8000c000, &NMD::SLL_32_
, 0,
18935 0x0 }, /* SLL[32] */
18939 NMD::Pool
NMD::P_SHIFT
[16] = {
18940 { pool
, P_SLL
, 5 , 32,
18941 0xfc00f1e0, 0x8000c000, 0 , 0,
18943 { reserved_block
, 0 , 0 , 32,
18944 0xfc00f1e0, 0x8000c020, 0 , 0,
18945 0x0 }, /* P.SHIFT~*(1) */
18946 { instruction
, 0 , 0 , 32,
18947 0xfc00f1e0, 0x8000c040, &NMD::SRL_32_
, 0,
18948 0x0 }, /* SRL[32] */
18949 { reserved_block
, 0 , 0 , 32,
18950 0xfc00f1e0, 0x8000c060, 0 , 0,
18951 0x0 }, /* P.SHIFT~*(3) */
18952 { instruction
, 0 , 0 , 32,
18953 0xfc00f1e0, 0x8000c080, &NMD::SRA
, 0,
18955 { reserved_block
, 0 , 0 , 32,
18956 0xfc00f1e0, 0x8000c0a0, 0 , 0,
18957 0x0 }, /* P.SHIFT~*(5) */
18958 { instruction
, 0 , 0 , 32,
18959 0xfc00f1e0, 0x8000c0c0, &NMD::ROTR
, 0,
18961 { reserved_block
, 0 , 0 , 32,
18962 0xfc00f1e0, 0x8000c0e0, 0 , 0,
18963 0x0 }, /* P.SHIFT~*(7) */
18964 { instruction
, 0 , 0 , 32,
18965 0xfc00f1e0, 0x8000c100, &NMD::DSLL
, 0,
18966 MIPS64_
}, /* DSLL */
18967 { instruction
, 0 , 0 , 32,
18968 0xfc00f1e0, 0x8000c120, &NMD::DSLL32
, 0,
18969 MIPS64_
}, /* DSLL32 */
18970 { instruction
, 0 , 0 , 32,
18971 0xfc00f1e0, 0x8000c140, &NMD::DSRL
, 0,
18972 MIPS64_
}, /* DSRL */
18973 { instruction
, 0 , 0 , 32,
18974 0xfc00f1e0, 0x8000c160, &NMD::DSRL32
, 0,
18975 MIPS64_
}, /* DSRL32 */
18976 { instruction
, 0 , 0 , 32,
18977 0xfc00f1e0, 0x8000c180, &NMD::DSRA
, 0,
18978 MIPS64_
}, /* DSRA */
18979 { instruction
, 0 , 0 , 32,
18980 0xfc00f1e0, 0x8000c1a0, &NMD::DSRA32
, 0,
18981 MIPS64_
}, /* DSRA32 */
18982 { instruction
, 0 , 0 , 32,
18983 0xfc00f1e0, 0x8000c1c0, &NMD::DROTR
, 0,
18984 MIPS64_
}, /* DROTR */
18985 { instruction
, 0 , 0 , 32,
18986 0xfc00f1e0, 0x8000c1e0, &NMD::DROTR32
, 0,
18987 MIPS64_
}, /* DROTR32 */
18991 NMD::Pool
NMD::P_ROTX
[4] = {
18992 { instruction
, 0 , 0 , 32,
18993 0xfc00f820, 0x8000d000, &NMD::ROTX
, 0,
18994 XMMS_
}, /* ROTX */
18995 { reserved_block
, 0 , 0 , 32,
18996 0xfc00f820, 0x8000d020, 0 , 0,
18997 0x0 }, /* P.ROTX~*(1) */
18998 { reserved_block
, 0 , 0 , 32,
18999 0xfc00f820, 0x8000d800, 0 , 0,
19000 0x0 }, /* P.ROTX~*(2) */
19001 { reserved_block
, 0 , 0 , 32,
19002 0xfc00f820, 0x8000d820, 0 , 0,
19003 0x0 }, /* P.ROTX~*(3) */
19007 NMD::Pool
NMD::P_INS
[4] = {
19008 { instruction
, 0 , 0 , 32,
19009 0xfc00f820, 0x8000e000, &NMD::INS
, 0,
19011 { instruction
, 0 , 0 , 32,
19012 0xfc00f820, 0x8000e020, &NMD::DINSU
, 0,
19013 MIPS64_
}, /* DINSU */
19014 { instruction
, 0 , 0 , 32,
19015 0xfc00f820, 0x8000e800, &NMD::DINSM
, 0,
19016 MIPS64_
}, /* DINSM */
19017 { instruction
, 0 , 0 , 32,
19018 0xfc00f820, 0x8000e820, &NMD::DINS
, 0,
19019 MIPS64_
}, /* DINS */
19023 NMD::Pool
NMD::P_EXT
[4] = {
19024 { instruction
, 0 , 0 , 32,
19025 0xfc00f820, 0x8000f000, &NMD::EXT
, 0,
19027 { instruction
, 0 , 0 , 32,
19028 0xfc00f820, 0x8000f020, &NMD::DEXTU
, 0,
19029 MIPS64_
}, /* DEXTU */
19030 { instruction
, 0 , 0 , 32,
19031 0xfc00f820, 0x8000f800, &NMD::DEXTM
, 0,
19032 MIPS64_
}, /* DEXTM */
19033 { instruction
, 0 , 0 , 32,
19034 0xfc00f820, 0x8000f820, &NMD::DEXT
, 0,
19035 MIPS64_
}, /* DEXT */
19039 NMD::Pool
NMD::P_U12
[16] = {
19040 { instruction
, 0 , 0 , 32,
19041 0xfc00f000, 0x80000000, &NMD::ORI
, 0,
19043 { instruction
, 0 , 0 , 32,
19044 0xfc00f000, 0x80001000, &NMD::XORI
, 0,
19046 { instruction
, 0 , 0 , 32,
19047 0xfc00f000, 0x80002000, &NMD::ANDI_32_
, 0,
19048 0x0 }, /* ANDI[32] */
19049 { pool
, P_SR
, 2 , 32,
19050 0xfc00f000, 0x80003000, 0 , 0,
19052 { instruction
, 0 , 0 , 32,
19053 0xfc00f000, 0x80004000, &NMD::SLTI
, 0,
19055 { instruction
, 0 , 0 , 32,
19056 0xfc00f000, 0x80005000, &NMD::SLTIU
, 0,
19058 { instruction
, 0 , 0 , 32,
19059 0xfc00f000, 0x80006000, &NMD::SEQI
, 0,
19061 { reserved_block
, 0 , 0 , 32,
19062 0xfc00f000, 0x80007000, 0 , 0,
19063 0x0 }, /* P.U12~*(7) */
19064 { instruction
, 0 , 0 , 32,
19065 0xfc00f000, 0x80008000, &NMD::ADDIU_NEG_
, 0,
19066 0x0 }, /* ADDIU[NEG] */
19067 { instruction
, 0 , 0 , 32,
19068 0xfc00f000, 0x80009000, &NMD::DADDIU_U12_
, 0,
19069 MIPS64_
}, /* DADDIU[U12] */
19070 { instruction
, 0 , 0 , 32,
19071 0xfc00f000, 0x8000a000, &NMD::DADDIU_NEG_
, 0,
19072 MIPS64_
}, /* DADDIU[NEG] */
19073 { instruction
, 0 , 0 , 32,
19074 0xfc00f000, 0x8000b000, &NMD::DROTX
, 0,
19075 MIPS64_
}, /* DROTX */
19076 { pool
, P_SHIFT
, 16 , 32,
19077 0xfc00f000, 0x8000c000, 0 , 0,
19078 0x0 }, /* P.SHIFT */
19079 { pool
, P_ROTX
, 4 , 32,
19080 0xfc00f000, 0x8000d000, 0 , 0,
19081 0x0 }, /* P.ROTX */
19082 { pool
, P_INS
, 4 , 32,
19083 0xfc00f000, 0x8000e000, 0 , 0,
19085 { pool
, P_EXT
, 4 , 32,
19086 0xfc00f000, 0x8000f000, 0 , 0,
19091 NMD::Pool
NMD::RINT_fmt
[2] = {
19092 { instruction
, 0 , 0 , 32,
19093 0xfc0003ff, 0xa0000020, &NMD::RINT_S
, 0,
19094 CP1_
}, /* RINT.S */
19095 { instruction
, 0 , 0 , 32,
19096 0xfc0003ff, 0xa0000220, &NMD::RINT_D
, 0,
19097 CP1_
}, /* RINT.D */
19101 NMD::Pool
NMD::ADD_fmt0
[2] = {
19102 { instruction
, 0 , 0 , 32,
19103 0xfc0003ff, 0xa0000030, &NMD::ADD_S
, 0,
19104 CP1_
}, /* ADD.S */
19105 { reserved_block
, 0 , 0 , 32,
19106 0xfc0003ff, 0xa0000230, 0 , 0,
19107 CP1_
}, /* ADD.fmt0~*(1) */
19111 NMD::Pool
NMD::SELEQZ_fmt
[2] = {
19112 { instruction
, 0 , 0 , 32,
19113 0xfc0003ff, 0xa0000038, &NMD::SELEQZ_S
, 0,
19114 CP1_
}, /* SELEQZ.S */
19115 { instruction
, 0 , 0 , 32,
19116 0xfc0003ff, 0xa0000238, &NMD::SELEQZ_D
, 0,
19117 CP1_
}, /* SELEQZ.D */
19121 NMD::Pool
NMD::CLASS_fmt
[2] = {
19122 { instruction
, 0 , 0 , 32,
19123 0xfc0003ff, 0xa0000060, &NMD::CLASS_S
, 0,
19124 CP1_
}, /* CLASS.S */
19125 { instruction
, 0 , 0 , 32,
19126 0xfc0003ff, 0xa0000260, &NMD::CLASS_D
, 0,
19127 CP1_
}, /* CLASS.D */
19131 NMD::Pool
NMD::SUB_fmt0
[2] = {
19132 { instruction
, 0 , 0 , 32,
19133 0xfc0003ff, 0xa0000070, &NMD::SUB_S
, 0,
19134 CP1_
}, /* SUB.S */
19135 { reserved_block
, 0 , 0 , 32,
19136 0xfc0003ff, 0xa0000270, 0 , 0,
19137 CP1_
}, /* SUB.fmt0~*(1) */
19141 NMD::Pool
NMD::SELNEZ_fmt
[2] = {
19142 { instruction
, 0 , 0 , 32,
19143 0xfc0003ff, 0xa0000078, &NMD::SELNEZ_S
, 0,
19144 CP1_
}, /* SELNEZ.S */
19145 { instruction
, 0 , 0 , 32,
19146 0xfc0003ff, 0xa0000278, &NMD::SELNEZ_D
, 0,
19147 CP1_
}, /* SELNEZ.D */
19151 NMD::Pool
NMD::MUL_fmt0
[2] = {
19152 { instruction
, 0 , 0 , 32,
19153 0xfc0003ff, 0xa00000b0, &NMD::MUL_S
, 0,
19154 CP1_
}, /* MUL.S */
19155 { reserved_block
, 0 , 0 , 32,
19156 0xfc0003ff, 0xa00002b0, 0 , 0,
19157 CP1_
}, /* MUL.fmt0~*(1) */
19161 NMD::Pool
NMD::SEL_fmt
[2] = {
19162 { instruction
, 0 , 0 , 32,
19163 0xfc0003ff, 0xa00000b8, &NMD::SEL_S
, 0,
19164 CP1_
}, /* SEL.S */
19165 { instruction
, 0 , 0 , 32,
19166 0xfc0003ff, 0xa00002b8, &NMD::SEL_D
, 0,
19167 CP1_
}, /* SEL.D */
19171 NMD::Pool
NMD::DIV_fmt0
[2] = {
19172 { instruction
, 0 , 0 , 32,
19173 0xfc0003ff, 0xa00000f0, &NMD::DIV_S
, 0,
19174 CP1_
}, /* DIV.S */
19175 { reserved_block
, 0 , 0 , 32,
19176 0xfc0003ff, 0xa00002f0, 0 , 0,
19177 CP1_
}, /* DIV.fmt0~*(1) */
19181 NMD::Pool
NMD::ADD_fmt1
[2] = {
19182 { instruction
, 0 , 0 , 32,
19183 0xfc0003ff, 0xa0000130, &NMD::ADD_D
, 0,
19184 CP1_
}, /* ADD.D */
19185 { reserved_block
, 0 , 0 , 32,
19186 0xfc0003ff, 0xa0000330, 0 , 0,
19187 CP1_
}, /* ADD.fmt1~*(1) */
19191 NMD::Pool
NMD::SUB_fmt1
[2] = {
19192 { instruction
, 0 , 0 , 32,
19193 0xfc0003ff, 0xa0000170, &NMD::SUB_D
, 0,
19194 CP1_
}, /* SUB.D */
19195 { reserved_block
, 0 , 0 , 32,
19196 0xfc0003ff, 0xa0000370, 0 , 0,
19197 CP1_
}, /* SUB.fmt1~*(1) */
19201 NMD::Pool
NMD::MUL_fmt1
[2] = {
19202 { instruction
, 0 , 0 , 32,
19203 0xfc0003ff, 0xa00001b0, &NMD::MUL_D
, 0,
19204 CP1_
}, /* MUL.D */
19205 { reserved_block
, 0 , 0 , 32,
19206 0xfc0003ff, 0xa00003b0, 0 , 0,
19207 CP1_
}, /* MUL.fmt1~*(1) */
19211 NMD::Pool
NMD::MADDF_fmt
[2] = {
19212 { instruction
, 0 , 0 , 32,
19213 0xfc0003ff, 0xa00001b8, &NMD::MADDF_S
, 0,
19214 CP1_
}, /* MADDF.S */
19215 { instruction
, 0 , 0 , 32,
19216 0xfc0003ff, 0xa00003b8, &NMD::MADDF_D
, 0,
19217 CP1_
}, /* MADDF.D */
19221 NMD::Pool
NMD::DIV_fmt1
[2] = {
19222 { instruction
, 0 , 0 , 32,
19223 0xfc0003ff, 0xa00001f0, &NMD::DIV_D
, 0,
19224 CP1_
}, /* DIV.D */
19225 { reserved_block
, 0 , 0 , 32,
19226 0xfc0003ff, 0xa00003f0, 0 , 0,
19227 CP1_
}, /* DIV.fmt1~*(1) */
19231 NMD::Pool
NMD::MSUBF_fmt
[2] = {
19232 { instruction
, 0 , 0 , 32,
19233 0xfc0003ff, 0xa00001f8, &NMD::MSUBF_S
, 0,
19234 CP1_
}, /* MSUBF.S */
19235 { instruction
, 0 , 0 , 32,
19236 0xfc0003ff, 0xa00003f8, &NMD::MSUBF_D
, 0,
19237 CP1_
}, /* MSUBF.D */
19241 NMD::Pool
NMD::POOL32F_0
[64] = {
19242 { reserved_block
, 0 , 0 , 32,
19243 0xfc0001ff, 0xa0000000, 0 , 0,
19244 CP1_
}, /* POOL32F_0~*(0) */
19245 { reserved_block
, 0 , 0 , 32,
19246 0xfc0001ff, 0xa0000008, 0 , 0,
19247 CP1_
}, /* POOL32F_0~*(1) */
19248 { reserved_block
, 0 , 0 , 32,
19249 0xfc0001ff, 0xa0000010, 0 , 0,
19250 CP1_
}, /* POOL32F_0~*(2) */
19251 { reserved_block
, 0 , 0 , 32,
19252 0xfc0001ff, 0xa0000018, 0 , 0,
19253 CP1_
}, /* POOL32F_0~*(3) */
19254 { pool
, RINT_fmt
, 2 , 32,
19255 0xfc0001ff, 0xa0000020, 0 , 0,
19256 CP1_
}, /* RINT.fmt */
19257 { reserved_block
, 0 , 0 , 32,
19258 0xfc0001ff, 0xa0000028, 0 , 0,
19259 CP1_
}, /* POOL32F_0~*(5) */
19260 { pool
, ADD_fmt0
, 2 , 32,
19261 0xfc0001ff, 0xa0000030, 0 , 0,
19262 CP1_
}, /* ADD.fmt0 */
19263 { pool
, SELEQZ_fmt
, 2 , 32,
19264 0xfc0001ff, 0xa0000038, 0 , 0,
19265 CP1_
}, /* SELEQZ.fmt */
19266 { reserved_block
, 0 , 0 , 32,
19267 0xfc0001ff, 0xa0000040, 0 , 0,
19268 CP1_
}, /* POOL32F_0~*(8) */
19269 { reserved_block
, 0 , 0 , 32,
19270 0xfc0001ff, 0xa0000048, 0 , 0,
19271 CP1_
}, /* POOL32F_0~*(9) */
19272 { reserved_block
, 0 , 0 , 32,
19273 0xfc0001ff, 0xa0000050, 0 , 0,
19274 CP1_
}, /* POOL32F_0~*(10) */
19275 { reserved_block
, 0 , 0 , 32,
19276 0xfc0001ff, 0xa0000058, 0 , 0,
19277 CP1_
}, /* POOL32F_0~*(11) */
19278 { pool
, CLASS_fmt
, 2 , 32,
19279 0xfc0001ff, 0xa0000060, 0 , 0,
19280 CP1_
}, /* CLASS.fmt */
19281 { reserved_block
, 0 , 0 , 32,
19282 0xfc0001ff, 0xa0000068, 0 , 0,
19283 CP1_
}, /* POOL32F_0~*(13) */
19284 { pool
, SUB_fmt0
, 2 , 32,
19285 0xfc0001ff, 0xa0000070, 0 , 0,
19286 CP1_
}, /* SUB.fmt0 */
19287 { pool
, SELNEZ_fmt
, 2 , 32,
19288 0xfc0001ff, 0xa0000078, 0 , 0,
19289 CP1_
}, /* SELNEZ.fmt */
19290 { reserved_block
, 0 , 0 , 32,
19291 0xfc0001ff, 0xa0000080, 0 , 0,
19292 CP1_
}, /* POOL32F_0~*(16) */
19293 { reserved_block
, 0 , 0 , 32,
19294 0xfc0001ff, 0xa0000088, 0 , 0,
19295 CP1_
}, /* POOL32F_0~*(17) */
19296 { reserved_block
, 0 , 0 , 32,
19297 0xfc0001ff, 0xa0000090, 0 , 0,
19298 CP1_
}, /* POOL32F_0~*(18) */
19299 { reserved_block
, 0 , 0 , 32,
19300 0xfc0001ff, 0xa0000098, 0 , 0,
19301 CP1_
}, /* POOL32F_0~*(19) */
19302 { reserved_block
, 0 , 0 , 32,
19303 0xfc0001ff, 0xa00000a0, 0 , 0,
19304 CP1_
}, /* POOL32F_0~*(20) */
19305 { reserved_block
, 0 , 0 , 32,
19306 0xfc0001ff, 0xa00000a8, 0 , 0,
19307 CP1_
}, /* POOL32F_0~*(21) */
19308 { pool
, MUL_fmt0
, 2 , 32,
19309 0xfc0001ff, 0xa00000b0, 0 , 0,
19310 CP1_
}, /* MUL.fmt0 */
19311 { pool
, SEL_fmt
, 2 , 32,
19312 0xfc0001ff, 0xa00000b8, 0 , 0,
19313 CP1_
}, /* SEL.fmt */
19314 { reserved_block
, 0 , 0 , 32,
19315 0xfc0001ff, 0xa00000c0, 0 , 0,
19316 CP1_
}, /* POOL32F_0~*(24) */
19317 { reserved_block
, 0 , 0 , 32,
19318 0xfc0001ff, 0xa00000c8, 0 , 0,
19319 CP1_
}, /* POOL32F_0~*(25) */
19320 { reserved_block
, 0 , 0 , 32,
19321 0xfc0001ff, 0xa00000d0, 0 , 0,
19322 CP1_
}, /* POOL32F_0~*(26) */
19323 { reserved_block
, 0 , 0 , 32,
19324 0xfc0001ff, 0xa00000d8, 0 , 0,
19325 CP1_
}, /* POOL32F_0~*(27) */
19326 { reserved_block
, 0 , 0 , 32,
19327 0xfc0001ff, 0xa00000e0, 0 , 0,
19328 CP1_
}, /* POOL32F_0~*(28) */
19329 { reserved_block
, 0 , 0 , 32,
19330 0xfc0001ff, 0xa00000e8, 0 , 0,
19331 CP1_
}, /* POOL32F_0~*(29) */
19332 { pool
, DIV_fmt0
, 2 , 32,
19333 0xfc0001ff, 0xa00000f0, 0 , 0,
19334 CP1_
}, /* DIV.fmt0 */
19335 { reserved_block
, 0 , 0 , 32,
19336 0xfc0001ff, 0xa00000f8, 0 , 0,
19337 CP1_
}, /* POOL32F_0~*(31) */
19338 { reserved_block
, 0 , 0 , 32,
19339 0xfc0001ff, 0xa0000100, 0 , 0,
19340 CP1_
}, /* POOL32F_0~*(32) */
19341 { reserved_block
, 0 , 0 , 32,
19342 0xfc0001ff, 0xa0000108, 0 , 0,
19343 CP1_
}, /* POOL32F_0~*(33) */
19344 { reserved_block
, 0 , 0 , 32,
19345 0xfc0001ff, 0xa0000110, 0 , 0,
19346 CP1_
}, /* POOL32F_0~*(34) */
19347 { reserved_block
, 0 , 0 , 32,
19348 0xfc0001ff, 0xa0000118, 0 , 0,
19349 CP1_
}, /* POOL32F_0~*(35) */
19350 { reserved_block
, 0 , 0 , 32,
19351 0xfc0001ff, 0xa0000120, 0 , 0,
19352 CP1_
}, /* POOL32F_0~*(36) */
19353 { reserved_block
, 0 , 0 , 32,
19354 0xfc0001ff, 0xa0000128, 0 , 0,
19355 CP1_
}, /* POOL32F_0~*(37) */
19356 { pool
, ADD_fmt1
, 2 , 32,
19357 0xfc0001ff, 0xa0000130, 0 , 0,
19358 CP1_
}, /* ADD.fmt1 */
19359 { reserved_block
, 0 , 0 , 32,
19360 0xfc0001ff, 0xa0000138, 0 , 0,
19361 CP1_
}, /* POOL32F_0~*(39) */
19362 { reserved_block
, 0 , 0 , 32,
19363 0xfc0001ff, 0xa0000140, 0 , 0,
19364 CP1_
}, /* POOL32F_0~*(40) */
19365 { reserved_block
, 0 , 0 , 32,
19366 0xfc0001ff, 0xa0000148, 0 , 0,
19367 CP1_
}, /* POOL32F_0~*(41) */
19368 { reserved_block
, 0 , 0 , 32,
19369 0xfc0001ff, 0xa0000150, 0 , 0,
19370 CP1_
}, /* POOL32F_0~*(42) */
19371 { reserved_block
, 0 , 0 , 32,
19372 0xfc0001ff, 0xa0000158, 0 , 0,
19373 CP1_
}, /* POOL32F_0~*(43) */
19374 { reserved_block
, 0 , 0 , 32,
19375 0xfc0001ff, 0xa0000160, 0 , 0,
19376 CP1_
}, /* POOL32F_0~*(44) */
19377 { reserved_block
, 0 , 0 , 32,
19378 0xfc0001ff, 0xa0000168, 0 , 0,
19379 CP1_
}, /* POOL32F_0~*(45) */
19380 { pool
, SUB_fmt1
, 2 , 32,
19381 0xfc0001ff, 0xa0000170, 0 , 0,
19382 CP1_
}, /* SUB.fmt1 */
19383 { reserved_block
, 0 , 0 , 32,
19384 0xfc0001ff, 0xa0000178, 0 , 0,
19385 CP1_
}, /* POOL32F_0~*(47) */
19386 { reserved_block
, 0 , 0 , 32,
19387 0xfc0001ff, 0xa0000180, 0 , 0,
19388 CP1_
}, /* POOL32F_0~*(48) */
19389 { reserved_block
, 0 , 0 , 32,
19390 0xfc0001ff, 0xa0000188, 0 , 0,
19391 CP1_
}, /* POOL32F_0~*(49) */
19392 { reserved_block
, 0 , 0 , 32,
19393 0xfc0001ff, 0xa0000190, 0 , 0,
19394 CP1_
}, /* POOL32F_0~*(50) */
19395 { reserved_block
, 0 , 0 , 32,
19396 0xfc0001ff, 0xa0000198, 0 , 0,
19397 CP1_
}, /* POOL32F_0~*(51) */
19398 { reserved_block
, 0 , 0 , 32,
19399 0xfc0001ff, 0xa00001a0, 0 , 0,
19400 CP1_
}, /* POOL32F_0~*(52) */
19401 { reserved_block
, 0 , 0 , 32,
19402 0xfc0001ff, 0xa00001a8, 0 , 0,
19403 CP1_
}, /* POOL32F_0~*(53) */
19404 { pool
, MUL_fmt1
, 2 , 32,
19405 0xfc0001ff, 0xa00001b0, 0 , 0,
19406 CP1_
}, /* MUL.fmt1 */
19407 { pool
, MADDF_fmt
, 2 , 32,
19408 0xfc0001ff, 0xa00001b8, 0 , 0,
19409 CP1_
}, /* MADDF.fmt */
19410 { reserved_block
, 0 , 0 , 32,
19411 0xfc0001ff, 0xa00001c0, 0 , 0,
19412 CP1_
}, /* POOL32F_0~*(56) */
19413 { reserved_block
, 0 , 0 , 32,
19414 0xfc0001ff, 0xa00001c8, 0 , 0,
19415 CP1_
}, /* POOL32F_0~*(57) */
19416 { reserved_block
, 0 , 0 , 32,
19417 0xfc0001ff, 0xa00001d0, 0 , 0,
19418 CP1_
}, /* POOL32F_0~*(58) */
19419 { reserved_block
, 0 , 0 , 32,
19420 0xfc0001ff, 0xa00001d8, 0 , 0,
19421 CP1_
}, /* POOL32F_0~*(59) */
19422 { reserved_block
, 0 , 0 , 32,
19423 0xfc0001ff, 0xa00001e0, 0 , 0,
19424 CP1_
}, /* POOL32F_0~*(60) */
19425 { reserved_block
, 0 , 0 , 32,
19426 0xfc0001ff, 0xa00001e8, 0 , 0,
19427 CP1_
}, /* POOL32F_0~*(61) */
19428 { pool
, DIV_fmt1
, 2 , 32,
19429 0xfc0001ff, 0xa00001f0, 0 , 0,
19430 CP1_
}, /* DIV.fmt1 */
19431 { pool
, MSUBF_fmt
, 2 , 32,
19432 0xfc0001ff, 0xa00001f8, 0 , 0,
19433 CP1_
}, /* MSUBF.fmt */
19437 NMD::Pool
NMD::MIN_fmt
[2] = {
19438 { instruction
, 0 , 0 , 32,
19439 0xfc00023f, 0xa0000003, &NMD::MIN_S
, 0,
19440 CP1_
}, /* MIN.S */
19441 { instruction
, 0 , 0 , 32,
19442 0xfc00023f, 0xa0000203, &NMD::MIN_D
, 0,
19443 CP1_
}, /* MIN.D */
19447 NMD::Pool
NMD::MAX_fmt
[2] = {
19448 { instruction
, 0 , 0 , 32,
19449 0xfc00023f, 0xa000000b, &NMD::MAX_S
, 0,
19450 CP1_
}, /* MAX.S */
19451 { instruction
, 0 , 0 , 32,
19452 0xfc00023f, 0xa000020b, &NMD::MAX_D
, 0,
19453 CP1_
}, /* MAX.D */
19457 NMD::Pool
NMD::MINA_fmt
[2] = {
19458 { instruction
, 0 , 0 , 32,
19459 0xfc00023f, 0xa0000023, &NMD::MINA_S
, 0,
19460 CP1_
}, /* MINA.S */
19461 { instruction
, 0 , 0 , 32,
19462 0xfc00023f, 0xa0000223, &NMD::MINA_D
, 0,
19463 CP1_
}, /* MINA.D */
19467 NMD::Pool
NMD::MAXA_fmt
[2] = {
19468 { instruction
, 0 , 0 , 32,
19469 0xfc00023f, 0xa000002b, &NMD::MAXA_S
, 0,
19470 CP1_
}, /* MAXA.S */
19471 { instruction
, 0 , 0 , 32,
19472 0xfc00023f, 0xa000022b, &NMD::MAXA_D
, 0,
19473 CP1_
}, /* MAXA.D */
19477 NMD::Pool
NMD::CVT_L_fmt
[2] = {
19478 { instruction
, 0 , 0 , 32,
19479 0xfc007fff, 0xa000013b, &NMD::CVT_L_S
, 0,
19480 CP1_
}, /* CVT.L.S */
19481 { instruction
, 0 , 0 , 32,
19482 0xfc007fff, 0xa000413b, &NMD::CVT_L_D
, 0,
19483 CP1_
}, /* CVT.L.D */
19487 NMD::Pool
NMD::RSQRT_fmt
[2] = {
19488 { instruction
, 0 , 0 , 32,
19489 0xfc007fff, 0xa000023b, &NMD::RSQRT_S
, 0,
19490 CP1_
}, /* RSQRT.S */
19491 { instruction
, 0 , 0 , 32,
19492 0xfc007fff, 0xa000423b, &NMD::RSQRT_D
, 0,
19493 CP1_
}, /* RSQRT.D */
19497 NMD::Pool
NMD::FLOOR_L_fmt
[2] = {
19498 { instruction
, 0 , 0 , 32,
19499 0xfc007fff, 0xa000033b, &NMD::FLOOR_L_S
, 0,
19500 CP1_
}, /* FLOOR.L.S */
19501 { instruction
, 0 , 0 , 32,
19502 0xfc007fff, 0xa000433b, &NMD::FLOOR_L_D
, 0,
19503 CP1_
}, /* FLOOR.L.D */
19507 NMD::Pool
NMD::CVT_W_fmt
[2] = {
19508 { instruction
, 0 , 0 , 32,
19509 0xfc007fff, 0xa000093b, &NMD::CVT_W_S
, 0,
19510 CP1_
}, /* CVT.W.S */
19511 { instruction
, 0 , 0 , 32,
19512 0xfc007fff, 0xa000493b, &NMD::CVT_W_D
, 0,
19513 CP1_
}, /* CVT.W.D */
19517 NMD::Pool
NMD::SQRT_fmt
[2] = {
19518 { instruction
, 0 , 0 , 32,
19519 0xfc007fff, 0xa0000a3b, &NMD::SQRT_S
, 0,
19520 CP1_
}, /* SQRT.S */
19521 { instruction
, 0 , 0 , 32,
19522 0xfc007fff, 0xa0004a3b, &NMD::SQRT_D
, 0,
19523 CP1_
}, /* SQRT.D */
19527 NMD::Pool
NMD::FLOOR_W_fmt
[2] = {
19528 { instruction
, 0 , 0 , 32,
19529 0xfc007fff, 0xa0000b3b, &NMD::FLOOR_W_S
, 0,
19530 CP1_
}, /* FLOOR.W.S */
19531 { instruction
, 0 , 0 , 32,
19532 0xfc007fff, 0xa0004b3b, &NMD::FLOOR_W_D
, 0,
19533 CP1_
}, /* FLOOR.W.D */
19537 NMD::Pool
NMD::RECIP_fmt
[2] = {
19538 { instruction
, 0 , 0 , 32,
19539 0xfc007fff, 0xa000123b, &NMD::RECIP_S
, 0,
19540 CP1_
}, /* RECIP.S */
19541 { instruction
, 0 , 0 , 32,
19542 0xfc007fff, 0xa000523b, &NMD::RECIP_D
, 0,
19543 CP1_
}, /* RECIP.D */
19547 NMD::Pool
NMD::CEIL_L_fmt
[2] = {
19548 { instruction
, 0 , 0 , 32,
19549 0xfc007fff, 0xa000133b, &NMD::CEIL_L_S
, 0,
19550 CP1_
}, /* CEIL.L.S */
19551 { instruction
, 0 , 0 , 32,
19552 0xfc007fff, 0xa000533b, &NMD::CEIL_L_D
, 0,
19553 CP1_
}, /* CEIL.L.D */
19557 NMD::Pool
NMD::CEIL_W_fmt
[2] = {
19558 { instruction
, 0 , 0 , 32,
19559 0xfc007fff, 0xa0001b3b, &NMD::CEIL_W_S
, 0,
19560 CP1_
}, /* CEIL.W.S */
19561 { instruction
, 0 , 0 , 32,
19562 0xfc007fff, 0xa0005b3b, &NMD::CEIL_W_D
, 0,
19563 CP1_
}, /* CEIL.W.D */
19567 NMD::Pool
NMD::TRUNC_L_fmt
[2] = {
19568 { instruction
, 0 , 0 , 32,
19569 0xfc007fff, 0xa000233b, &NMD::TRUNC_L_S
, 0,
19570 CP1_
}, /* TRUNC.L.S */
19571 { instruction
, 0 , 0 , 32,
19572 0xfc007fff, 0xa000633b, &NMD::TRUNC_L_D
, 0,
19573 CP1_
}, /* TRUNC.L.D */
19577 NMD::Pool
NMD::TRUNC_W_fmt
[2] = {
19578 { instruction
, 0 , 0 , 32,
19579 0xfc007fff, 0xa0002b3b, &NMD::TRUNC_W_S
, 0,
19580 CP1_
}, /* TRUNC.W.S */
19581 { instruction
, 0 , 0 , 32,
19582 0xfc007fff, 0xa0006b3b, &NMD::TRUNC_W_D
, 0,
19583 CP1_
}, /* TRUNC.W.D */
19587 NMD::Pool
NMD::ROUND_L_fmt
[2] = {
19588 { instruction
, 0 , 0 , 32,
19589 0xfc007fff, 0xa000333b, &NMD::ROUND_L_S
, 0,
19590 CP1_
}, /* ROUND.L.S */
19591 { instruction
, 0 , 0 , 32,
19592 0xfc007fff, 0xa000733b, &NMD::ROUND_L_D
, 0,
19593 CP1_
}, /* ROUND.L.D */
19597 NMD::Pool
NMD::ROUND_W_fmt
[2] = {
19598 { instruction
, 0 , 0 , 32,
19599 0xfc007fff, 0xa0003b3b, &NMD::ROUND_W_S
, 0,
19600 CP1_
}, /* ROUND.W.S */
19601 { instruction
, 0 , 0 , 32,
19602 0xfc007fff, 0xa0007b3b, &NMD::ROUND_W_D
, 0,
19603 CP1_
}, /* ROUND.W.D */
19607 NMD::Pool
NMD::POOL32Fxf_0
[64] = {
19608 { reserved_block
, 0 , 0 , 32,
19609 0xfc003fff, 0xa000003b, 0 , 0,
19610 CP1_
}, /* POOL32Fxf_0~*(0) */
19611 { pool
, CVT_L_fmt
, 2 , 32,
19612 0xfc003fff, 0xa000013b, 0 , 0,
19613 CP1_
}, /* CVT.L.fmt */
19614 { pool
, RSQRT_fmt
, 2 , 32,
19615 0xfc003fff, 0xa000023b, 0 , 0,
19616 CP1_
}, /* RSQRT.fmt */
19617 { pool
, FLOOR_L_fmt
, 2 , 32,
19618 0xfc003fff, 0xa000033b, 0 , 0,
19619 CP1_
}, /* FLOOR.L.fmt */
19620 { reserved_block
, 0 , 0 , 32,
19621 0xfc003fff, 0xa000043b, 0 , 0,
19622 CP1_
}, /* POOL32Fxf_0~*(4) */
19623 { reserved_block
, 0 , 0 , 32,
19624 0xfc003fff, 0xa000053b, 0 , 0,
19625 CP1_
}, /* POOL32Fxf_0~*(5) */
19626 { reserved_block
, 0 , 0 , 32,
19627 0xfc003fff, 0xa000063b, 0 , 0,
19628 CP1_
}, /* POOL32Fxf_0~*(6) */
19629 { reserved_block
, 0 , 0 , 32,
19630 0xfc003fff, 0xa000073b, 0 , 0,
19631 CP1_
}, /* POOL32Fxf_0~*(7) */
19632 { reserved_block
, 0 , 0 , 32,
19633 0xfc003fff, 0xa000083b, 0 , 0,
19634 CP1_
}, /* POOL32Fxf_0~*(8) */
19635 { pool
, CVT_W_fmt
, 2 , 32,
19636 0xfc003fff, 0xa000093b, 0 , 0,
19637 CP1_
}, /* CVT.W.fmt */
19638 { pool
, SQRT_fmt
, 2 , 32,
19639 0xfc003fff, 0xa0000a3b, 0 , 0,
19640 CP1_
}, /* SQRT.fmt */
19641 { pool
, FLOOR_W_fmt
, 2 , 32,
19642 0xfc003fff, 0xa0000b3b, 0 , 0,
19643 CP1_
}, /* FLOOR.W.fmt */
19644 { reserved_block
, 0 , 0 , 32,
19645 0xfc003fff, 0xa0000c3b, 0 , 0,
19646 CP1_
}, /* POOL32Fxf_0~*(12) */
19647 { reserved_block
, 0 , 0 , 32,
19648 0xfc003fff, 0xa0000d3b, 0 , 0,
19649 CP1_
}, /* POOL32Fxf_0~*(13) */
19650 { reserved_block
, 0 , 0 , 32,
19651 0xfc003fff, 0xa0000e3b, 0 , 0,
19652 CP1_
}, /* POOL32Fxf_0~*(14) */
19653 { reserved_block
, 0 , 0 , 32,
19654 0xfc003fff, 0xa0000f3b, 0 , 0,
19655 CP1_
}, /* POOL32Fxf_0~*(15) */
19656 { instruction
, 0 , 0 , 32,
19657 0xfc003fff, 0xa000103b, &NMD::CFC1
, 0,
19659 { reserved_block
, 0 , 0 , 32,
19660 0xfc003fff, 0xa000113b, 0 , 0,
19661 CP1_
}, /* POOL32Fxf_0~*(17) */
19662 { pool
, RECIP_fmt
, 2 , 32,
19663 0xfc003fff, 0xa000123b, 0 , 0,
19664 CP1_
}, /* RECIP.fmt */
19665 { pool
, CEIL_L_fmt
, 2 , 32,
19666 0xfc003fff, 0xa000133b, 0 , 0,
19667 CP1_
}, /* CEIL.L.fmt */
19668 { reserved_block
, 0 , 0 , 32,
19669 0xfc003fff, 0xa000143b, 0 , 0,
19670 CP1_
}, /* POOL32Fxf_0~*(20) */
19671 { reserved_block
, 0 , 0 , 32,
19672 0xfc003fff, 0xa000153b, 0 , 0,
19673 CP1_
}, /* POOL32Fxf_0~*(21) */
19674 { reserved_block
, 0 , 0 , 32,
19675 0xfc003fff, 0xa000163b, 0 , 0,
19676 CP1_
}, /* POOL32Fxf_0~*(22) */
19677 { reserved_block
, 0 , 0 , 32,
19678 0xfc003fff, 0xa000173b, 0 , 0,
19679 CP1_
}, /* POOL32Fxf_0~*(23) */
19680 { instruction
, 0 , 0 , 32,
19681 0xfc003fff, 0xa000183b, &NMD::CTC1
, 0,
19683 { reserved_block
, 0 , 0 , 32,
19684 0xfc003fff, 0xa000193b, 0 , 0,
19685 CP1_
}, /* POOL32Fxf_0~*(25) */
19686 { reserved_block
, 0 , 0 , 32,
19687 0xfc003fff, 0xa0001a3b, 0 , 0,
19688 CP1_
}, /* POOL32Fxf_0~*(26) */
19689 { pool
, CEIL_W_fmt
, 2 , 32,
19690 0xfc003fff, 0xa0001b3b, 0 , 0,
19691 CP1_
}, /* CEIL.W.fmt */
19692 { reserved_block
, 0 , 0 , 32,
19693 0xfc003fff, 0xa0001c3b, 0 , 0,
19694 CP1_
}, /* POOL32Fxf_0~*(28) */
19695 { reserved_block
, 0 , 0 , 32,
19696 0xfc003fff, 0xa0001d3b, 0 , 0,
19697 CP1_
}, /* POOL32Fxf_0~*(29) */
19698 { reserved_block
, 0 , 0 , 32,
19699 0xfc003fff, 0xa0001e3b, 0 , 0,
19700 CP1_
}, /* POOL32Fxf_0~*(30) */
19701 { reserved_block
, 0 , 0 , 32,
19702 0xfc003fff, 0xa0001f3b, 0 , 0,
19703 CP1_
}, /* POOL32Fxf_0~*(31) */
19704 { instruction
, 0 , 0 , 32,
19705 0xfc003fff, 0xa000203b, &NMD::MFC1
, 0,
19707 { instruction
, 0 , 0 , 32,
19708 0xfc003fff, 0xa000213b, &NMD::CVT_S_PL
, 0,
19709 CP1_
}, /* CVT.S.PL */
19710 { reserved_block
, 0 , 0 , 32,
19711 0xfc003fff, 0xa000223b, 0 , 0,
19712 CP1_
}, /* POOL32Fxf_0~*(34) */
19713 { pool
, TRUNC_L_fmt
, 2 , 32,
19714 0xfc003fff, 0xa000233b, 0 , 0,
19715 CP1_
}, /* TRUNC.L.fmt */
19716 { instruction
, 0 , 0 , 32,
19717 0xfc003fff, 0xa000243b, &NMD::DMFC1
, 0,
19718 CP1_
| MIPS64_
}, /* DMFC1 */
19719 { reserved_block
, 0 , 0 , 32,
19720 0xfc003fff, 0xa000253b, 0 , 0,
19721 CP1_
}, /* POOL32Fxf_0~*(37) */
19722 { reserved_block
, 0 , 0 , 32,
19723 0xfc003fff, 0xa000263b, 0 , 0,
19724 CP1_
}, /* POOL32Fxf_0~*(38) */
19725 { reserved_block
, 0 , 0 , 32,
19726 0xfc003fff, 0xa000273b, 0 , 0,
19727 CP1_
}, /* POOL32Fxf_0~*(39) */
19728 { instruction
, 0 , 0 , 32,
19729 0xfc003fff, 0xa000283b, &NMD::MTC1
, 0,
19731 { instruction
, 0 , 0 , 32,
19732 0xfc003fff, 0xa000293b, &NMD::CVT_S_PU
, 0,
19733 CP1_
}, /* CVT.S.PU */
19734 { reserved_block
, 0 , 0 , 32,
19735 0xfc003fff, 0xa0002a3b, 0 , 0,
19736 CP1_
}, /* POOL32Fxf_0~*(42) */
19737 { pool
, TRUNC_W_fmt
, 2 , 32,
19738 0xfc003fff, 0xa0002b3b, 0 , 0,
19739 CP1_
}, /* TRUNC.W.fmt */
19740 { instruction
, 0 , 0 , 32,
19741 0xfc003fff, 0xa0002c3b, &NMD::DMTC1
, 0,
19742 CP1_
| MIPS64_
}, /* DMTC1 */
19743 { reserved_block
, 0 , 0 , 32,
19744 0xfc003fff, 0xa0002d3b, 0 , 0,
19745 CP1_
}, /* POOL32Fxf_0~*(45) */
19746 { reserved_block
, 0 , 0 , 32,
19747 0xfc003fff, 0xa0002e3b, 0 , 0,
19748 CP1_
}, /* POOL32Fxf_0~*(46) */
19749 { reserved_block
, 0 , 0 , 32,
19750 0xfc003fff, 0xa0002f3b, 0 , 0,
19751 CP1_
}, /* POOL32Fxf_0~*(47) */
19752 { instruction
, 0 , 0 , 32,
19753 0xfc003fff, 0xa000303b, &NMD::MFHC1
, 0,
19754 CP1_
}, /* MFHC1 */
19755 { reserved_block
, 0 , 0 , 32,
19756 0xfc003fff, 0xa000313b, 0 , 0,
19757 CP1_
}, /* POOL32Fxf_0~*(49) */
19758 { reserved_block
, 0 , 0 , 32,
19759 0xfc003fff, 0xa000323b, 0 , 0,
19760 CP1_
}, /* POOL32Fxf_0~*(50) */
19761 { pool
, ROUND_L_fmt
, 2 , 32,
19762 0xfc003fff, 0xa000333b, 0 , 0,
19763 CP1_
}, /* ROUND.L.fmt */
19764 { reserved_block
, 0 , 0 , 32,
19765 0xfc003fff, 0xa000343b, 0 , 0,
19766 CP1_
}, /* POOL32Fxf_0~*(52) */
19767 { reserved_block
, 0 , 0 , 32,
19768 0xfc003fff, 0xa000353b, 0 , 0,
19769 CP1_
}, /* POOL32Fxf_0~*(53) */
19770 { reserved_block
, 0 , 0 , 32,
19771 0xfc003fff, 0xa000363b, 0 , 0,
19772 CP1_
}, /* POOL32Fxf_0~*(54) */
19773 { reserved_block
, 0 , 0 , 32,
19774 0xfc003fff, 0xa000373b, 0 , 0,
19775 CP1_
}, /* POOL32Fxf_0~*(55) */
19776 { instruction
, 0 , 0 , 32,
19777 0xfc003fff, 0xa000383b, &NMD::MTHC1
, 0,
19778 CP1_
}, /* MTHC1 */
19779 { reserved_block
, 0 , 0 , 32,
19780 0xfc003fff, 0xa000393b, 0 , 0,
19781 CP1_
}, /* POOL32Fxf_0~*(57) */
19782 { reserved_block
, 0 , 0 , 32,
19783 0xfc003fff, 0xa0003a3b, 0 , 0,
19784 CP1_
}, /* POOL32Fxf_0~*(58) */
19785 { pool
, ROUND_W_fmt
, 2 , 32,
19786 0xfc003fff, 0xa0003b3b, 0 , 0,
19787 CP1_
}, /* ROUND.W.fmt */
19788 { reserved_block
, 0 , 0 , 32,
19789 0xfc003fff, 0xa0003c3b, 0 , 0,
19790 CP1_
}, /* POOL32Fxf_0~*(60) */
19791 { reserved_block
, 0 , 0 , 32,
19792 0xfc003fff, 0xa0003d3b, 0 , 0,
19793 CP1_
}, /* POOL32Fxf_0~*(61) */
19794 { reserved_block
, 0 , 0 , 32,
19795 0xfc003fff, 0xa0003e3b, 0 , 0,
19796 CP1_
}, /* POOL32Fxf_0~*(62) */
19797 { reserved_block
, 0 , 0 , 32,
19798 0xfc003fff, 0xa0003f3b, 0 , 0,
19799 CP1_
}, /* POOL32Fxf_0~*(63) */
19803 NMD::Pool
NMD::MOV_fmt
[4] = {
19804 { instruction
, 0 , 0 , 32,
19805 0xfc007fff, 0xa000007b, &NMD::MOV_S
, 0,
19806 CP1_
}, /* MOV.S */
19807 { instruction
, 0 , 0 , 32,
19808 0xfc007fff, 0xa000207b, &NMD::MOV_D
, 0,
19809 CP1_
}, /* MOV.D */
19810 { reserved_block
, 0 , 0 , 32,
19811 0xfc007fff, 0xa000407b, 0 , 0,
19812 CP1_
}, /* MOV.fmt~*(2) */
19813 { reserved_block
, 0 , 0 , 32,
19814 0xfc007fff, 0xa000607b, 0 , 0,
19815 CP1_
}, /* MOV.fmt~*(3) */
19819 NMD::Pool
NMD::ABS_fmt
[4] = {
19820 { instruction
, 0 , 0 , 32,
19821 0xfc007fff, 0xa000037b, &NMD::ABS_S
, 0,
19822 CP1_
}, /* ABS.S */
19823 { instruction
, 0 , 0 , 32,
19824 0xfc007fff, 0xa000237b, &NMD::ABS_D
, 0,
19825 CP1_
}, /* ABS.D */
19826 { reserved_block
, 0 , 0 , 32,
19827 0xfc007fff, 0xa000437b, 0 , 0,
19828 CP1_
}, /* ABS.fmt~*(2) */
19829 { reserved_block
, 0 , 0 , 32,
19830 0xfc007fff, 0xa000637b, 0 , 0,
19831 CP1_
}, /* ABS.fmt~*(3) */
19835 NMD::Pool
NMD::NEG_fmt
[4] = {
19836 { instruction
, 0 , 0 , 32,
19837 0xfc007fff, 0xa0000b7b, &NMD::NEG_S
, 0,
19838 CP1_
}, /* NEG.S */
19839 { instruction
, 0 , 0 , 32,
19840 0xfc007fff, 0xa0002b7b, &NMD::NEG_D
, 0,
19841 CP1_
}, /* NEG.D */
19842 { reserved_block
, 0 , 0 , 32,
19843 0xfc007fff, 0xa0004b7b, 0 , 0,
19844 CP1_
}, /* NEG.fmt~*(2) */
19845 { reserved_block
, 0 , 0 , 32,
19846 0xfc007fff, 0xa0006b7b, 0 , 0,
19847 CP1_
}, /* NEG.fmt~*(3) */
19851 NMD::Pool
NMD::CVT_D_fmt
[4] = {
19852 { instruction
, 0 , 0 , 32,
19853 0xfc007fff, 0xa000137b, &NMD::CVT_D_S
, 0,
19854 CP1_
}, /* CVT.D.S */
19855 { instruction
, 0 , 0 , 32,
19856 0xfc007fff, 0xa000337b, &NMD::CVT_D_W
, 0,
19857 CP1_
}, /* CVT.D.W */
19858 { instruction
, 0 , 0 , 32,
19859 0xfc007fff, 0xa000537b, &NMD::CVT_D_L
, 0,
19860 CP1_
}, /* CVT.D.L */
19861 { reserved_block
, 0 , 0 , 32,
19862 0xfc007fff, 0xa000737b, 0 , 0,
19863 CP1_
}, /* CVT.D.fmt~*(3) */
19867 NMD::Pool
NMD::CVT_S_fmt
[4] = {
19868 { instruction
, 0 , 0 , 32,
19869 0xfc007fff, 0xa0001b7b, &NMD::CVT_S_D
, 0,
19870 CP1_
}, /* CVT.S.D */
19871 { instruction
, 0 , 0 , 32,
19872 0xfc007fff, 0xa0003b7b, &NMD::CVT_S_W
, 0,
19873 CP1_
}, /* CVT.S.W */
19874 { instruction
, 0 , 0 , 32,
19875 0xfc007fff, 0xa0005b7b, &NMD::CVT_S_L
, 0,
19876 CP1_
}, /* CVT.S.L */
19877 { reserved_block
, 0 , 0 , 32,
19878 0xfc007fff, 0xa0007b7b, 0 , 0,
19879 CP1_
}, /* CVT.S.fmt~*(3) */
19883 NMD::Pool
NMD::POOL32Fxf_1
[32] = {
19884 { pool
, MOV_fmt
, 4 , 32,
19885 0xfc001fff, 0xa000007b, 0 , 0,
19886 CP1_
}, /* MOV.fmt */
19887 { reserved_block
, 0 , 0 , 32,
19888 0xfc001fff, 0xa000017b, 0 , 0,
19889 CP1_
}, /* POOL32Fxf_1~*(1) */
19890 { reserved_block
, 0 , 0 , 32,
19891 0xfc001fff, 0xa000027b, 0 , 0,
19892 CP1_
}, /* POOL32Fxf_1~*(2) */
19893 { pool
, ABS_fmt
, 4 , 32,
19894 0xfc001fff, 0xa000037b, 0 , 0,
19895 CP1_
}, /* ABS.fmt */
19896 { reserved_block
, 0 , 0 , 32,
19897 0xfc001fff, 0xa000047b, 0 , 0,
19898 CP1_
}, /* POOL32Fxf_1~*(4) */
19899 { reserved_block
, 0 , 0 , 32,
19900 0xfc001fff, 0xa000057b, 0 , 0,
19901 CP1_
}, /* POOL32Fxf_1~*(5) */
19902 { reserved_block
, 0 , 0 , 32,
19903 0xfc001fff, 0xa000067b, 0 , 0,
19904 CP1_
}, /* POOL32Fxf_1~*(6) */
19905 { reserved_block
, 0 , 0 , 32,
19906 0xfc001fff, 0xa000077b, 0 , 0,
19907 CP1_
}, /* POOL32Fxf_1~*(7) */
19908 { reserved_block
, 0 , 0 , 32,
19909 0xfc001fff, 0xa000087b, 0 , 0,
19910 CP1_
}, /* POOL32Fxf_1~*(8) */
19911 { reserved_block
, 0 , 0 , 32,
19912 0xfc001fff, 0xa000097b, 0 , 0,
19913 CP1_
}, /* POOL32Fxf_1~*(9) */
19914 { reserved_block
, 0 , 0 , 32,
19915 0xfc001fff, 0xa0000a7b, 0 , 0,
19916 CP1_
}, /* POOL32Fxf_1~*(10) */
19917 { pool
, NEG_fmt
, 4 , 32,
19918 0xfc001fff, 0xa0000b7b, 0 , 0,
19919 CP1_
}, /* NEG.fmt */
19920 { reserved_block
, 0 , 0 , 32,
19921 0xfc001fff, 0xa0000c7b, 0 , 0,
19922 CP1_
}, /* POOL32Fxf_1~*(12) */
19923 { reserved_block
, 0 , 0 , 32,
19924 0xfc001fff, 0xa0000d7b, 0 , 0,
19925 CP1_
}, /* POOL32Fxf_1~*(13) */
19926 { reserved_block
, 0 , 0 , 32,
19927 0xfc001fff, 0xa0000e7b, 0 , 0,
19928 CP1_
}, /* POOL32Fxf_1~*(14) */
19929 { reserved_block
, 0 , 0 , 32,
19930 0xfc001fff, 0xa0000f7b, 0 , 0,
19931 CP1_
}, /* POOL32Fxf_1~*(15) */
19932 { reserved_block
, 0 , 0 , 32,
19933 0xfc001fff, 0xa000107b, 0 , 0,
19934 CP1_
}, /* POOL32Fxf_1~*(16) */
19935 { reserved_block
, 0 , 0 , 32,
19936 0xfc001fff, 0xa000117b, 0 , 0,
19937 CP1_
}, /* POOL32Fxf_1~*(17) */
19938 { reserved_block
, 0 , 0 , 32,
19939 0xfc001fff, 0xa000127b, 0 , 0,
19940 CP1_
}, /* POOL32Fxf_1~*(18) */
19941 { pool
, CVT_D_fmt
, 4 , 32,
19942 0xfc001fff, 0xa000137b, 0 , 0,
19943 CP1_
}, /* CVT.D.fmt */
19944 { reserved_block
, 0 , 0 , 32,
19945 0xfc001fff, 0xa000147b, 0 , 0,
19946 CP1_
}, /* POOL32Fxf_1~*(20) */
19947 { reserved_block
, 0 , 0 , 32,
19948 0xfc001fff, 0xa000157b, 0 , 0,
19949 CP1_
}, /* POOL32Fxf_1~*(21) */
19950 { reserved_block
, 0 , 0 , 32,
19951 0xfc001fff, 0xa000167b, 0 , 0,
19952 CP1_
}, /* POOL32Fxf_1~*(22) */
19953 { reserved_block
, 0 , 0 , 32,
19954 0xfc001fff, 0xa000177b, 0 , 0,
19955 CP1_
}, /* POOL32Fxf_1~*(23) */
19956 { reserved_block
, 0 , 0 , 32,
19957 0xfc001fff, 0xa000187b, 0 , 0,
19958 CP1_
}, /* POOL32Fxf_1~*(24) */
19959 { reserved_block
, 0 , 0 , 32,
19960 0xfc001fff, 0xa000197b, 0 , 0,
19961 CP1_
}, /* POOL32Fxf_1~*(25) */
19962 { reserved_block
, 0 , 0 , 32,
19963 0xfc001fff, 0xa0001a7b, 0 , 0,
19964 CP1_
}, /* POOL32Fxf_1~*(26) */
19965 { pool
, CVT_S_fmt
, 4 , 32,
19966 0xfc001fff, 0xa0001b7b, 0 , 0,
19967 CP1_
}, /* CVT.S.fmt */
19968 { reserved_block
, 0 , 0 , 32,
19969 0xfc001fff, 0xa0001c7b, 0 , 0,
19970 CP1_
}, /* POOL32Fxf_1~*(28) */
19971 { reserved_block
, 0 , 0 , 32,
19972 0xfc001fff, 0xa0001d7b, 0 , 0,
19973 CP1_
}, /* POOL32Fxf_1~*(29) */
19974 { reserved_block
, 0 , 0 , 32,
19975 0xfc001fff, 0xa0001e7b, 0 , 0,
19976 CP1_
}, /* POOL32Fxf_1~*(30) */
19977 { reserved_block
, 0 , 0 , 32,
19978 0xfc001fff, 0xa0001f7b, 0 , 0,
19979 CP1_
}, /* POOL32Fxf_1~*(31) */
19983 NMD::Pool
NMD::POOL32Fxf
[4] = {
19984 { pool
, POOL32Fxf_0
, 64 , 32,
19985 0xfc0000ff, 0xa000003b, 0 , 0,
19986 CP1_
}, /* POOL32Fxf_0 */
19987 { pool
, POOL32Fxf_1
, 32 , 32,
19988 0xfc0000ff, 0xa000007b, 0 , 0,
19989 CP1_
}, /* POOL32Fxf_1 */
19990 { reserved_block
, 0 , 0 , 32,
19991 0xfc0000ff, 0xa00000bb, 0 , 0,
19992 CP1_
}, /* POOL32Fxf~*(2) */
19993 { reserved_block
, 0 , 0 , 32,
19994 0xfc0000ff, 0xa00000fb, 0 , 0,
19995 CP1_
}, /* POOL32Fxf~*(3) */
19999 NMD::Pool
NMD::POOL32F_3
[8] = {
20000 { pool
, MIN_fmt
, 2 , 32,
20001 0xfc00003f, 0xa0000003, 0 , 0,
20002 CP1_
}, /* MIN.fmt */
20003 { pool
, MAX_fmt
, 2 , 32,
20004 0xfc00003f, 0xa000000b, 0 , 0,
20005 CP1_
}, /* MAX.fmt */
20006 { reserved_block
, 0 , 0 , 32,
20007 0xfc00003f, 0xa0000013, 0 , 0,
20008 CP1_
}, /* POOL32F_3~*(2) */
20009 { reserved_block
, 0 , 0 , 32,
20010 0xfc00003f, 0xa000001b, 0 , 0,
20011 CP1_
}, /* POOL32F_3~*(3) */
20012 { pool
, MINA_fmt
, 2 , 32,
20013 0xfc00003f, 0xa0000023, 0 , 0,
20014 CP1_
}, /* MINA.fmt */
20015 { pool
, MAXA_fmt
, 2 , 32,
20016 0xfc00003f, 0xa000002b, 0 , 0,
20017 CP1_
}, /* MAXA.fmt */
20018 { reserved_block
, 0 , 0 , 32,
20019 0xfc00003f, 0xa0000033, 0 , 0,
20020 CP1_
}, /* POOL32F_3~*(6) */
20021 { pool
, POOL32Fxf
, 4 , 32,
20022 0xfc00003f, 0xa000003b, 0 , 0,
20023 CP1_
}, /* POOL32Fxf */
20027 NMD::Pool
NMD::CMP_condn_S
[32] = {
20028 { instruction
, 0 , 0 , 32,
20029 0xfc0007ff, 0xa0000005, &NMD::CMP_AF_S
, 0,
20030 CP1_
}, /* CMP.AF.S */
20031 { instruction
, 0 , 0 , 32,
20032 0xfc0007ff, 0xa0000045, &NMD::CMP_UN_S
, 0,
20033 CP1_
}, /* CMP.UN.S */
20034 { instruction
, 0 , 0 , 32,
20035 0xfc0007ff, 0xa0000085, &NMD::CMP_EQ_S
, 0,
20036 CP1_
}, /* CMP.EQ.S */
20037 { instruction
, 0 , 0 , 32,
20038 0xfc0007ff, 0xa00000c5, &NMD::CMP_UEQ_S
, 0,
20039 CP1_
}, /* CMP.UEQ.S */
20040 { instruction
, 0 , 0 , 32,
20041 0xfc0007ff, 0xa0000105, &NMD::CMP_LT_S
, 0,
20042 CP1_
}, /* CMP.LT.S */
20043 { instruction
, 0 , 0 , 32,
20044 0xfc0007ff, 0xa0000145, &NMD::CMP_ULT_S
, 0,
20045 CP1_
}, /* CMP.ULT.S */
20046 { instruction
, 0 , 0 , 32,
20047 0xfc0007ff, 0xa0000185, &NMD::CMP_LE_S
, 0,
20048 CP1_
}, /* CMP.LE.S */
20049 { instruction
, 0 , 0 , 32,
20050 0xfc0007ff, 0xa00001c5, &NMD::CMP_ULE_S
, 0,
20051 CP1_
}, /* CMP.ULE.S */
20052 { instruction
, 0 , 0 , 32,
20053 0xfc0007ff, 0xa0000205, &NMD::CMP_SAF_S
, 0,
20054 CP1_
}, /* CMP.SAF.S */
20055 { instruction
, 0 , 0 , 32,
20056 0xfc0007ff, 0xa0000245, &NMD::CMP_SUN_S
, 0,
20057 CP1_
}, /* CMP.SUN.S */
20058 { instruction
, 0 , 0 , 32,
20059 0xfc0007ff, 0xa0000285, &NMD::CMP_SEQ_S
, 0,
20060 CP1_
}, /* CMP.SEQ.S */
20061 { instruction
, 0 , 0 , 32,
20062 0xfc0007ff, 0xa00002c5, &NMD::CMP_SUEQ_S
, 0,
20063 CP1_
}, /* CMP.SUEQ.S */
20064 { instruction
, 0 , 0 , 32,
20065 0xfc0007ff, 0xa0000305, &NMD::CMP_SLT_S
, 0,
20066 CP1_
}, /* CMP.SLT.S */
20067 { instruction
, 0 , 0 , 32,
20068 0xfc0007ff, 0xa0000345, &NMD::CMP_SULT_S
, 0,
20069 CP1_
}, /* CMP.SULT.S */
20070 { instruction
, 0 , 0 , 32,
20071 0xfc0007ff, 0xa0000385, &NMD::CMP_SLE_S
, 0,
20072 CP1_
}, /* CMP.SLE.S */
20073 { instruction
, 0 , 0 , 32,
20074 0xfc0007ff, 0xa00003c5, &NMD::CMP_SULE_S
, 0,
20075 CP1_
}, /* CMP.SULE.S */
20076 { reserved_block
, 0 , 0 , 32,
20077 0xfc0007ff, 0xa0000405, 0 , 0,
20078 CP1_
}, /* CMP.condn.S~*(16) */
20079 { instruction
, 0 , 0 , 32,
20080 0xfc0007ff, 0xa0000445, &NMD::CMP_OR_S
, 0,
20081 CP1_
}, /* CMP.OR.S */
20082 { instruction
, 0 , 0 , 32,
20083 0xfc0007ff, 0xa0000485, &NMD::CMP_UNE_S
, 0,
20084 CP1_
}, /* CMP.UNE.S */
20085 { instruction
, 0 , 0 , 32,
20086 0xfc0007ff, 0xa00004c5, &NMD::CMP_NE_S
, 0,
20087 CP1_
}, /* CMP.NE.S */
20088 { reserved_block
, 0 , 0 , 32,
20089 0xfc0007ff, 0xa0000505, 0 , 0,
20090 CP1_
}, /* CMP.condn.S~*(20) */
20091 { reserved_block
, 0 , 0 , 32,
20092 0xfc0007ff, 0xa0000545, 0 , 0,
20093 CP1_
}, /* CMP.condn.S~*(21) */
20094 { reserved_block
, 0 , 0 , 32,
20095 0xfc0007ff, 0xa0000585, 0 , 0,
20096 CP1_
}, /* CMP.condn.S~*(22) */
20097 { reserved_block
, 0 , 0 , 32,
20098 0xfc0007ff, 0xa00005c5, 0 , 0,
20099 CP1_
}, /* CMP.condn.S~*(23) */
20100 { reserved_block
, 0 , 0 , 32,
20101 0xfc0007ff, 0xa0000605, 0 , 0,
20102 CP1_
}, /* CMP.condn.S~*(24) */
20103 { instruction
, 0 , 0 , 32,
20104 0xfc0007ff, 0xa0000645, &NMD::CMP_SOR_S
, 0,
20105 CP1_
}, /* CMP.SOR.S */
20106 { instruction
, 0 , 0 , 32,
20107 0xfc0007ff, 0xa0000685, &NMD::CMP_SUNE_S
, 0,
20108 CP1_
}, /* CMP.SUNE.S */
20109 { instruction
, 0 , 0 , 32,
20110 0xfc0007ff, 0xa00006c5, &NMD::CMP_SNE_S
, 0,
20111 CP1_
}, /* CMP.SNE.S */
20112 { reserved_block
, 0 , 0 , 32,
20113 0xfc0007ff, 0xa0000705, 0 , 0,
20114 CP1_
}, /* CMP.condn.S~*(28) */
20115 { reserved_block
, 0 , 0 , 32,
20116 0xfc0007ff, 0xa0000745, 0 , 0,
20117 CP1_
}, /* CMP.condn.S~*(29) */
20118 { reserved_block
, 0 , 0 , 32,
20119 0xfc0007ff, 0xa0000785, 0 , 0,
20120 CP1_
}, /* CMP.condn.S~*(30) */
20121 { reserved_block
, 0 , 0 , 32,
20122 0xfc0007ff, 0xa00007c5, 0 , 0,
20123 CP1_
}, /* CMP.condn.S~*(31) */
20127 NMD::Pool
NMD::CMP_condn_D
[32] = {
20128 { instruction
, 0 , 0 , 32,
20129 0xfc0007ff, 0xa0000015, &NMD::CMP_AF_D
, 0,
20130 CP1_
}, /* CMP.AF.D */
20131 { instruction
, 0 , 0 , 32,
20132 0xfc0007ff, 0xa0000055, &NMD::CMP_UN_D
, 0,
20133 CP1_
}, /* CMP.UN.D */
20134 { instruction
, 0 , 0 , 32,
20135 0xfc0007ff, 0xa0000095, &NMD::CMP_EQ_D
, 0,
20136 CP1_
}, /* CMP.EQ.D */
20137 { instruction
, 0 , 0 , 32,
20138 0xfc0007ff, 0xa00000d5, &NMD::CMP_UEQ_D
, 0,
20139 CP1_
}, /* CMP.UEQ.D */
20140 { instruction
, 0 , 0 , 32,
20141 0xfc0007ff, 0xa0000115, &NMD::CMP_LT_D
, 0,
20142 CP1_
}, /* CMP.LT.D */
20143 { instruction
, 0 , 0 , 32,
20144 0xfc0007ff, 0xa0000155, &NMD::CMP_ULT_D
, 0,
20145 CP1_
}, /* CMP.ULT.D */
20146 { instruction
, 0 , 0 , 32,
20147 0xfc0007ff, 0xa0000195, &NMD::CMP_LE_D
, 0,
20148 CP1_
}, /* CMP.LE.D */
20149 { instruction
, 0 , 0 , 32,
20150 0xfc0007ff, 0xa00001d5, &NMD::CMP_ULE_D
, 0,
20151 CP1_
}, /* CMP.ULE.D */
20152 { instruction
, 0 , 0 , 32,
20153 0xfc0007ff, 0xa0000215, &NMD::CMP_SAF_D
, 0,
20154 CP1_
}, /* CMP.SAF.D */
20155 { instruction
, 0 , 0 , 32,
20156 0xfc0007ff, 0xa0000255, &NMD::CMP_SUN_D
, 0,
20157 CP1_
}, /* CMP.SUN.D */
20158 { instruction
, 0 , 0 , 32,
20159 0xfc0007ff, 0xa0000295, &NMD::CMP_SEQ_D
, 0,
20160 CP1_
}, /* CMP.SEQ.D */
20161 { instruction
, 0 , 0 , 32,
20162 0xfc0007ff, 0xa00002d5, &NMD::CMP_SUEQ_D
, 0,
20163 CP1_
}, /* CMP.SUEQ.D */
20164 { instruction
, 0 , 0 , 32,
20165 0xfc0007ff, 0xa0000315, &NMD::CMP_SLT_D
, 0,
20166 CP1_
}, /* CMP.SLT.D */
20167 { instruction
, 0 , 0 , 32,
20168 0xfc0007ff, 0xa0000355, &NMD::CMP_SULT_D
, 0,
20169 CP1_
}, /* CMP.SULT.D */
20170 { instruction
, 0 , 0 , 32,
20171 0xfc0007ff, 0xa0000395, &NMD::CMP_SLE_D
, 0,
20172 CP1_
}, /* CMP.SLE.D */
20173 { instruction
, 0 , 0 , 32,
20174 0xfc0007ff, 0xa00003d5, &NMD::CMP_SULE_D
, 0,
20175 CP1_
}, /* CMP.SULE.D */
20176 { reserved_block
, 0 , 0 , 32,
20177 0xfc0007ff, 0xa0000415, 0 , 0,
20178 CP1_
}, /* CMP.condn.D~*(16) */
20179 { instruction
, 0 , 0 , 32,
20180 0xfc0007ff, 0xa0000455, &NMD::CMP_OR_D
, 0,
20181 CP1_
}, /* CMP.OR.D */
20182 { instruction
, 0 , 0 , 32,
20183 0xfc0007ff, 0xa0000495, &NMD::CMP_UNE_D
, 0,
20184 CP1_
}, /* CMP.UNE.D */
20185 { instruction
, 0 , 0 , 32,
20186 0xfc0007ff, 0xa00004d5, &NMD::CMP_NE_D
, 0,
20187 CP1_
}, /* CMP.NE.D */
20188 { reserved_block
, 0 , 0 , 32,
20189 0xfc0007ff, 0xa0000515, 0 , 0,
20190 CP1_
}, /* CMP.condn.D~*(20) */
20191 { reserved_block
, 0 , 0 , 32,
20192 0xfc0007ff, 0xa0000555, 0 , 0,
20193 CP1_
}, /* CMP.condn.D~*(21) */
20194 { reserved_block
, 0 , 0 , 32,
20195 0xfc0007ff, 0xa0000595, 0 , 0,
20196 CP1_
}, /* CMP.condn.D~*(22) */
20197 { reserved_block
, 0 , 0 , 32,
20198 0xfc0007ff, 0xa00005d5, 0 , 0,
20199 CP1_
}, /* CMP.condn.D~*(23) */
20200 { reserved_block
, 0 , 0 , 32,
20201 0xfc0007ff, 0xa0000615, 0 , 0,
20202 CP1_
}, /* CMP.condn.D~*(24) */
20203 { instruction
, 0 , 0 , 32,
20204 0xfc0007ff, 0xa0000655, &NMD::CMP_SOR_D
, 0,
20205 CP1_
}, /* CMP.SOR.D */
20206 { instruction
, 0 , 0 , 32,
20207 0xfc0007ff, 0xa0000695, &NMD::CMP_SUNE_D
, 0,
20208 CP1_
}, /* CMP.SUNE.D */
20209 { instruction
, 0 , 0 , 32,
20210 0xfc0007ff, 0xa00006d5, &NMD::CMP_SNE_D
, 0,
20211 CP1_
}, /* CMP.SNE.D */
20212 { reserved_block
, 0 , 0 , 32,
20213 0xfc0007ff, 0xa0000715, 0 , 0,
20214 CP1_
}, /* CMP.condn.D~*(28) */
20215 { reserved_block
, 0 , 0 , 32,
20216 0xfc0007ff, 0xa0000755, 0 , 0,
20217 CP1_
}, /* CMP.condn.D~*(29) */
20218 { reserved_block
, 0 , 0 , 32,
20219 0xfc0007ff, 0xa0000795, 0 , 0,
20220 CP1_
}, /* CMP.condn.D~*(30) */
20221 { reserved_block
, 0 , 0 , 32,
20222 0xfc0007ff, 0xa00007d5, 0 , 0,
20223 CP1_
}, /* CMP.condn.D~*(31) */
20227 NMD::Pool
NMD::POOL32F_5
[8] = {
20228 { pool
, CMP_condn_S
, 32 , 32,
20229 0xfc00003f, 0xa0000005, 0 , 0,
20230 CP1_
}, /* CMP.condn.S */
20231 { reserved_block
, 0 , 0 , 32,
20232 0xfc00003f, 0xa000000d, 0 , 0,
20233 CP1_
}, /* POOL32F_5~*(1) */
20234 { pool
, CMP_condn_D
, 32 , 32,
20235 0xfc00003f, 0xa0000015, 0 , 0,
20236 CP1_
}, /* CMP.condn.D */
20237 { reserved_block
, 0 , 0 , 32,
20238 0xfc00003f, 0xa000001d, 0 , 0,
20239 CP1_
}, /* POOL32F_5~*(3) */
20240 { reserved_block
, 0 , 0 , 32,
20241 0xfc00003f, 0xa0000025, 0 , 0,
20242 CP1_
}, /* POOL32F_5~*(4) */
20243 { reserved_block
, 0 , 0 , 32,
20244 0xfc00003f, 0xa000002d, 0 , 0,
20245 CP1_
}, /* POOL32F_5~*(5) */
20246 { reserved_block
, 0 , 0 , 32,
20247 0xfc00003f, 0xa0000035, 0 , 0,
20248 CP1_
}, /* POOL32F_5~*(6) */
20249 { reserved_block
, 0 , 0 , 32,
20250 0xfc00003f, 0xa000003d, 0 , 0,
20251 CP1_
}, /* POOL32F_5~*(7) */
20255 NMD::Pool
NMD::POOL32F
[8] = {
20256 { pool
, POOL32F_0
, 64 , 32,
20257 0xfc000007, 0xa0000000, 0 , 0,
20258 CP1_
}, /* POOL32F_0 */
20259 { reserved_block
, 0 , 0 , 32,
20260 0xfc000007, 0xa0000001, 0 , 0,
20261 CP1_
}, /* POOL32F~*(1) */
20262 { reserved_block
, 0 , 0 , 32,
20263 0xfc000007, 0xa0000002, 0 , 0,
20264 CP1_
}, /* POOL32F~*(2) */
20265 { pool
, POOL32F_3
, 8 , 32,
20266 0xfc000007, 0xa0000003, 0 , 0,
20267 CP1_
}, /* POOL32F_3 */
20268 { reserved_block
, 0 , 0 , 32,
20269 0xfc000007, 0xa0000004, 0 , 0,
20270 CP1_
}, /* POOL32F~*(4) */
20271 { pool
, POOL32F_5
, 8 , 32,
20272 0xfc000007, 0xa0000005, 0 , 0,
20273 CP1_
}, /* POOL32F_5 */
20274 { reserved_block
, 0 , 0 , 32,
20275 0xfc000007, 0xa0000006, 0 , 0,
20276 CP1_
}, /* POOL32F~*(6) */
20277 { reserved_block
, 0 , 0 , 32,
20278 0xfc000007, 0xa0000007, 0 , 0,
20279 CP1_
}, /* POOL32F~*(7) */
20283 NMD::Pool
NMD::POOL32S_0
[64] = {
20284 { reserved_block
, 0 , 0 , 32,
20285 0xfc0001ff, 0xc0000000, 0 , 0,
20286 0x0 }, /* POOL32S_0~*(0) */
20287 { instruction
, 0 , 0 , 32,
20288 0xfc0001ff, 0xc0000008, &NMD::DLSA
, 0,
20289 MIPS64_
}, /* DLSA */
20290 { instruction
, 0 , 0 , 32,
20291 0xfc0001ff, 0xc0000010, &NMD::DSLLV
, 0,
20292 MIPS64_
}, /* DSLLV */
20293 { instruction
, 0 , 0 , 32,
20294 0xfc0001ff, 0xc0000018, &NMD::DMUL
, 0,
20295 MIPS64_
}, /* DMUL */
20296 { reserved_block
, 0 , 0 , 32,
20297 0xfc0001ff, 0xc0000020, 0 , 0,
20298 0x0 }, /* POOL32S_0~*(4) */
20299 { reserved_block
, 0 , 0 , 32,
20300 0xfc0001ff, 0xc0000028, 0 , 0,
20301 0x0 }, /* POOL32S_0~*(5) */
20302 { reserved_block
, 0 , 0 , 32,
20303 0xfc0001ff, 0xc0000030, 0 , 0,
20304 0x0 }, /* POOL32S_0~*(6) */
20305 { reserved_block
, 0 , 0 , 32,
20306 0xfc0001ff, 0xc0000038, 0 , 0,
20307 0x0 }, /* POOL32S_0~*(7) */
20308 { reserved_block
, 0 , 0 , 32,
20309 0xfc0001ff, 0xc0000040, 0 , 0,
20310 0x0 }, /* POOL32S_0~*(8) */
20311 { reserved_block
, 0 , 0 , 32,
20312 0xfc0001ff, 0xc0000048, 0 , 0,
20313 0x0 }, /* POOL32S_0~*(9) */
20314 { instruction
, 0 , 0 , 32,
20315 0xfc0001ff, 0xc0000050, &NMD::DSRLV
, 0,
20316 MIPS64_
}, /* DSRLV */
20317 { instruction
, 0 , 0 , 32,
20318 0xfc0001ff, 0xc0000058, &NMD::DMUH
, 0,
20319 MIPS64_
}, /* DMUH */
20320 { reserved_block
, 0 , 0 , 32,
20321 0xfc0001ff, 0xc0000060, 0 , 0,
20322 0x0 }, /* POOL32S_0~*(12) */
20323 { reserved_block
, 0 , 0 , 32,
20324 0xfc0001ff, 0xc0000068, 0 , 0,
20325 0x0 }, /* POOL32S_0~*(13) */
20326 { reserved_block
, 0 , 0 , 32,
20327 0xfc0001ff, 0xc0000070, 0 , 0,
20328 0x0 }, /* POOL32S_0~*(14) */
20329 { reserved_block
, 0 , 0 , 32,
20330 0xfc0001ff, 0xc0000078, 0 , 0,
20331 0x0 }, /* POOL32S_0~*(15) */
20332 { reserved_block
, 0 , 0 , 32,
20333 0xfc0001ff, 0xc0000080, 0 , 0,
20334 0x0 }, /* POOL32S_0~*(16) */
20335 { reserved_block
, 0 , 0 , 32,
20336 0xfc0001ff, 0xc0000088, 0 , 0,
20337 0x0 }, /* POOL32S_0~*(17) */
20338 { instruction
, 0 , 0 , 32,
20339 0xfc0001ff, 0xc0000090, &NMD::DSRAV
, 0,
20340 MIPS64_
}, /* DSRAV */
20341 { instruction
, 0 , 0 , 32,
20342 0xfc0001ff, 0xc0000098, &NMD::DMULU
, 0,
20343 MIPS64_
}, /* DMULU */
20344 { reserved_block
, 0 , 0 , 32,
20345 0xfc0001ff, 0xc00000a0, 0 , 0,
20346 0x0 }, /* POOL32S_0~*(20) */
20347 { reserved_block
, 0 , 0 , 32,
20348 0xfc0001ff, 0xc00000a8, 0 , 0,
20349 0x0 }, /* POOL32S_0~*(21) */
20350 { reserved_block
, 0 , 0 , 32,
20351 0xfc0001ff, 0xc00000b0, 0 , 0,
20352 0x0 }, /* POOL32S_0~*(22) */
20353 { reserved_block
, 0 , 0 , 32,
20354 0xfc0001ff, 0xc00000b8, 0 , 0,
20355 0x0 }, /* POOL32S_0~*(23) */
20356 { reserved_block
, 0 , 0 , 32,
20357 0xfc0001ff, 0xc00000c0, 0 , 0,
20358 0x0 }, /* POOL32S_0~*(24) */
20359 { reserved_block
, 0 , 0 , 32,
20360 0xfc0001ff, 0xc00000c8, 0 , 0,
20361 0x0 }, /* POOL32S_0~*(25) */
20362 { instruction
, 0 , 0 , 32,
20363 0xfc0001ff, 0xc00000d0, &NMD::DROTRV
, 0,
20364 MIPS64_
}, /* DROTRV */
20365 { instruction
, 0 , 0 , 32,
20366 0xfc0001ff, 0xc00000d8, &NMD::DMUHU
, 0,
20367 MIPS64_
}, /* DMUHU */
20368 { reserved_block
, 0 , 0 , 32,
20369 0xfc0001ff, 0xc00000e0, 0 , 0,
20370 0x0 }, /* POOL32S_0~*(28) */
20371 { reserved_block
, 0 , 0 , 32,
20372 0xfc0001ff, 0xc00000e8, 0 , 0,
20373 0x0 }, /* POOL32S_0~*(29) */
20374 { reserved_block
, 0 , 0 , 32,
20375 0xfc0001ff, 0xc00000f0, 0 , 0,
20376 0x0 }, /* POOL32S_0~*(30) */
20377 { reserved_block
, 0 , 0 , 32,
20378 0xfc0001ff, 0xc00000f8, 0 , 0,
20379 0x0 }, /* POOL32S_0~*(31) */
20380 { reserved_block
, 0 , 0 , 32,
20381 0xfc0001ff, 0xc0000100, 0 , 0,
20382 0x0 }, /* POOL32S_0~*(32) */
20383 { reserved_block
, 0 , 0 , 32,
20384 0xfc0001ff, 0xc0000108, 0 , 0,
20385 0x0 }, /* POOL32S_0~*(33) */
20386 { instruction
, 0 , 0 , 32,
20387 0xfc0001ff, 0xc0000110, &NMD::DADD
, 0,
20388 MIPS64_
}, /* DADD */
20389 { instruction
, 0 , 0 , 32,
20390 0xfc0001ff, 0xc0000118, &NMD::DDIV
, 0,
20391 MIPS64_
}, /* DDIV */
20392 { reserved_block
, 0 , 0 , 32,
20393 0xfc0001ff, 0xc0000120, 0 , 0,
20394 0x0 }, /* POOL32S_0~*(36) */
20395 { reserved_block
, 0 , 0 , 32,
20396 0xfc0001ff, 0xc0000128, 0 , 0,
20397 0x0 }, /* POOL32S_0~*(37) */
20398 { reserved_block
, 0 , 0 , 32,
20399 0xfc0001ff, 0xc0000130, 0 , 0,
20400 0x0 }, /* POOL32S_0~*(38) */
20401 { reserved_block
, 0 , 0 , 32,
20402 0xfc0001ff, 0xc0000138, 0 , 0,
20403 0x0 }, /* POOL32S_0~*(39) */
20404 { reserved_block
, 0 , 0 , 32,
20405 0xfc0001ff, 0xc0000140, 0 , 0,
20406 0x0 }, /* POOL32S_0~*(40) */
20407 { reserved_block
, 0 , 0 , 32,
20408 0xfc0001ff, 0xc0000148, 0 , 0,
20409 0x0 }, /* POOL32S_0~*(41) */
20410 { instruction
, 0 , 0 , 32,
20411 0xfc0001ff, 0xc0000150, &NMD::DADDU
, 0,
20412 MIPS64_
}, /* DADDU */
20413 { instruction
, 0 , 0 , 32,
20414 0xfc0001ff, 0xc0000158, &NMD::DMOD
, 0,
20415 MIPS64_
}, /* DMOD */
20416 { reserved_block
, 0 , 0 , 32,
20417 0xfc0001ff, 0xc0000160, 0 , 0,
20418 0x0 }, /* POOL32S_0~*(44) */
20419 { reserved_block
, 0 , 0 , 32,
20420 0xfc0001ff, 0xc0000168, 0 , 0,
20421 0x0 }, /* POOL32S_0~*(45) */
20422 { reserved_block
, 0 , 0 , 32,
20423 0xfc0001ff, 0xc0000170, 0 , 0,
20424 0x0 }, /* POOL32S_0~*(46) */
20425 { reserved_block
, 0 , 0 , 32,
20426 0xfc0001ff, 0xc0000178, 0 , 0,
20427 0x0 }, /* POOL32S_0~*(47) */
20428 { reserved_block
, 0 , 0 , 32,
20429 0xfc0001ff, 0xc0000180, 0 , 0,
20430 0x0 }, /* POOL32S_0~*(48) */
20431 { reserved_block
, 0 , 0 , 32,
20432 0xfc0001ff, 0xc0000188, 0 , 0,
20433 0x0 }, /* POOL32S_0~*(49) */
20434 { instruction
, 0 , 0 , 32,
20435 0xfc0001ff, 0xc0000190, &NMD::DSUB
, 0,
20436 MIPS64_
}, /* DSUB */
20437 { instruction
, 0 , 0 , 32,
20438 0xfc0001ff, 0xc0000198, &NMD::DDIVU
, 0,
20439 MIPS64_
}, /* DDIVU */
20440 { reserved_block
, 0 , 0 , 32,
20441 0xfc0001ff, 0xc00001a0, 0 , 0,
20442 0x0 }, /* POOL32S_0~*(52) */
20443 { reserved_block
, 0 , 0 , 32,
20444 0xfc0001ff, 0xc00001a8, 0 , 0,
20445 0x0 }, /* POOL32S_0~*(53) */
20446 { reserved_block
, 0 , 0 , 32,
20447 0xfc0001ff, 0xc00001b0, 0 , 0,
20448 0x0 }, /* POOL32S_0~*(54) */
20449 { reserved_block
, 0 , 0 , 32,
20450 0xfc0001ff, 0xc00001b8, 0 , 0,
20451 0x0 }, /* POOL32S_0~*(55) */
20452 { reserved_block
, 0 , 0 , 32,
20453 0xfc0001ff, 0xc00001c0, 0 , 0,
20454 0x0 }, /* POOL32S_0~*(56) */
20455 { reserved_block
, 0 , 0 , 32,
20456 0xfc0001ff, 0xc00001c8, 0 , 0,
20457 0x0 }, /* POOL32S_0~*(57) */
20458 { instruction
, 0 , 0 , 32,
20459 0xfc0001ff, 0xc00001d0, &NMD::DSUBU
, 0,
20460 MIPS64_
}, /* DSUBU */
20461 { instruction
, 0 , 0 , 32,
20462 0xfc0001ff, 0xc00001d8, &NMD::DMODU
, 0,
20463 MIPS64_
}, /* DMODU */
20464 { reserved_block
, 0 , 0 , 32,
20465 0xfc0001ff, 0xc00001e0, 0 , 0,
20466 0x0 }, /* POOL32S_0~*(60) */
20467 { reserved_block
, 0 , 0 , 32,
20468 0xfc0001ff, 0xc00001e8, 0 , 0,
20469 0x0 }, /* POOL32S_0~*(61) */
20470 { reserved_block
, 0 , 0 , 32,
20471 0xfc0001ff, 0xc00001f0, 0 , 0,
20472 0x0 }, /* POOL32S_0~*(62) */
20473 { reserved_block
, 0 , 0 , 32,
20474 0xfc0001ff, 0xc00001f8, 0 , 0,
20475 0x0 }, /* POOL32S_0~*(63) */
20479 NMD::Pool
NMD::POOL32Sxf_4
[128] = {
20480 { reserved_block
, 0 , 0 , 32,
20481 0xfc00ffff, 0xc000013c, 0 , 0,
20482 0x0 }, /* POOL32Sxf_4~*(0) */
20483 { reserved_block
, 0 , 0 , 32,
20484 0xfc00ffff, 0xc000033c, 0 , 0,
20485 0x0 }, /* POOL32Sxf_4~*(1) */
20486 { reserved_block
, 0 , 0 , 32,
20487 0xfc00ffff, 0xc000053c, 0 , 0,
20488 0x0 }, /* POOL32Sxf_4~*(2) */
20489 { reserved_block
, 0 , 0 , 32,
20490 0xfc00ffff, 0xc000073c, 0 , 0,
20491 0x0 }, /* POOL32Sxf_4~*(3) */
20492 { reserved_block
, 0 , 0 , 32,
20493 0xfc00ffff, 0xc000093c, 0 , 0,
20494 0x0 }, /* POOL32Sxf_4~*(4) */
20495 { reserved_block
, 0 , 0 , 32,
20496 0xfc00ffff, 0xc0000b3c, 0 , 0,
20497 0x0 }, /* POOL32Sxf_4~*(5) */
20498 { reserved_block
, 0 , 0 , 32,
20499 0xfc00ffff, 0xc0000d3c, 0 , 0,
20500 0x0 }, /* POOL32Sxf_4~*(6) */
20501 { reserved_block
, 0 , 0 , 32,
20502 0xfc00ffff, 0xc0000f3c, 0 , 0,
20503 0x0 }, /* POOL32Sxf_4~*(7) */
20504 { reserved_block
, 0 , 0 , 32,
20505 0xfc00ffff, 0xc000113c, 0 , 0,
20506 0x0 }, /* POOL32Sxf_4~*(8) */
20507 { reserved_block
, 0 , 0 , 32,
20508 0xfc00ffff, 0xc000133c, 0 , 0,
20509 0x0 }, /* POOL32Sxf_4~*(9) */
20510 { reserved_block
, 0 , 0 , 32,
20511 0xfc00ffff, 0xc000153c, 0 , 0,
20512 0x0 }, /* POOL32Sxf_4~*(10) */
20513 { reserved_block
, 0 , 0 , 32,
20514 0xfc00ffff, 0xc000173c, 0 , 0,
20515 0x0 }, /* POOL32Sxf_4~*(11) */
20516 { reserved_block
, 0 , 0 , 32,
20517 0xfc00ffff, 0xc000193c, 0 , 0,
20518 0x0 }, /* POOL32Sxf_4~*(12) */
20519 { reserved_block
, 0 , 0 , 32,
20520 0xfc00ffff, 0xc0001b3c, 0 , 0,
20521 0x0 }, /* POOL32Sxf_4~*(13) */
20522 { reserved_block
, 0 , 0 , 32,
20523 0xfc00ffff, 0xc0001d3c, 0 , 0,
20524 0x0 }, /* POOL32Sxf_4~*(14) */
20525 { reserved_block
, 0 , 0 , 32,
20526 0xfc00ffff, 0xc0001f3c, 0 , 0,
20527 0x0 }, /* POOL32Sxf_4~*(15) */
20528 { reserved_block
, 0 , 0 , 32,
20529 0xfc00ffff, 0xc000213c, 0 , 0,
20530 0x0 }, /* POOL32Sxf_4~*(16) */
20531 { reserved_block
, 0 , 0 , 32,
20532 0xfc00ffff, 0xc000233c, 0 , 0,
20533 0x0 }, /* POOL32Sxf_4~*(17) */
20534 { reserved_block
, 0 , 0 , 32,
20535 0xfc00ffff, 0xc000253c, 0 , 0,
20536 0x0 }, /* POOL32Sxf_4~*(18) */
20537 { reserved_block
, 0 , 0 , 32,
20538 0xfc00ffff, 0xc000273c, 0 , 0,
20539 0x0 }, /* POOL32Sxf_4~*(19) */
20540 { reserved_block
, 0 , 0 , 32,
20541 0xfc00ffff, 0xc000293c, 0 , 0,
20542 0x0 }, /* POOL32Sxf_4~*(20) */
20543 { reserved_block
, 0 , 0 , 32,
20544 0xfc00ffff, 0xc0002b3c, 0 , 0,
20545 0x0 }, /* POOL32Sxf_4~*(21) */
20546 { reserved_block
, 0 , 0 , 32,
20547 0xfc00ffff, 0xc0002d3c, 0 , 0,
20548 0x0 }, /* POOL32Sxf_4~*(22) */
20549 { reserved_block
, 0 , 0 , 32,
20550 0xfc00ffff, 0xc0002f3c, 0 , 0,
20551 0x0 }, /* POOL32Sxf_4~*(23) */
20552 { reserved_block
, 0 , 0 , 32,
20553 0xfc00ffff, 0xc000313c, 0 , 0,
20554 0x0 }, /* POOL32Sxf_4~*(24) */
20555 { reserved_block
, 0 , 0 , 32,
20556 0xfc00ffff, 0xc000333c, 0 , 0,
20557 0x0 }, /* POOL32Sxf_4~*(25) */
20558 { reserved_block
, 0 , 0 , 32,
20559 0xfc00ffff, 0xc000353c, 0 , 0,
20560 0x0 }, /* POOL32Sxf_4~*(26) */
20561 { reserved_block
, 0 , 0 , 32,
20562 0xfc00ffff, 0xc000373c, 0 , 0,
20563 0x0 }, /* POOL32Sxf_4~*(27) */
20564 { reserved_block
, 0 , 0 , 32,
20565 0xfc00ffff, 0xc000393c, 0 , 0,
20566 0x0 }, /* POOL32Sxf_4~*(28) */
20567 { reserved_block
, 0 , 0 , 32,
20568 0xfc00ffff, 0xc0003b3c, 0 , 0,
20569 0x0 }, /* POOL32Sxf_4~*(29) */
20570 { reserved_block
, 0 , 0 , 32,
20571 0xfc00ffff, 0xc0003d3c, 0 , 0,
20572 0x0 }, /* POOL32Sxf_4~*(30) */
20573 { reserved_block
, 0 , 0 , 32,
20574 0xfc00ffff, 0xc0003f3c, 0 , 0,
20575 0x0 }, /* POOL32Sxf_4~*(31) */
20576 { reserved_block
, 0 , 0 , 32,
20577 0xfc00ffff, 0xc000413c, 0 , 0,
20578 0x0 }, /* POOL32Sxf_4~*(32) */
20579 { reserved_block
, 0 , 0 , 32,
20580 0xfc00ffff, 0xc000433c, 0 , 0,
20581 0x0 }, /* POOL32Sxf_4~*(33) */
20582 { reserved_block
, 0 , 0 , 32,
20583 0xfc00ffff, 0xc000453c, 0 , 0,
20584 0x0 }, /* POOL32Sxf_4~*(34) */
20585 { reserved_block
, 0 , 0 , 32,
20586 0xfc00ffff, 0xc000473c, 0 , 0,
20587 0x0 }, /* POOL32Sxf_4~*(35) */
20588 { reserved_block
, 0 , 0 , 32,
20589 0xfc00ffff, 0xc000493c, 0 , 0,
20590 0x0 }, /* POOL32Sxf_4~*(36) */
20591 { instruction
, 0 , 0 , 32,
20592 0xfc00ffff, 0xc0004b3c, &NMD::DCLO
, 0,
20593 MIPS64_
}, /* DCLO */
20594 { reserved_block
, 0 , 0 , 32,
20595 0xfc00ffff, 0xc0004d3c, 0 , 0,
20596 0x0 }, /* POOL32Sxf_4~*(38) */
20597 { reserved_block
, 0 , 0 , 32,
20598 0xfc00ffff, 0xc0004f3c, 0 , 0,
20599 0x0 }, /* POOL32Sxf_4~*(39) */
20600 { reserved_block
, 0 , 0 , 32,
20601 0xfc00ffff, 0xc000513c, 0 , 0,
20602 0x0 }, /* POOL32Sxf_4~*(40) */
20603 { reserved_block
, 0 , 0 , 32,
20604 0xfc00ffff, 0xc000533c, 0 , 0,
20605 0x0 }, /* POOL32Sxf_4~*(41) */
20606 { reserved_block
, 0 , 0 , 32,
20607 0xfc00ffff, 0xc000553c, 0 , 0,
20608 0x0 }, /* POOL32Sxf_4~*(42) */
20609 { reserved_block
, 0 , 0 , 32,
20610 0xfc00ffff, 0xc000573c, 0 , 0,
20611 0x0 }, /* POOL32Sxf_4~*(43) */
20612 { reserved_block
, 0 , 0 , 32,
20613 0xfc00ffff, 0xc000593c, 0 , 0,
20614 0x0 }, /* POOL32Sxf_4~*(44) */
20615 { instruction
, 0 , 0 , 32,
20616 0xfc00ffff, 0xc0005b3c, &NMD::DCLZ
, 0,
20617 MIPS64_
}, /* DCLZ */
20618 { reserved_block
, 0 , 0 , 32,
20619 0xfc00ffff, 0xc0005d3c, 0 , 0,
20620 0x0 }, /* POOL32Sxf_4~*(46) */
20621 { reserved_block
, 0 , 0 , 32,
20622 0xfc00ffff, 0xc0005f3c, 0 , 0,
20623 0x0 }, /* POOL32Sxf_4~*(47) */
20624 { reserved_block
, 0 , 0 , 32,
20625 0xfc00ffff, 0xc000613c, 0 , 0,
20626 0x0 }, /* POOL32Sxf_4~*(48) */
20627 { reserved_block
, 0 , 0 , 32,
20628 0xfc00ffff, 0xc000633c, 0 , 0,
20629 0x0 }, /* POOL32Sxf_4~*(49) */
20630 { reserved_block
, 0 , 0 , 32,
20631 0xfc00ffff, 0xc000653c, 0 , 0,
20632 0x0 }, /* POOL32Sxf_4~*(50) */
20633 { reserved_block
, 0 , 0 , 32,
20634 0xfc00ffff, 0xc000673c, 0 , 0,
20635 0x0 }, /* POOL32Sxf_4~*(51) */
20636 { reserved_block
, 0 , 0 , 32,
20637 0xfc00ffff, 0xc000693c, 0 , 0,
20638 0x0 }, /* POOL32Sxf_4~*(52) */
20639 { reserved_block
, 0 , 0 , 32,
20640 0xfc00ffff, 0xc0006b3c, 0 , 0,
20641 0x0 }, /* POOL32Sxf_4~*(53) */
20642 { reserved_block
, 0 , 0 , 32,
20643 0xfc00ffff, 0xc0006d3c, 0 , 0,
20644 0x0 }, /* POOL32Sxf_4~*(54) */
20645 { reserved_block
, 0 , 0 , 32,
20646 0xfc00ffff, 0xc0006f3c, 0 , 0,
20647 0x0 }, /* POOL32Sxf_4~*(55) */
20648 { reserved_block
, 0 , 0 , 32,
20649 0xfc00ffff, 0xc000713c, 0 , 0,
20650 0x0 }, /* POOL32Sxf_4~*(56) */
20651 { reserved_block
, 0 , 0 , 32,
20652 0xfc00ffff, 0xc000733c, 0 , 0,
20653 0x0 }, /* POOL32Sxf_4~*(57) */
20654 { reserved_block
, 0 , 0 , 32,
20655 0xfc00ffff, 0xc000753c, 0 , 0,
20656 0x0 }, /* POOL32Sxf_4~*(58) */
20657 { reserved_block
, 0 , 0 , 32,
20658 0xfc00ffff, 0xc000773c, 0 , 0,
20659 0x0 }, /* POOL32Sxf_4~*(59) */
20660 { reserved_block
, 0 , 0 , 32,
20661 0xfc00ffff, 0xc000793c, 0 , 0,
20662 0x0 }, /* POOL32Sxf_4~*(60) */
20663 { reserved_block
, 0 , 0 , 32,
20664 0xfc00ffff, 0xc0007b3c, 0 , 0,
20665 0x0 }, /* POOL32Sxf_4~*(61) */
20666 { reserved_block
, 0 , 0 , 32,
20667 0xfc00ffff, 0xc0007d3c, 0 , 0,
20668 0x0 }, /* POOL32Sxf_4~*(62) */
20669 { reserved_block
, 0 , 0 , 32,
20670 0xfc00ffff, 0xc0007f3c, 0 , 0,
20671 0x0 }, /* POOL32Sxf_4~*(63) */
20672 { reserved_block
, 0 , 0 , 32,
20673 0xfc00ffff, 0xc000813c, 0 , 0,
20674 0x0 }, /* POOL32Sxf_4~*(64) */
20675 { reserved_block
, 0 , 0 , 32,
20676 0xfc00ffff, 0xc000833c, 0 , 0,
20677 0x0 }, /* POOL32Sxf_4~*(65) */
20678 { reserved_block
, 0 , 0 , 32,
20679 0xfc00ffff, 0xc000853c, 0 , 0,
20680 0x0 }, /* POOL32Sxf_4~*(66) */
20681 { reserved_block
, 0 , 0 , 32,
20682 0xfc00ffff, 0xc000873c, 0 , 0,
20683 0x0 }, /* POOL32Sxf_4~*(67) */
20684 { reserved_block
, 0 , 0 , 32,
20685 0xfc00ffff, 0xc000893c, 0 , 0,
20686 0x0 }, /* POOL32Sxf_4~*(68) */
20687 { reserved_block
, 0 , 0 , 32,
20688 0xfc00ffff, 0xc0008b3c, 0 , 0,
20689 0x0 }, /* POOL32Sxf_4~*(69) */
20690 { reserved_block
, 0 , 0 , 32,
20691 0xfc00ffff, 0xc0008d3c, 0 , 0,
20692 0x0 }, /* POOL32Sxf_4~*(70) */
20693 { reserved_block
, 0 , 0 , 32,
20694 0xfc00ffff, 0xc0008f3c, 0 , 0,
20695 0x0 }, /* POOL32Sxf_4~*(71) */
20696 { reserved_block
, 0 , 0 , 32,
20697 0xfc00ffff, 0xc000913c, 0 , 0,
20698 0x0 }, /* POOL32Sxf_4~*(72) */
20699 { reserved_block
, 0 , 0 , 32,
20700 0xfc00ffff, 0xc000933c, 0 , 0,
20701 0x0 }, /* POOL32Sxf_4~*(73) */
20702 { reserved_block
, 0 , 0 , 32,
20703 0xfc00ffff, 0xc000953c, 0 , 0,
20704 0x0 }, /* POOL32Sxf_4~*(74) */
20705 { reserved_block
, 0 , 0 , 32,
20706 0xfc00ffff, 0xc000973c, 0 , 0,
20707 0x0 }, /* POOL32Sxf_4~*(75) */
20708 { reserved_block
, 0 , 0 , 32,
20709 0xfc00ffff, 0xc000993c, 0 , 0,
20710 0x0 }, /* POOL32Sxf_4~*(76) */
20711 { reserved_block
, 0 , 0 , 32,
20712 0xfc00ffff, 0xc0009b3c, 0 , 0,
20713 0x0 }, /* POOL32Sxf_4~*(77) */
20714 { reserved_block
, 0 , 0 , 32,
20715 0xfc00ffff, 0xc0009d3c, 0 , 0,
20716 0x0 }, /* POOL32Sxf_4~*(78) */
20717 { reserved_block
, 0 , 0 , 32,
20718 0xfc00ffff, 0xc0009f3c, 0 , 0,
20719 0x0 }, /* POOL32Sxf_4~*(79) */
20720 { reserved_block
, 0 , 0 , 32,
20721 0xfc00ffff, 0xc000a13c, 0 , 0,
20722 0x0 }, /* POOL32Sxf_4~*(80) */
20723 { reserved_block
, 0 , 0 , 32,
20724 0xfc00ffff, 0xc000a33c, 0 , 0,
20725 0x0 }, /* POOL32Sxf_4~*(81) */
20726 { reserved_block
, 0 , 0 , 32,
20727 0xfc00ffff, 0xc000a53c, 0 , 0,
20728 0x0 }, /* POOL32Sxf_4~*(82) */
20729 { reserved_block
, 0 , 0 , 32,
20730 0xfc00ffff, 0xc000a73c, 0 , 0,
20731 0x0 }, /* POOL32Sxf_4~*(83) */
20732 { reserved_block
, 0 , 0 , 32,
20733 0xfc00ffff, 0xc000a93c, 0 , 0,
20734 0x0 }, /* POOL32Sxf_4~*(84) */
20735 { reserved_block
, 0 , 0 , 32,
20736 0xfc00ffff, 0xc000ab3c, 0 , 0,
20737 0x0 }, /* POOL32Sxf_4~*(85) */
20738 { reserved_block
, 0 , 0 , 32,
20739 0xfc00ffff, 0xc000ad3c, 0 , 0,
20740 0x0 }, /* POOL32Sxf_4~*(86) */
20741 { reserved_block
, 0 , 0 , 32,
20742 0xfc00ffff, 0xc000af3c, 0 , 0,
20743 0x0 }, /* POOL32Sxf_4~*(87) */
20744 { reserved_block
, 0 , 0 , 32,
20745 0xfc00ffff, 0xc000b13c, 0 , 0,
20746 0x0 }, /* POOL32Sxf_4~*(88) */
20747 { reserved_block
, 0 , 0 , 32,
20748 0xfc00ffff, 0xc000b33c, 0 , 0,
20749 0x0 }, /* POOL32Sxf_4~*(89) */
20750 { reserved_block
, 0 , 0 , 32,
20751 0xfc00ffff, 0xc000b53c, 0 , 0,
20752 0x0 }, /* POOL32Sxf_4~*(90) */
20753 { reserved_block
, 0 , 0 , 32,
20754 0xfc00ffff, 0xc000b73c, 0 , 0,
20755 0x0 }, /* POOL32Sxf_4~*(91) */
20756 { reserved_block
, 0 , 0 , 32,
20757 0xfc00ffff, 0xc000b93c, 0 , 0,
20758 0x0 }, /* POOL32Sxf_4~*(92) */
20759 { reserved_block
, 0 , 0 , 32,
20760 0xfc00ffff, 0xc000bb3c, 0 , 0,
20761 0x0 }, /* POOL32Sxf_4~*(93) */
20762 { reserved_block
, 0 , 0 , 32,
20763 0xfc00ffff, 0xc000bd3c, 0 , 0,
20764 0x0 }, /* POOL32Sxf_4~*(94) */
20765 { reserved_block
, 0 , 0 , 32,
20766 0xfc00ffff, 0xc000bf3c, 0 , 0,
20767 0x0 }, /* POOL32Sxf_4~*(95) */
20768 { reserved_block
, 0 , 0 , 32,
20769 0xfc00ffff, 0xc000c13c, 0 , 0,
20770 0x0 }, /* POOL32Sxf_4~*(96) */
20771 { reserved_block
, 0 , 0 , 32,
20772 0xfc00ffff, 0xc000c33c, 0 , 0,
20773 0x0 }, /* POOL32Sxf_4~*(97) */
20774 { reserved_block
, 0 , 0 , 32,
20775 0xfc00ffff, 0xc000c53c, 0 , 0,
20776 0x0 }, /* POOL32Sxf_4~*(98) */
20777 { reserved_block
, 0 , 0 , 32,
20778 0xfc00ffff, 0xc000c73c, 0 , 0,
20779 0x0 }, /* POOL32Sxf_4~*(99) */
20780 { reserved_block
, 0 , 0 , 32,
20781 0xfc00ffff, 0xc000c93c, 0 , 0,
20782 0x0 }, /* POOL32Sxf_4~*(100) */
20783 { reserved_block
, 0 , 0 , 32,
20784 0xfc00ffff, 0xc000cb3c, 0 , 0,
20785 0x0 }, /* POOL32Sxf_4~*(101) */
20786 { reserved_block
, 0 , 0 , 32,
20787 0xfc00ffff, 0xc000cd3c, 0 , 0,
20788 0x0 }, /* POOL32Sxf_4~*(102) */
20789 { reserved_block
, 0 , 0 , 32,
20790 0xfc00ffff, 0xc000cf3c, 0 , 0,
20791 0x0 }, /* POOL32Sxf_4~*(103) */
20792 { reserved_block
, 0 , 0 , 32,
20793 0xfc00ffff, 0xc000d13c, 0 , 0,
20794 0x0 }, /* POOL32Sxf_4~*(104) */
20795 { reserved_block
, 0 , 0 , 32,
20796 0xfc00ffff, 0xc000d33c, 0 , 0,
20797 0x0 }, /* POOL32Sxf_4~*(105) */
20798 { reserved_block
, 0 , 0 , 32,
20799 0xfc00ffff, 0xc000d53c, 0 , 0,
20800 0x0 }, /* POOL32Sxf_4~*(106) */
20801 { reserved_block
, 0 , 0 , 32,
20802 0xfc00ffff, 0xc000d73c, 0 , 0,
20803 0x0 }, /* POOL32Sxf_4~*(107) */
20804 { reserved_block
, 0 , 0 , 32,
20805 0xfc00ffff, 0xc000d93c, 0 , 0,
20806 0x0 }, /* POOL32Sxf_4~*(108) */
20807 { reserved_block
, 0 , 0 , 32,
20808 0xfc00ffff, 0xc000db3c, 0 , 0,
20809 0x0 }, /* POOL32Sxf_4~*(109) */
20810 { reserved_block
, 0 , 0 , 32,
20811 0xfc00ffff, 0xc000dd3c, 0 , 0,
20812 0x0 }, /* POOL32Sxf_4~*(110) */
20813 { reserved_block
, 0 , 0 , 32,
20814 0xfc00ffff, 0xc000df3c, 0 , 0,
20815 0x0 }, /* POOL32Sxf_4~*(111) */
20816 { reserved_block
, 0 , 0 , 32,
20817 0xfc00ffff, 0xc000e13c, 0 , 0,
20818 0x0 }, /* POOL32Sxf_4~*(112) */
20819 { reserved_block
, 0 , 0 , 32,
20820 0xfc00ffff, 0xc000e33c, 0 , 0,
20821 0x0 }, /* POOL32Sxf_4~*(113) */
20822 { reserved_block
, 0 , 0 , 32,
20823 0xfc00ffff, 0xc000e53c, 0 , 0,
20824 0x0 }, /* POOL32Sxf_4~*(114) */
20825 { reserved_block
, 0 , 0 , 32,
20826 0xfc00ffff, 0xc000e73c, 0 , 0,
20827 0x0 }, /* POOL32Sxf_4~*(115) */
20828 { reserved_block
, 0 , 0 , 32,
20829 0xfc00ffff, 0xc000e93c, 0 , 0,
20830 0x0 }, /* POOL32Sxf_4~*(116) */
20831 { reserved_block
, 0 , 0 , 32,
20832 0xfc00ffff, 0xc000eb3c, 0 , 0,
20833 0x0 }, /* POOL32Sxf_4~*(117) */
20834 { reserved_block
, 0 , 0 , 32,
20835 0xfc00ffff, 0xc000ed3c, 0 , 0,
20836 0x0 }, /* POOL32Sxf_4~*(118) */
20837 { reserved_block
, 0 , 0 , 32,
20838 0xfc00ffff, 0xc000ef3c, 0 , 0,
20839 0x0 }, /* POOL32Sxf_4~*(119) */
20840 { reserved_block
, 0 , 0 , 32,
20841 0xfc00ffff, 0xc000f13c, 0 , 0,
20842 0x0 }, /* POOL32Sxf_4~*(120) */
20843 { reserved_block
, 0 , 0 , 32,
20844 0xfc00ffff, 0xc000f33c, 0 , 0,
20845 0x0 }, /* POOL32Sxf_4~*(121) */
20846 { reserved_block
, 0 , 0 , 32,
20847 0xfc00ffff, 0xc000f53c, 0 , 0,
20848 0x0 }, /* POOL32Sxf_4~*(122) */
20849 { reserved_block
, 0 , 0 , 32,
20850 0xfc00ffff, 0xc000f73c, 0 , 0,
20851 0x0 }, /* POOL32Sxf_4~*(123) */
20852 { reserved_block
, 0 , 0 , 32,
20853 0xfc00ffff, 0xc000f93c, 0 , 0,
20854 0x0 }, /* POOL32Sxf_4~*(124) */
20855 { reserved_block
, 0 , 0 , 32,
20856 0xfc00ffff, 0xc000fb3c, 0 , 0,
20857 0x0 }, /* POOL32Sxf_4~*(125) */
20858 { reserved_block
, 0 , 0 , 32,
20859 0xfc00ffff, 0xc000fd3c, 0 , 0,
20860 0x0 }, /* POOL32Sxf_4~*(126) */
20861 { reserved_block
, 0 , 0 , 32,
20862 0xfc00ffff, 0xc000ff3c, 0 , 0,
20863 0x0 }, /* POOL32Sxf_4~*(127) */
20867 NMD::Pool
NMD::POOL32Sxf
[8] = {
20868 { reserved_block
, 0 , 0 , 32,
20869 0xfc0001ff, 0xc000003c, 0 , 0,
20870 0x0 }, /* POOL32Sxf~*(0) */
20871 { reserved_block
, 0 , 0 , 32,
20872 0xfc0001ff, 0xc000007c, 0 , 0,
20873 0x0 }, /* POOL32Sxf~*(1) */
20874 { reserved_block
, 0 , 0 , 32,
20875 0xfc0001ff, 0xc00000bc, 0 , 0,
20876 0x0 }, /* POOL32Sxf~*(2) */
20877 { reserved_block
, 0 , 0 , 32,
20878 0xfc0001ff, 0xc00000fc, 0 , 0,
20879 0x0 }, /* POOL32Sxf~*(3) */
20880 { pool
, POOL32Sxf_4
, 128 , 32,
20881 0xfc0001ff, 0xc000013c, 0 , 0,
20882 0x0 }, /* POOL32Sxf_4 */
20883 { reserved_block
, 0 , 0 , 32,
20884 0xfc0001ff, 0xc000017c, 0 , 0,
20885 0x0 }, /* POOL32Sxf~*(5) */
20886 { reserved_block
, 0 , 0 , 32,
20887 0xfc0001ff, 0xc00001bc, 0 , 0,
20888 0x0 }, /* POOL32Sxf~*(6) */
20889 { reserved_block
, 0 , 0 , 32,
20890 0xfc0001ff, 0xc00001fc, 0 , 0,
20891 0x0 }, /* POOL32Sxf~*(7) */
20895 NMD::Pool
NMD::POOL32S_4
[8] = {
20896 { instruction
, 0 , 0 , 32,
20897 0xfc00003f, 0xc0000004, &NMD::EXTD
, 0,
20898 MIPS64_
}, /* EXTD */
20899 { instruction
, 0 , 0 , 32,
20900 0xfc00003f, 0xc000000c, &NMD::EXTD32
, 0,
20901 MIPS64_
}, /* EXTD32 */
20902 { reserved_block
, 0 , 0 , 32,
20903 0xfc00003f, 0xc0000014, 0 , 0,
20904 0x0 }, /* POOL32S_4~*(2) */
20905 { reserved_block
, 0 , 0 , 32,
20906 0xfc00003f, 0xc000001c, 0 , 0,
20907 0x0 }, /* POOL32S_4~*(3) */
20908 { reserved_block
, 0 , 0 , 32,
20909 0xfc00003f, 0xc0000024, 0 , 0,
20910 0x0 }, /* POOL32S_4~*(4) */
20911 { reserved_block
, 0 , 0 , 32,
20912 0xfc00003f, 0xc000002c, 0 , 0,
20913 0x0 }, /* POOL32S_4~*(5) */
20914 { reserved_block
, 0 , 0 , 32,
20915 0xfc00003f, 0xc0000034, 0 , 0,
20916 0x0 }, /* POOL32S_4~*(6) */
20917 { pool
, POOL32Sxf
, 8 , 32,
20918 0xfc00003f, 0xc000003c, 0 , 0,
20919 0x0 }, /* POOL32Sxf */
20923 NMD::Pool
NMD::POOL32S
[8] = {
20924 { pool
, POOL32S_0
, 64 , 32,
20925 0xfc000007, 0xc0000000, 0 , 0,
20926 0x0 }, /* POOL32S_0 */
20927 { reserved_block
, 0 , 0 , 32,
20928 0xfc000007, 0xc0000001, 0 , 0,
20929 0x0 }, /* POOL32S~*(1) */
20930 { reserved_block
, 0 , 0 , 32,
20931 0xfc000007, 0xc0000002, 0 , 0,
20932 0x0 }, /* POOL32S~*(2) */
20933 { reserved_block
, 0 , 0 , 32,
20934 0xfc000007, 0xc0000003, 0 , 0,
20935 0x0 }, /* POOL32S~*(3) */
20936 { pool
, POOL32S_4
, 8 , 32,
20937 0xfc000007, 0xc0000004, 0 , 0,
20938 0x0 }, /* POOL32S_4 */
20939 { reserved_block
, 0 , 0 , 32,
20940 0xfc000007, 0xc0000005, 0 , 0,
20941 0x0 }, /* POOL32S~*(5) */
20942 { reserved_block
, 0 , 0 , 32,
20943 0xfc000007, 0xc0000006, 0 , 0,
20944 0x0 }, /* POOL32S~*(6) */
20945 { reserved_block
, 0 , 0 , 32,
20946 0xfc000007, 0xc0000007, 0 , 0,
20947 0x0 }, /* POOL32S~*(7) */
20951 NMD::Pool
NMD::P_LUI
[2] = {
20952 { instruction
, 0 , 0 , 32,
20953 0xfc000002, 0xe0000000, &NMD::LUI
, 0,
20955 { instruction
, 0 , 0 , 32,
20956 0xfc000002, 0xe0000002, &NMD::ALUIPC
, 0,
20957 0x0 }, /* ALUIPC */
20961 NMD::Pool
NMD::P_GP_LH
[2] = {
20962 { instruction
, 0 , 0 , 32,
20963 0xfc1c0001, 0x44100000, &NMD::LH_GP_
, 0,
20964 0x0 }, /* LH[GP] */
20965 { instruction
, 0 , 0 , 32,
20966 0xfc1c0001, 0x44100001, &NMD::LHU_GP_
, 0,
20967 0x0 }, /* LHU[GP] */
20971 NMD::Pool
NMD::P_GP_SH
[2] = {
20972 { instruction
, 0 , 0 , 32,
20973 0xfc1c0001, 0x44140000, &NMD::SH_GP_
, 0,
20974 0x0 }, /* SH[GP] */
20975 { reserved_block
, 0 , 0 , 32,
20976 0xfc1c0001, 0x44140001, 0 , 0,
20977 0x0 }, /* P.GP.SH~*(1) */
20981 NMD::Pool
NMD::P_GP_CP1
[4] = {
20982 { instruction
, 0 , 0 , 32,
20983 0xfc1c0003, 0x44180000, &NMD::LWC1_GP_
, 0,
20984 CP1_
}, /* LWC1[GP] */
20985 { instruction
, 0 , 0 , 32,
20986 0xfc1c0003, 0x44180001, &NMD::SWC1_GP_
, 0,
20987 CP1_
}, /* SWC1[GP] */
20988 { instruction
, 0 , 0 , 32,
20989 0xfc1c0003, 0x44180002, &NMD::LDC1_GP_
, 0,
20990 CP1_
}, /* LDC1[GP] */
20991 { instruction
, 0 , 0 , 32,
20992 0xfc1c0003, 0x44180003, &NMD::SDC1_GP_
, 0,
20993 CP1_
}, /* SDC1[GP] */
20997 NMD::Pool
NMD::P_GP_M64
[4] = {
20998 { instruction
, 0 , 0 , 32,
20999 0xfc1c0003, 0x441c0000, &NMD::LWU_GP_
, 0,
21000 MIPS64_
}, /* LWU[GP] */
21001 { reserved_block
, 0 , 0 , 32,
21002 0xfc1c0003, 0x441c0001, 0 , 0,
21003 0x0 }, /* P.GP.M64~*(1) */
21004 { reserved_block
, 0 , 0 , 32,
21005 0xfc1c0003, 0x441c0002, 0 , 0,
21006 0x0 }, /* P.GP.M64~*(2) */
21007 { reserved_block
, 0 , 0 , 32,
21008 0xfc1c0003, 0x441c0003, 0 , 0,
21009 0x0 }, /* P.GP.M64~*(3) */
21013 NMD::Pool
NMD::P_GP_BH
[8] = {
21014 { instruction
, 0 , 0 , 32,
21015 0xfc1c0000, 0x44000000, &NMD::LB_GP_
, 0,
21016 0x0 }, /* LB[GP] */
21017 { instruction
, 0 , 0 , 32,
21018 0xfc1c0000, 0x44040000, &NMD::SB_GP_
, 0,
21019 0x0 }, /* SB[GP] */
21020 { instruction
, 0 , 0 , 32,
21021 0xfc1c0000, 0x44080000, &NMD::LBU_GP_
, 0,
21022 0x0 }, /* LBU[GP] */
21023 { instruction
, 0 , 0 , 32,
21024 0xfc1c0000, 0x440c0000, &NMD::ADDIU_GP_B_
, 0,
21025 0x0 }, /* ADDIU[GP.B] */
21026 { pool
, P_GP_LH
, 2 , 32,
21027 0xfc1c0000, 0x44100000, 0 , 0,
21028 0x0 }, /* P.GP.LH */
21029 { pool
, P_GP_SH
, 2 , 32,
21030 0xfc1c0000, 0x44140000, 0 , 0,
21031 0x0 }, /* P.GP.SH */
21032 { pool
, P_GP_CP1
, 4 , 32,
21033 0xfc1c0000, 0x44180000, 0 , 0,
21034 0x0 }, /* P.GP.CP1 */
21035 { pool
, P_GP_M64
, 4 , 32,
21036 0xfc1c0000, 0x441c0000, 0 , 0,
21037 0x0 }, /* P.GP.M64 */
21041 NMD::Pool
NMD::P_LS_U12
[16] = {
21042 { instruction
, 0 , 0 , 32,
21043 0xfc00f000, 0x84000000, &NMD::LB_U12_
, 0,
21044 0x0 }, /* LB[U12] */
21045 { instruction
, 0 , 0 , 32,
21046 0xfc00f000, 0x84001000, &NMD::SB_U12_
, 0,
21047 0x0 }, /* SB[U12] */
21048 { instruction
, 0 , 0 , 32,
21049 0xfc00f000, 0x84002000, &NMD::LBU_U12_
, 0,
21050 0x0 }, /* LBU[U12] */
21051 { instruction
, 0 , 0 , 32,
21052 0xfc00f000, 0x84003000, &NMD::PREF_U12_
, 0,
21053 0x0 }, /* PREF[U12] */
21054 { instruction
, 0 , 0 , 32,
21055 0xfc00f000, 0x84004000, &NMD::LH_U12_
, 0,
21056 0x0 }, /* LH[U12] */
21057 { instruction
, 0 , 0 , 32,
21058 0xfc00f000, 0x84005000, &NMD::SH_U12_
, 0,
21059 0x0 }, /* SH[U12] */
21060 { instruction
, 0 , 0 , 32,
21061 0xfc00f000, 0x84006000, &NMD::LHU_U12_
, 0,
21062 0x0 }, /* LHU[U12] */
21063 { instruction
, 0 , 0 , 32,
21064 0xfc00f000, 0x84007000, &NMD::LWU_U12_
, 0,
21065 MIPS64_
}, /* LWU[U12] */
21066 { instruction
, 0 , 0 , 32,
21067 0xfc00f000, 0x84008000, &NMD::LW_U12_
, 0,
21068 0x0 }, /* LW[U12] */
21069 { instruction
, 0 , 0 , 32,
21070 0xfc00f000, 0x84009000, &NMD::SW_U12_
, 0,
21071 0x0 }, /* SW[U12] */
21072 { instruction
, 0 , 0 , 32,
21073 0xfc00f000, 0x8400a000, &NMD::LWC1_U12_
, 0,
21074 CP1_
}, /* LWC1[U12] */
21075 { instruction
, 0 , 0 , 32,
21076 0xfc00f000, 0x8400b000, &NMD::SWC1_U12_
, 0,
21077 CP1_
}, /* SWC1[U12] */
21078 { instruction
, 0 , 0 , 32,
21079 0xfc00f000, 0x8400c000, &NMD::LD_U12_
, 0,
21080 MIPS64_
}, /* LD[U12] */
21081 { instruction
, 0 , 0 , 32,
21082 0xfc00f000, 0x8400d000, &NMD::SD_U12_
, 0,
21083 MIPS64_
}, /* SD[U12] */
21084 { instruction
, 0 , 0 , 32,
21085 0xfc00f000, 0x8400e000, &NMD::LDC1_U12_
, 0,
21086 CP1_
}, /* LDC1[U12] */
21087 { instruction
, 0 , 0 , 32,
21088 0xfc00f000, 0x8400f000, &NMD::SDC1_U12_
, 0,
21089 CP1_
}, /* SDC1[U12] */
21093 NMD::Pool
NMD::P_PREF_S9_
[2] = {
21094 { instruction
, 0 , 0 , 32,
21095 0xffe07f00, 0xa7e01800, &NMD::SYNCI
, 0,
21097 { instruction
, 0 , 0 , 32,
21098 0xfc007f00, 0xa4001800, &NMD::PREF_S9_
, &NMD::PREF_S9__cond
,
21099 0x0 }, /* PREF[S9] */
21103 NMD::Pool
NMD::P_LS_S0
[16] = {
21104 { instruction
, 0 , 0 , 32,
21105 0xfc007f00, 0xa4000000, &NMD::LB_S9_
, 0,
21106 0x0 }, /* LB[S9] */
21107 { instruction
, 0 , 0 , 32,
21108 0xfc007f00, 0xa4000800, &NMD::SB_S9_
, 0,
21109 0x0 }, /* SB[S9] */
21110 { instruction
, 0 , 0 , 32,
21111 0xfc007f00, 0xa4001000, &NMD::LBU_S9_
, 0,
21112 0x0 }, /* LBU[S9] */
21113 { pool
, P_PREF_S9_
, 2 , 32,
21114 0xfc007f00, 0xa4001800, 0 , 0,
21115 0x0 }, /* P.PREF[S9] */
21116 { instruction
, 0 , 0 , 32,
21117 0xfc007f00, 0xa4002000, &NMD::LH_S9_
, 0,
21118 0x0 }, /* LH[S9] */
21119 { instruction
, 0 , 0 , 32,
21120 0xfc007f00, 0xa4002800, &NMD::SH_S9_
, 0,
21121 0x0 }, /* SH[S9] */
21122 { instruction
, 0 , 0 , 32,
21123 0xfc007f00, 0xa4003000, &NMD::LHU_S9_
, 0,
21124 0x0 }, /* LHU[S9] */
21125 { instruction
, 0 , 0 , 32,
21126 0xfc007f00, 0xa4003800, &NMD::LWU_S9_
, 0,
21127 MIPS64_
}, /* LWU[S9] */
21128 { instruction
, 0 , 0 , 32,
21129 0xfc007f00, 0xa4004000, &NMD::LW_S9_
, 0,
21130 0x0 }, /* LW[S9] */
21131 { instruction
, 0 , 0 , 32,
21132 0xfc007f00, 0xa4004800, &NMD::SW_S9_
, 0,
21133 0x0 }, /* SW[S9] */
21134 { instruction
, 0 , 0 , 32,
21135 0xfc007f00, 0xa4005000, &NMD::LWC1_S9_
, 0,
21136 CP1_
}, /* LWC1[S9] */
21137 { instruction
, 0 , 0 , 32,
21138 0xfc007f00, 0xa4005800, &NMD::SWC1_S9_
, 0,
21139 CP1_
}, /* SWC1[S9] */
21140 { instruction
, 0 , 0 , 32,
21141 0xfc007f00, 0xa4006000, &NMD::LD_S9_
, 0,
21142 MIPS64_
}, /* LD[S9] */
21143 { instruction
, 0 , 0 , 32,
21144 0xfc007f00, 0xa4006800, &NMD::SD_S9_
, 0,
21145 MIPS64_
}, /* SD[S9] */
21146 { instruction
, 0 , 0 , 32,
21147 0xfc007f00, 0xa4007000, &NMD::LDC1_S9_
, 0,
21148 CP1_
}, /* LDC1[S9] */
21149 { instruction
, 0 , 0 , 32,
21150 0xfc007f00, 0xa4007800, &NMD::SDC1_S9_
, 0,
21151 CP1_
}, /* SDC1[S9] */
21155 NMD::Pool
NMD::ASET_ACLR
[2] = {
21156 { instruction
, 0 , 0 , 32,
21157 0xfe007f00, 0xa4001100, &NMD::ASET
, 0,
21159 { instruction
, 0 , 0 , 32,
21160 0xfe007f00, 0xa6001100, &NMD::ACLR
, 0,
21165 NMD::Pool
NMD::P_LL
[4] = {
21166 { instruction
, 0 , 0 , 32,
21167 0xfc007f03, 0xa4005100, &NMD::LL
, 0,
21169 { instruction
, 0 , 0 , 32,
21170 0xfc007f03, 0xa4005101, &NMD::LLWP
, 0,
21172 { reserved_block
, 0 , 0 , 32,
21173 0xfc007f03, 0xa4005102, 0 , 0,
21174 0x0 }, /* P.LL~*(2) */
21175 { reserved_block
, 0 , 0 , 32,
21176 0xfc007f03, 0xa4005103, 0 , 0,
21177 0x0 }, /* P.LL~*(3) */
21181 NMD::Pool
NMD::P_SC
[4] = {
21182 { instruction
, 0 , 0 , 32,
21183 0xfc007f03, 0xa4005900, &NMD::SC
, 0,
21185 { instruction
, 0 , 0 , 32,
21186 0xfc007f03, 0xa4005901, &NMD::SCWP
, 0,
21188 { reserved_block
, 0 , 0 , 32,
21189 0xfc007f03, 0xa4005902, 0 , 0,
21190 0x0 }, /* P.SC~*(2) */
21191 { reserved_block
, 0 , 0 , 32,
21192 0xfc007f03, 0xa4005903, 0 , 0,
21193 0x0 }, /* P.SC~*(3) */
21197 NMD::Pool
NMD::P_LLD
[8] = {
21198 { instruction
, 0 , 0 , 32,
21199 0xfc007f07, 0xa4007100, &NMD::LLD
, 0,
21200 MIPS64_
}, /* LLD */
21201 { instruction
, 0 , 0 , 32,
21202 0xfc007f07, 0xa4007101, &NMD::LLDP
, 0,
21203 MIPS64_
}, /* LLDP */
21204 { reserved_block
, 0 , 0 , 32,
21205 0xfc007f07, 0xa4007102, 0 , 0,
21206 0x0 }, /* P.LLD~*(2) */
21207 { reserved_block
, 0 , 0 , 32,
21208 0xfc007f07, 0xa4007103, 0 , 0,
21209 0x0 }, /* P.LLD~*(3) */
21210 { reserved_block
, 0 , 0 , 32,
21211 0xfc007f07, 0xa4007104, 0 , 0,
21212 0x0 }, /* P.LLD~*(4) */
21213 { reserved_block
, 0 , 0 , 32,
21214 0xfc007f07, 0xa4007105, 0 , 0,
21215 0x0 }, /* P.LLD~*(5) */
21216 { reserved_block
, 0 , 0 , 32,
21217 0xfc007f07, 0xa4007106, 0 , 0,
21218 0x0 }, /* P.LLD~*(6) */
21219 { reserved_block
, 0 , 0 , 32,
21220 0xfc007f07, 0xa4007107, 0 , 0,
21221 0x0 }, /* P.LLD~*(7) */
21225 NMD::Pool
NMD::P_SCD
[8] = {
21226 { instruction
, 0 , 0 , 32,
21227 0xfc007f07, 0xa4007900, &NMD::SCD
, 0,
21228 MIPS64_
}, /* SCD */
21229 { instruction
, 0 , 0 , 32,
21230 0xfc007f07, 0xa4007901, &NMD::SCDP
, 0,
21231 MIPS64_
}, /* SCDP */
21232 { reserved_block
, 0 , 0 , 32,
21233 0xfc007f07, 0xa4007902, 0 , 0,
21234 0x0 }, /* P.SCD~*(2) */
21235 { reserved_block
, 0 , 0 , 32,
21236 0xfc007f07, 0xa4007903, 0 , 0,
21237 0x0 }, /* P.SCD~*(3) */
21238 { reserved_block
, 0 , 0 , 32,
21239 0xfc007f07, 0xa4007904, 0 , 0,
21240 0x0 }, /* P.SCD~*(4) */
21241 { reserved_block
, 0 , 0 , 32,
21242 0xfc007f07, 0xa4007905, 0 , 0,
21243 0x0 }, /* P.SCD~*(5) */
21244 { reserved_block
, 0 , 0 , 32,
21245 0xfc007f07, 0xa4007906, 0 , 0,
21246 0x0 }, /* P.SCD~*(6) */
21247 { reserved_block
, 0 , 0 , 32,
21248 0xfc007f07, 0xa4007907, 0 , 0,
21249 0x0 }, /* P.SCD~*(7) */
21253 NMD::Pool
NMD::P_LS_S1
[16] = {
21254 { reserved_block
, 0 , 0 , 32,
21255 0xfc007f00, 0xa4000100, 0 , 0,
21256 0x0 }, /* P.LS.S1~*(0) */
21257 { reserved_block
, 0 , 0 , 32,
21258 0xfc007f00, 0xa4000900, 0 , 0,
21259 0x0 }, /* P.LS.S1~*(1) */
21260 { pool
, ASET_ACLR
, 2 , 32,
21261 0xfc007f00, 0xa4001100, 0 , 0,
21262 0x0 }, /* ASET_ACLR */
21263 { reserved_block
, 0 , 0 , 32,
21264 0xfc007f00, 0xa4001900, 0 , 0,
21265 0x0 }, /* P.LS.S1~*(3) */
21266 { instruction
, 0 , 0 , 32,
21267 0xfc007f00, 0xa4002100, &NMD::UALH
, 0,
21268 XMMS_
}, /* UALH */
21269 { instruction
, 0 , 0 , 32,
21270 0xfc007f00, 0xa4002900, &NMD::UASH
, 0,
21271 XMMS_
}, /* UASH */
21272 { reserved_block
, 0 , 0 , 32,
21273 0xfc007f00, 0xa4003100, 0 , 0,
21274 0x0 }, /* P.LS.S1~*(6) */
21275 { instruction
, 0 , 0 , 32,
21276 0xfc007f00, 0xa4003900, &NMD::CACHE
, 0,
21277 CP0_
}, /* CACHE */
21278 { instruction
, 0 , 0 , 32,
21279 0xfc007f00, 0xa4004100, &NMD::LWC2
, 0,
21281 { instruction
, 0 , 0 , 32,
21282 0xfc007f00, 0xa4004900, &NMD::SWC2
, 0,
21284 { pool
, P_LL
, 4 , 32,
21285 0xfc007f00, 0xa4005100, 0 , 0,
21287 { pool
, P_SC
, 4 , 32,
21288 0xfc007f00, 0xa4005900, 0 , 0,
21290 { instruction
, 0 , 0 , 32,
21291 0xfc007f00, 0xa4006100, &NMD::LDC2
, 0,
21293 { instruction
, 0 , 0 , 32,
21294 0xfc007f00, 0xa4006900, &NMD::SDC2
, 0,
21296 { pool
, P_LLD
, 8 , 32,
21297 0xfc007f00, 0xa4007100, 0 , 0,
21299 { pool
, P_SCD
, 8 , 32,
21300 0xfc007f00, 0xa4007900, 0 , 0,
21305 NMD::Pool
NMD::P_PREFE
[2] = {
21306 { instruction
, 0 , 0 , 32,
21307 0xffe07f00, 0xa7e01a00, &NMD::SYNCIE
, 0,
21308 CP0_
| EVA_
}, /* SYNCIE */
21309 { instruction
, 0 , 0 , 32,
21310 0xfc007f00, 0xa4001a00, &NMD::PREFE
, &NMD::PREFE_cond
,
21311 CP0_
| EVA_
}, /* PREFE */
21315 NMD::Pool
NMD::P_LLE
[4] = {
21316 { instruction
, 0 , 0 , 32,
21317 0xfc007f03, 0xa4005200, &NMD::LLE
, 0,
21318 CP0_
| EVA_
}, /* LLE */
21319 { instruction
, 0 , 0 , 32,
21320 0xfc007f03, 0xa4005201, &NMD::LLWPE
, 0,
21321 CP0_
| EVA_
}, /* LLWPE */
21322 { reserved_block
, 0 , 0 , 32,
21323 0xfc007f03, 0xa4005202, 0 , 0,
21324 0x0 }, /* P.LLE~*(2) */
21325 { reserved_block
, 0 , 0 , 32,
21326 0xfc007f03, 0xa4005203, 0 , 0,
21327 0x0 }, /* P.LLE~*(3) */
21331 NMD::Pool
NMD::P_SCE
[4] = {
21332 { instruction
, 0 , 0 , 32,
21333 0xfc007f03, 0xa4005a00, &NMD::SCE
, 0,
21334 CP0_
| EVA_
}, /* SCE */
21335 { instruction
, 0 , 0 , 32,
21336 0xfc007f03, 0xa4005a01, &NMD::SCWPE
, 0,
21337 CP0_
| EVA_
}, /* SCWPE */
21338 { reserved_block
, 0 , 0 , 32,
21339 0xfc007f03, 0xa4005a02, 0 , 0,
21340 0x0 }, /* P.SCE~*(2) */
21341 { reserved_block
, 0 , 0 , 32,
21342 0xfc007f03, 0xa4005a03, 0 , 0,
21343 0x0 }, /* P.SCE~*(3) */
21347 NMD::Pool
NMD::P_LS_E0
[16] = {
21348 { instruction
, 0 , 0 , 32,
21349 0xfc007f00, 0xa4000200, &NMD::LBE
, 0,
21350 CP0_
| EVA_
}, /* LBE */
21351 { instruction
, 0 , 0 , 32,
21352 0xfc007f00, 0xa4000a00, &NMD::SBE
, 0,
21353 CP0_
| EVA_
}, /* SBE */
21354 { instruction
, 0 , 0 , 32,
21355 0xfc007f00, 0xa4001200, &NMD::LBUE
, 0,
21356 CP0_
| EVA_
}, /* LBUE */
21357 { pool
, P_PREFE
, 2 , 32,
21358 0xfc007f00, 0xa4001a00, 0 , 0,
21359 0x0 }, /* P.PREFE */
21360 { instruction
, 0 , 0 , 32,
21361 0xfc007f00, 0xa4002200, &NMD::LHE
, 0,
21362 CP0_
| EVA_
}, /* LHE */
21363 { instruction
, 0 , 0 , 32,
21364 0xfc007f00, 0xa4002a00, &NMD::SHE
, 0,
21365 CP0_
| EVA_
}, /* SHE */
21366 { instruction
, 0 , 0 , 32,
21367 0xfc007f00, 0xa4003200, &NMD::LHUE
, 0,
21368 CP0_
| EVA_
}, /* LHUE */
21369 { instruction
, 0 , 0 , 32,
21370 0xfc007f00, 0xa4003a00, &NMD::CACHEE
, 0,
21371 CP0_
| EVA_
}, /* CACHEE */
21372 { instruction
, 0 , 0 , 32,
21373 0xfc007f00, 0xa4004200, &NMD::LWE
, 0,
21374 CP0_
| EVA_
}, /* LWE */
21375 { instruction
, 0 , 0 , 32,
21376 0xfc007f00, 0xa4004a00, &NMD::SWE
, 0,
21377 CP0_
| EVA_
}, /* SWE */
21378 { pool
, P_LLE
, 4 , 32,
21379 0xfc007f00, 0xa4005200, 0 , 0,
21381 { pool
, P_SCE
, 4 , 32,
21382 0xfc007f00, 0xa4005a00, 0 , 0,
21384 { reserved_block
, 0 , 0 , 32,
21385 0xfc007f00, 0xa4006200, 0 , 0,
21386 0x0 }, /* P.LS.E0~*(12) */
21387 { reserved_block
, 0 , 0 , 32,
21388 0xfc007f00, 0xa4006a00, 0 , 0,
21389 0x0 }, /* P.LS.E0~*(13) */
21390 { reserved_block
, 0 , 0 , 32,
21391 0xfc007f00, 0xa4007200, 0 , 0,
21392 0x0 }, /* P.LS.E0~*(14) */
21393 { reserved_block
, 0 , 0 , 32,
21394 0xfc007f00, 0xa4007a00, 0 , 0,
21395 0x0 }, /* P.LS.E0~*(15) */
21399 NMD::Pool
NMD::P_LS_WM
[2] = {
21400 { instruction
, 0 , 0 , 32,
21401 0xfc000f00, 0xa4000400, &NMD::LWM
, 0,
21403 { instruction
, 0 , 0 , 32,
21404 0xfc000f00, 0xa4000c00, &NMD::SWM
, 0,
21409 NMD::Pool
NMD::P_LS_UAWM
[2] = {
21410 { instruction
, 0 , 0 , 32,
21411 0xfc000f00, 0xa4000500, &NMD::UALWM
, 0,
21412 XMMS_
}, /* UALWM */
21413 { instruction
, 0 , 0 , 32,
21414 0xfc000f00, 0xa4000d00, &NMD::UASWM
, 0,
21415 XMMS_
}, /* UASWM */
21419 NMD::Pool
NMD::P_LS_DM
[2] = {
21420 { instruction
, 0 , 0 , 32,
21421 0xfc000f00, 0xa4000600, &NMD::LDM
, 0,
21422 MIPS64_
}, /* LDM */
21423 { instruction
, 0 , 0 , 32,
21424 0xfc000f00, 0xa4000e00, &NMD::SDM
, 0,
21425 MIPS64_
}, /* SDM */
21429 NMD::Pool
NMD::P_LS_UADM
[2] = {
21430 { instruction
, 0 , 0 , 32,
21431 0xfc000f00, 0xa4000700, &NMD::UALDM
, 0,
21432 MIPS64_
}, /* UALDM */
21433 { instruction
, 0 , 0 , 32,
21434 0xfc000f00, 0xa4000f00, &NMD::UASDM
, 0,
21435 MIPS64_
}, /* UASDM */
21439 NMD::Pool
NMD::P_LS_S9
[8] = {
21440 { pool
, P_LS_S0
, 16 , 32,
21441 0xfc000700, 0xa4000000, 0 , 0,
21442 0x0 }, /* P.LS.S0 */
21443 { pool
, P_LS_S1
, 16 , 32,
21444 0xfc000700, 0xa4000100, 0 , 0,
21445 0x0 }, /* P.LS.S1 */
21446 { pool
, P_LS_E0
, 16 , 32,
21447 0xfc000700, 0xa4000200, 0 , 0,
21448 0x0 }, /* P.LS.E0 */
21449 { reserved_block
, 0 , 0 , 32,
21450 0xfc000700, 0xa4000300, 0 , 0,
21451 0x0 }, /* P.LS.S9~*(3) */
21452 { pool
, P_LS_WM
, 2 , 32,
21453 0xfc000700, 0xa4000400, 0 , 0,
21454 0x0 }, /* P.LS.WM */
21455 { pool
, P_LS_UAWM
, 2 , 32,
21456 0xfc000700, 0xa4000500, 0 , 0,
21457 0x0 }, /* P.LS.UAWM */
21458 { pool
, P_LS_DM
, 2 , 32,
21459 0xfc000700, 0xa4000600, 0 , 0,
21460 0x0 }, /* P.LS.DM */
21461 { pool
, P_LS_UADM
, 2 , 32,
21462 0xfc000700, 0xa4000700, 0 , 0,
21463 0x0 }, /* P.LS.UADM */
21467 NMD::Pool
NMD::P_BAL
[2] = {
21468 { branch_instruction
, 0 , 0 , 32,
21469 0xfe000000, 0x28000000, &NMD::BC_32_
, 0,
21470 0x0 }, /* BC[32] */
21471 { call_instruction
, 0 , 0 , 32,
21472 0xfe000000, 0x2a000000, &NMD::BALC_32_
, 0,
21473 0x0 }, /* BALC[32] */
21477 NMD::Pool
NMD::P_BALRSC
[2] = {
21478 { branch_instruction
, 0 , 0 , 32,
21479 0xffe0f000, 0x48008000, &NMD::BRSC
, 0,
21481 { call_instruction
, 0 , 0 , 32,
21482 0xfc00f000, 0x48008000, &NMD::BALRSC
, &NMD::BALRSC_cond
,
21483 0x0 }, /* BALRSC */
21487 NMD::Pool
NMD::P_J
[16] = {
21488 { call_instruction
, 0 , 0 , 32,
21489 0xfc00f000, 0x48000000, &NMD::JALRC_32_
, 0,
21490 0x0 }, /* JALRC[32] */
21491 { call_instruction
, 0 , 0 , 32,
21492 0xfc00f000, 0x48001000, &NMD::JALRC_HB
, 0,
21493 0x0 }, /* JALRC.HB */
21494 { reserved_block
, 0 , 0 , 32,
21495 0xfc00f000, 0x48002000, 0 , 0,
21496 0x0 }, /* P.J~*(2) */
21497 { reserved_block
, 0 , 0 , 32,
21498 0xfc00f000, 0x48003000, 0 , 0,
21499 0x0 }, /* P.J~*(3) */
21500 { reserved_block
, 0 , 0 , 32,
21501 0xfc00f000, 0x48004000, 0 , 0,
21502 0x0 }, /* P.J~*(4) */
21503 { reserved_block
, 0 , 0 , 32,
21504 0xfc00f000, 0x48005000, 0 , 0,
21505 0x0 }, /* P.J~*(5) */
21506 { reserved_block
, 0 , 0 , 32,
21507 0xfc00f000, 0x48006000, 0 , 0,
21508 0x0 }, /* P.J~*(6) */
21509 { reserved_block
, 0 , 0 , 32,
21510 0xfc00f000, 0x48007000, 0 , 0,
21511 0x0 }, /* P.J~*(7) */
21512 { pool
, P_BALRSC
, 2 , 32,
21513 0xfc00f000, 0x48008000, 0 , 0,
21514 0x0 }, /* P.BALRSC */
21515 { reserved_block
, 0 , 0 , 32,
21516 0xfc00f000, 0x48009000, 0 , 0,
21517 0x0 }, /* P.J~*(9) */
21518 { reserved_block
, 0 , 0 , 32,
21519 0xfc00f000, 0x4800a000, 0 , 0,
21520 0x0 }, /* P.J~*(10) */
21521 { reserved_block
, 0 , 0 , 32,
21522 0xfc00f000, 0x4800b000, 0 , 0,
21523 0x0 }, /* P.J~*(11) */
21524 { reserved_block
, 0 , 0 , 32,
21525 0xfc00f000, 0x4800c000, 0 , 0,
21526 0x0 }, /* P.J~*(12) */
21527 { reserved_block
, 0 , 0 , 32,
21528 0xfc00f000, 0x4800d000, 0 , 0,
21529 0x0 }, /* P.J~*(13) */
21530 { reserved_block
, 0 , 0 , 32,
21531 0xfc00f000, 0x4800e000, 0 , 0,
21532 0x0 }, /* P.J~*(14) */
21533 { reserved_block
, 0 , 0 , 32,
21534 0xfc00f000, 0x4800f000, 0 , 0,
21535 0x0 }, /* P.J~*(15) */
21539 NMD::Pool
NMD::P_BR3A
[32] = {
21540 { branch_instruction
, 0 , 0 , 32,
21541 0xfc1fc000, 0x88004000, &NMD::BC1EQZC
, 0,
21542 CP1_
}, /* BC1EQZC */
21543 { branch_instruction
, 0 , 0 , 32,
21544 0xfc1fc000, 0x88014000, &NMD::BC1NEZC
, 0,
21545 CP1_
}, /* BC1NEZC */
21546 { branch_instruction
, 0 , 0 , 32,
21547 0xfc1fc000, 0x88024000, &NMD::BC2EQZC
, 0,
21548 CP2_
}, /* BC2EQZC */
21549 { branch_instruction
, 0 , 0 , 32,
21550 0xfc1fc000, 0x88034000, &NMD::BC2NEZC
, 0,
21551 CP2_
}, /* BC2NEZC */
21552 { branch_instruction
, 0 , 0 , 32,
21553 0xfc1fc000, 0x88044000, &NMD::BPOSGE32C
, 0,
21554 DSP_
}, /* BPOSGE32C */
21555 { reserved_block
, 0 , 0 , 32,
21556 0xfc1fc000, 0x88054000, 0 , 0,
21557 0x0 }, /* P.BR3A~*(5) */
21558 { reserved_block
, 0 , 0 , 32,
21559 0xfc1fc000, 0x88064000, 0 , 0,
21560 0x0 }, /* P.BR3A~*(6) */
21561 { reserved_block
, 0 , 0 , 32,
21562 0xfc1fc000, 0x88074000, 0 , 0,
21563 0x0 }, /* P.BR3A~*(7) */
21564 { reserved_block
, 0 , 0 , 32,
21565 0xfc1fc000, 0x88084000, 0 , 0,
21566 0x0 }, /* P.BR3A~*(8) */
21567 { reserved_block
, 0 , 0 , 32,
21568 0xfc1fc000, 0x88094000, 0 , 0,
21569 0x0 }, /* P.BR3A~*(9) */
21570 { reserved_block
, 0 , 0 , 32,
21571 0xfc1fc000, 0x880a4000, 0 , 0,
21572 0x0 }, /* P.BR3A~*(10) */
21573 { reserved_block
, 0 , 0 , 32,
21574 0xfc1fc000, 0x880b4000, 0 , 0,
21575 0x0 }, /* P.BR3A~*(11) */
21576 { reserved_block
, 0 , 0 , 32,
21577 0xfc1fc000, 0x880c4000, 0 , 0,
21578 0x0 }, /* P.BR3A~*(12) */
21579 { reserved_block
, 0 , 0 , 32,
21580 0xfc1fc000, 0x880d4000, 0 , 0,
21581 0x0 }, /* P.BR3A~*(13) */
21582 { reserved_block
, 0 , 0 , 32,
21583 0xfc1fc000, 0x880e4000, 0 , 0,
21584 0x0 }, /* P.BR3A~*(14) */
21585 { reserved_block
, 0 , 0 , 32,
21586 0xfc1fc000, 0x880f4000, 0 , 0,
21587 0x0 }, /* P.BR3A~*(15) */
21588 { reserved_block
, 0 , 0 , 32,
21589 0xfc1fc000, 0x88104000, 0 , 0,
21590 0x0 }, /* P.BR3A~*(16) */
21591 { reserved_block
, 0 , 0 , 32,
21592 0xfc1fc000, 0x88114000, 0 , 0,
21593 0x0 }, /* P.BR3A~*(17) */
21594 { reserved_block
, 0 , 0 , 32,
21595 0xfc1fc000, 0x88124000, 0 , 0,
21596 0x0 }, /* P.BR3A~*(18) */
21597 { reserved_block
, 0 , 0 , 32,
21598 0xfc1fc000, 0x88134000, 0 , 0,
21599 0x0 }, /* P.BR3A~*(19) */
21600 { reserved_block
, 0 , 0 , 32,
21601 0xfc1fc000, 0x88144000, 0 , 0,
21602 0x0 }, /* P.BR3A~*(20) */
21603 { reserved_block
, 0 , 0 , 32,
21604 0xfc1fc000, 0x88154000, 0 , 0,
21605 0x0 }, /* P.BR3A~*(21) */
21606 { reserved_block
, 0 , 0 , 32,
21607 0xfc1fc000, 0x88164000, 0 , 0,
21608 0x0 }, /* P.BR3A~*(22) */
21609 { reserved_block
, 0 , 0 , 32,
21610 0xfc1fc000, 0x88174000, 0 , 0,
21611 0x0 }, /* P.BR3A~*(23) */
21612 { reserved_block
, 0 , 0 , 32,
21613 0xfc1fc000, 0x88184000, 0 , 0,
21614 0x0 }, /* P.BR3A~*(24) */
21615 { reserved_block
, 0 , 0 , 32,
21616 0xfc1fc000, 0x88194000, 0 , 0,
21617 0x0 }, /* P.BR3A~*(25) */
21618 { reserved_block
, 0 , 0 , 32,
21619 0xfc1fc000, 0x881a4000, 0 , 0,
21620 0x0 }, /* P.BR3A~*(26) */
21621 { reserved_block
, 0 , 0 , 32,
21622 0xfc1fc000, 0x881b4000, 0 , 0,
21623 0x0 }, /* P.BR3A~*(27) */
21624 { reserved_block
, 0 , 0 , 32,
21625 0xfc1fc000, 0x881c4000, 0 , 0,
21626 0x0 }, /* P.BR3A~*(28) */
21627 { reserved_block
, 0 , 0 , 32,
21628 0xfc1fc000, 0x881d4000, 0 , 0,
21629 0x0 }, /* P.BR3A~*(29) */
21630 { reserved_block
, 0 , 0 , 32,
21631 0xfc1fc000, 0x881e4000, 0 , 0,
21632 0x0 }, /* P.BR3A~*(30) */
21633 { reserved_block
, 0 , 0 , 32,
21634 0xfc1fc000, 0x881f4000, 0 , 0,
21635 0x0 }, /* P.BR3A~*(31) */
21639 NMD::Pool
NMD::P_BR1
[4] = {
21640 { branch_instruction
, 0 , 0 , 32,
21641 0xfc00c000, 0x88000000, &NMD::BEQC_32_
, 0,
21642 0x0 }, /* BEQC[32] */
21643 { pool
, P_BR3A
, 32 , 32,
21644 0xfc00c000, 0x88004000, 0 , 0,
21645 0x0 }, /* P.BR3A */
21646 { branch_instruction
, 0 , 0 , 32,
21647 0xfc00c000, 0x88008000, &NMD::BGEC
, 0,
21649 { branch_instruction
, 0 , 0 , 32,
21650 0xfc00c000, 0x8800c000, &NMD::BGEUC
, 0,
21655 NMD::Pool
NMD::P_BR2
[4] = {
21656 { branch_instruction
, 0 , 0 , 32,
21657 0xfc00c000, 0xa8000000, &NMD::BNEC_32_
, 0,
21658 0x0 }, /* BNEC[32] */
21659 { reserved_block
, 0 , 0 , 32,
21660 0xfc00c000, 0xa8004000, 0 , 0,
21661 0x0 }, /* P.BR2~*(1) */
21662 { branch_instruction
, 0 , 0 , 32,
21663 0xfc00c000, 0xa8008000, &NMD::BLTC
, 0,
21665 { branch_instruction
, 0 , 0 , 32,
21666 0xfc00c000, 0xa800c000, &NMD::BLTUC
, 0,
21671 NMD::Pool
NMD::P_BRI
[8] = {
21672 { branch_instruction
, 0 , 0 , 32,
21673 0xfc1c0000, 0xc8000000, &NMD::BEQIC
, 0,
21675 { branch_instruction
, 0 , 0 , 32,
21676 0xfc1c0000, 0xc8040000, &NMD::BBEQZC
, 0,
21677 XMMS_
}, /* BBEQZC */
21678 { branch_instruction
, 0 , 0 , 32,
21679 0xfc1c0000, 0xc8080000, &NMD::BGEIC
, 0,
21681 { branch_instruction
, 0 , 0 , 32,
21682 0xfc1c0000, 0xc80c0000, &NMD::BGEIUC
, 0,
21683 0x0 }, /* BGEIUC */
21684 { branch_instruction
, 0 , 0 , 32,
21685 0xfc1c0000, 0xc8100000, &NMD::BNEIC
, 0,
21687 { branch_instruction
, 0 , 0 , 32,
21688 0xfc1c0000, 0xc8140000, &NMD::BBNEZC
, 0,
21689 XMMS_
}, /* BBNEZC */
21690 { branch_instruction
, 0 , 0 , 32,
21691 0xfc1c0000, 0xc8180000, &NMD::BLTIC
, 0,
21693 { branch_instruction
, 0 , 0 , 32,
21694 0xfc1c0000, 0xc81c0000, &NMD::BLTIUC
, 0,
21695 0x0 }, /* BLTIUC */
21699 NMD::Pool
NMD::P32
[32] = {
21700 { pool
, P_ADDIU
, 2 , 32,
21701 0xfc000000, 0x00000000, 0 , 0,
21702 0x0 }, /* P.ADDIU */
21703 { pool
, P32A
, 8 , 32,
21704 0xfc000000, 0x20000000, 0 , 0,
21706 { pool
, P_GP_W
, 4 , 32,
21707 0xfc000000, 0x40000000, 0 , 0,
21708 0x0 }, /* P.GP.W */
21709 { pool
, POOL48I
, 32 , 48,
21710 0xfc0000000000ull
, 0x600000000000ull
, 0 , 0,
21711 0x0 }, /* POOL48I */
21712 { pool
, P_U12
, 16 , 32,
21713 0xfc000000, 0x80000000, 0 , 0,
21715 { pool
, POOL32F
, 8 , 32,
21716 0xfc000000, 0xa0000000, 0 , 0,
21717 CP1_
}, /* POOL32F */
21718 { pool
, POOL32S
, 8 , 32,
21719 0xfc000000, 0xc0000000, 0 , 0,
21720 0x0 }, /* POOL32S */
21721 { pool
, P_LUI
, 2 , 32,
21722 0xfc000000, 0xe0000000, 0 , 0,
21724 { instruction
, 0 , 0 , 32,
21725 0xfc000000, 0x04000000, &NMD::ADDIUPC_32_
, 0,
21726 0x0 }, /* ADDIUPC[32] */
21727 { reserved_block
, 0 , 0 , 32,
21728 0xfc000000, 0x24000000, 0 , 0,
21729 0x0 }, /* P32~*(5) */
21730 { pool
, P_GP_BH
, 8 , 32,
21731 0xfc000000, 0x44000000, 0 , 0,
21732 0x0 }, /* P.GP.BH */
21733 { reserved_block
, 0 , 0 , 32,
21734 0xfc000000, 0x64000000, 0 , 0,
21735 0x0 }, /* P32~*(13) */
21736 { pool
, P_LS_U12
, 16 , 32,
21737 0xfc000000, 0x84000000, 0 , 0,
21738 0x0 }, /* P.LS.U12 */
21739 { pool
, P_LS_S9
, 8 , 32,
21740 0xfc000000, 0xa4000000, 0 , 0,
21741 0x0 }, /* P.LS.S9 */
21742 { reserved_block
, 0 , 0 , 32,
21743 0xfc000000, 0xc4000000, 0 , 0,
21744 0x0 }, /* P32~*(25) */
21745 { reserved_block
, 0 , 0 , 32,
21746 0xfc000000, 0xe4000000, 0 , 0,
21747 0x0 }, /* P32~*(29) */
21748 { call_instruction
, 0 , 0 , 32,
21749 0xfc000000, 0x08000000, &NMD::MOVE_BALC
, 0,
21750 XMMS_
}, /* MOVE.BALC */
21751 { pool
, P_BAL
, 2 , 32,
21752 0xfc000000, 0x28000000, 0 , 0,
21754 { pool
, P_J
, 16 , 32,
21755 0xfc000000, 0x48000000, 0 , 0,
21757 { reserved_block
, 0 , 0 , 32,
21758 0xfc000000, 0x68000000, 0 , 0,
21759 0x0 }, /* P32~*(14) */
21760 { pool
, P_BR1
, 4 , 32,
21761 0xfc000000, 0x88000000, 0 , 0,
21763 { pool
, P_BR2
, 4 , 32,
21764 0xfc000000, 0xa8000000, 0 , 0,
21766 { pool
, P_BRI
, 8 , 32,
21767 0xfc000000, 0xc8000000, 0 , 0,
21769 { reserved_block
, 0 , 0 , 32,
21770 0xfc000000, 0xe8000000, 0 , 0,
21771 0x0 }, /* P32~*(30) */
21772 { reserved_block
, 0 , 0 , 32,
21773 0xfc000000, 0x0c000000, 0 , 0,
21774 0x0 }, /* P32~*(3) */
21775 { reserved_block
, 0 , 0 , 32,
21776 0xfc000000, 0x2c000000, 0 , 0,
21777 0x0 }, /* P32~*(7) */
21778 { reserved_block
, 0 , 0 , 32,
21779 0xfc000000, 0x4c000000, 0 , 0,
21780 0x0 }, /* P32~*(11) */
21781 { reserved_block
, 0 , 0 , 32,
21782 0xfc000000, 0x6c000000, 0 , 0,
21783 0x0 }, /* P32~*(15) */
21784 { reserved_block
, 0 , 0 , 32,
21785 0xfc000000, 0x8c000000, 0 , 0,
21786 0x0 }, /* P32~*(19) */
21787 { reserved_block
, 0 , 0 , 32,
21788 0xfc000000, 0xac000000, 0 , 0,
21789 0x0 }, /* P32~*(23) */
21790 { reserved_block
, 0 , 0 , 32,
21791 0xfc000000, 0xcc000000, 0 , 0,
21792 0x0 }, /* P32~*(27) */
21793 { reserved_block
, 0 , 0 , 32,
21794 0xfc000000, 0xec000000, 0 , 0,
21795 0x0 }, /* P32~*(31) */
21799 NMD::Pool
NMD::P16_SYSCALL
[2] = {
21800 { instruction
, 0 , 0 , 16,
21801 0xfffc , 0x1008 , &NMD::SYSCALL_16_
, 0,
21802 0x0 }, /* SYSCALL[16] */
21803 { instruction
, 0 , 0 , 16,
21804 0xfffc , 0x100c , &NMD::HYPCALL_16_
, 0,
21805 CP0_
| VZ_
}, /* HYPCALL[16] */
21809 NMD::Pool
NMD::P16_RI
[4] = {
21810 { reserved_block
, 0 , 0 , 16,
21811 0xfff8 , 0x1000 , 0 , 0,
21812 0x0 }, /* P16.RI~*(0) */
21813 { pool
, P16_SYSCALL
, 2 , 16,
21814 0xfff8 , 0x1008 , 0 , 0,
21815 0x0 }, /* P16.SYSCALL */
21816 { instruction
, 0 , 0 , 16,
21817 0xfff8 , 0x1010 , &NMD::BREAK_16_
, 0,
21818 0x0 }, /* BREAK[16] */
21819 { instruction
, 0 , 0 , 16,
21820 0xfff8 , 0x1018 , &NMD::SDBBP_16_
, 0,
21821 EJTAG_
}, /* SDBBP[16] */
21825 NMD::Pool
NMD::P16_MV
[2] = {
21826 { pool
, P16_RI
, 4 , 16,
21827 0xffe0 , 0x1000 , 0 , 0,
21828 0x0 }, /* P16.RI */
21829 { instruction
, 0 , 0 , 16,
21830 0xfc00 , 0x1000 , &NMD::MOVE
, &NMD::MOVE_cond
,
21835 NMD::Pool
NMD::P16_SHIFT
[2] = {
21836 { instruction
, 0 , 0 , 16,
21837 0xfc08 , 0x3000 , &NMD::SLL_16_
, 0,
21838 0x0 }, /* SLL[16] */
21839 { instruction
, 0 , 0 , 16,
21840 0xfc08 , 0x3008 , &NMD::SRL_16_
, 0,
21841 0x0 }, /* SRL[16] */
21845 NMD::Pool
NMD::POOL16C_00
[4] = {
21846 { instruction
, 0 , 0 , 16,
21847 0xfc0f , 0x5000 , &NMD::NOT_16_
, 0,
21848 0x0 }, /* NOT[16] */
21849 { instruction
, 0 , 0 , 16,
21850 0xfc0f , 0x5004 , &NMD::XOR_16_
, 0,
21851 0x0 }, /* XOR[16] */
21852 { instruction
, 0 , 0 , 16,
21853 0xfc0f , 0x5008 , &NMD::AND_16_
, 0,
21854 0x0 }, /* AND[16] */
21855 { instruction
, 0 , 0 , 16,
21856 0xfc0f , 0x500c , &NMD::OR_16_
, 0,
21857 0x0 }, /* OR[16] */
21861 NMD::Pool
NMD::POOL16C_0
[2] = {
21862 { pool
, POOL16C_00
, 4 , 16,
21863 0xfc03 , 0x5000 , 0 , 0,
21864 0x0 }, /* POOL16C_00 */
21865 { reserved_block
, 0 , 0 , 16,
21866 0xfc03 , 0x5002 , 0 , 0,
21867 0x0 }, /* POOL16C_0~*(1) */
21871 NMD::Pool
NMD::P16C
[2] = {
21872 { pool
, POOL16C_0
, 2 , 16,
21873 0xfc01 , 0x5000 , 0 , 0,
21874 0x0 }, /* POOL16C_0 */
21875 { instruction
, 0 , 0 , 16,
21876 0xfc01 , 0x5001 , &NMD::LWXS_16_
, 0,
21877 0x0 }, /* LWXS[16] */
21881 NMD::Pool
NMD::P16_A1
[2] = {
21882 { reserved_block
, 0 , 0 , 16,
21883 0xfc40 , 0x7000 , 0 , 0,
21884 0x0 }, /* P16.A1~*(0) */
21885 { instruction
, 0 , 0 , 16,
21886 0xfc40 , 0x7040 , &NMD::ADDIU_R1_SP_
, 0,
21887 0x0 }, /* ADDIU[R1.SP] */
21891 NMD::Pool
NMD::P_ADDIU_RS5_
[2] = {
21892 { instruction
, 0 , 0 , 16,
21893 0xffe8 , 0x9008 , &NMD::NOP_16_
, 0,
21894 0x0 }, /* NOP[16] */
21895 { instruction
, 0 , 0 , 16,
21896 0xfc08 , 0x9008 , &NMD::ADDIU_RS5_
, &NMD::ADDIU_RS5__cond
,
21897 0x0 }, /* ADDIU[RS5] */
21901 NMD::Pool
NMD::P16_A2
[2] = {
21902 { instruction
, 0 , 0 , 16,
21903 0xfc08 , 0x9000 , &NMD::ADDIU_R2_
, 0,
21904 0x0 }, /* ADDIU[R2] */
21905 { pool
, P_ADDIU_RS5_
, 2 , 16,
21906 0xfc08 , 0x9008 , 0 , 0,
21907 0x0 }, /* P.ADDIU[RS5] */
21911 NMD::Pool
NMD::P16_ADDU
[2] = {
21912 { instruction
, 0 , 0 , 16,
21913 0xfc01 , 0xb000 , &NMD::ADDU_16_
, 0,
21914 0x0 }, /* ADDU[16] */
21915 { instruction
, 0 , 0 , 16,
21916 0xfc01 , 0xb001 , &NMD::SUBU_16_
, 0,
21917 0x0 }, /* SUBU[16] */
21921 NMD::Pool
NMD::P16_JRC
[2] = {
21922 { branch_instruction
, 0 , 0 , 16,
21923 0xfc1f , 0xd800 , &NMD::JRC
, 0,
21925 { call_instruction
, 0 , 0 , 16,
21926 0xfc1f , 0xd810 , &NMD::JALRC_16_
, 0,
21927 0x0 }, /* JALRC[16] */
21931 NMD::Pool
NMD::P16_BR1
[2] = {
21932 { branch_instruction
, 0 , 0 , 16,
21933 0xfc00 , 0xd800 , &NMD::BEQC_16_
, &NMD::BEQC_16__cond
,
21934 XMMS_
}, /* BEQC[16] */
21935 { branch_instruction
, 0 , 0 , 16,
21936 0xfc00 , 0xd800 , &NMD::BNEC_16_
, &NMD::BNEC_16__cond
,
21937 XMMS_
}, /* BNEC[16] */
21941 NMD::Pool
NMD::P16_BR
[2] = {
21942 { pool
, P16_JRC
, 2 , 16,
21943 0xfc0f , 0xd800 , 0 , 0,
21944 0x0 }, /* P16.JRC */
21945 { pool
, P16_BR1
, 2 , 16,
21946 0xfc00 , 0xd800 , 0 , &NMD::P16_BR1_cond
,
21947 0x0 }, /* P16.BR1 */
21951 NMD::Pool
NMD::P16_SR
[2] = {
21952 { instruction
, 0 , 0 , 16,
21953 0xfd00 , 0x1c00 , &NMD::SAVE_16_
, 0,
21954 0x0 }, /* SAVE[16] */
21955 { return_instruction
, 0 , 0 , 16,
21956 0xfd00 , 0x1d00 , &NMD::RESTORE_JRC_16_
, 0,
21957 0x0 }, /* RESTORE.JRC[16] */
21961 NMD::Pool
NMD::P16_4X4
[4] = {
21962 { instruction
, 0 , 0 , 16,
21963 0xfd08 , 0x3c00 , &NMD::ADDU_4X4_
, 0,
21964 XMMS_
}, /* ADDU[4X4] */
21965 { instruction
, 0 , 0 , 16,
21966 0xfd08 , 0x3c08 , &NMD::MUL_4X4_
, 0,
21967 XMMS_
}, /* MUL[4X4] */
21968 { reserved_block
, 0 , 0 , 16,
21969 0xfd08 , 0x3d00 , 0 , 0,
21970 0x0 }, /* P16.4X4~*(2) */
21971 { reserved_block
, 0 , 0 , 16,
21972 0xfd08 , 0x3d08 , 0 , 0,
21973 0x0 }, /* P16.4X4~*(3) */
21977 NMD::Pool
NMD::P16_LB
[4] = {
21978 { instruction
, 0 , 0 , 16,
21979 0xfc0c , 0x5c00 , &NMD::LB_16_
, 0,
21980 0x0 }, /* LB[16] */
21981 { instruction
, 0 , 0 , 16,
21982 0xfc0c , 0x5c04 , &NMD::SB_16_
, 0,
21983 0x0 }, /* SB[16] */
21984 { instruction
, 0 , 0 , 16,
21985 0xfc0c , 0x5c08 , &NMD::LBU_16_
, 0,
21986 0x0 }, /* LBU[16] */
21987 { reserved_block
, 0 , 0 , 16,
21988 0xfc0c , 0x5c0c , 0 , 0,
21989 0x0 }, /* P16.LB~*(3) */
21993 NMD::Pool
NMD::P16_LH
[4] = {
21994 { instruction
, 0 , 0 , 16,
21995 0xfc09 , 0x7c00 , &NMD::LH_16_
, 0,
21996 0x0 }, /* LH[16] */
21997 { instruction
, 0 , 0 , 16,
21998 0xfc09 , 0x7c01 , &NMD::SH_16_
, 0,
21999 0x0 }, /* SH[16] */
22000 { instruction
, 0 , 0 , 16,
22001 0xfc09 , 0x7c08 , &NMD::LHU_16_
, 0,
22002 0x0 }, /* LHU[16] */
22003 { reserved_block
, 0 , 0 , 16,
22004 0xfc09 , 0x7c09 , 0 , 0,
22005 0x0 }, /* P16.LH~*(3) */
22009 NMD::Pool
NMD::P16
[32] = {
22010 { pool
, P16_MV
, 2 , 16,
22011 0xfc00 , 0x1000 , 0 , 0,
22012 0x0 }, /* P16.MV */
22013 { pool
, P16_SHIFT
, 2 , 16,
22014 0xfc00 , 0x3000 , 0 , 0,
22015 0x0 }, /* P16.SHIFT */
22016 { pool
, P16C
, 2 , 16,
22017 0xfc00 , 0x5000 , 0 , 0,
22019 { pool
, P16_A1
, 2 , 16,
22020 0xfc00 , 0x7000 , 0 , 0,
22021 0x0 }, /* P16.A1 */
22022 { pool
, P16_A2
, 2 , 16,
22023 0xfc00 , 0x9000 , 0 , 0,
22024 0x0 }, /* P16.A2 */
22025 { pool
, P16_ADDU
, 2 , 16,
22026 0xfc00 , 0xb000 , 0 , 0,
22027 0x0 }, /* P16.ADDU */
22028 { instruction
, 0 , 0 , 16,
22029 0xfc00 , 0xd000 , &NMD::LI_16_
, 0,
22030 0x0 }, /* LI[16] */
22031 { instruction
, 0 , 0 , 16,
22032 0xfc00 , 0xf000 , &NMD::ANDI_16_
, 0,
22033 0x0 }, /* ANDI[16] */
22034 { instruction
, 0 , 0 , 16,
22035 0xfc00 , 0x1400 , &NMD::LW_16_
, 0,
22036 0x0 }, /* LW[16] */
22037 { instruction
, 0 , 0 , 16,
22038 0xfc00 , 0x3400 , &NMD::LW_SP_
, 0,
22039 0x0 }, /* LW[SP] */
22040 { instruction
, 0 , 0 , 16,
22041 0xfc00 , 0x5400 , &NMD::LW_GP16_
, 0,
22042 0x0 }, /* LW[GP16] */
22043 { instruction
, 0 , 0 , 16,
22044 0xfc00 , 0x7400 , &NMD::LW_4X4_
, 0,
22045 XMMS_
}, /* LW[4X4] */
22046 { instruction
, 0 , 0 , 16,
22047 0xfc00 , 0x9400 , &NMD::SW_16_
, 0,
22048 0x0 }, /* SW[16] */
22049 { instruction
, 0 , 0 , 16,
22050 0xfc00 , 0xb400 , &NMD::SW_SP_
, 0,
22051 0x0 }, /* SW[SP] */
22052 { instruction
, 0 , 0 , 16,
22053 0xfc00 , 0xd400 , &NMD::SW_GP16_
, 0,
22054 0x0 }, /* SW[GP16] */
22055 { instruction
, 0 , 0 , 16,
22056 0xfc00 , 0xf400 , &NMD::SW_4X4_
, 0,
22057 XMMS_
}, /* SW[4X4] */
22058 { branch_instruction
, 0 , 0 , 16,
22059 0xfc00 , 0x1800 , &NMD::BC_16_
, 0,
22060 0x0 }, /* BC[16] */
22061 { call_instruction
, 0 , 0 , 16,
22062 0xfc00 , 0x3800 , &NMD::BALC_16_
, 0,
22063 0x0 }, /* BALC[16] */
22064 { reserved_block
, 0 , 0 , 16,
22065 0xfc00 , 0x5800 , 0 , 0,
22066 0x0 }, /* P16~*(10) */
22067 { reserved_block
, 0 , 0 , 16,
22068 0xfc00 , 0x7800 , 0 , 0,
22069 0x0 }, /* P16~*(14) */
22070 { branch_instruction
, 0 , 0 , 16,
22071 0xfc00 , 0x9800 , &NMD::BEQZC_16_
, 0,
22072 0x0 }, /* BEQZC[16] */
22073 { branch_instruction
, 0 , 0 , 16,
22074 0xfc00 , 0xb800 , &NMD::BNEZC_16_
, 0,
22075 0x0 }, /* BNEZC[16] */
22076 { pool
, P16_BR
, 2 , 16,
22077 0xfc00 , 0xd800 , 0 , 0,
22078 0x0 }, /* P16.BR */
22079 { reserved_block
, 0 , 0 , 16,
22080 0xfc00 , 0xf800 , 0 , 0,
22081 0x0 }, /* P16~*(30) */
22082 { pool
, P16_SR
, 2 , 16,
22083 0xfc00 , 0x1c00 , 0 , 0,
22084 0x0 }, /* P16.SR */
22085 { pool
, P16_4X4
, 4 , 16,
22086 0xfc00 , 0x3c00 , 0 , 0,
22087 0x0 }, /* P16.4X4 */
22088 { pool
, P16_LB
, 4 , 16,
22089 0xfc00 , 0x5c00 , 0 , 0,
22090 0x0 }, /* P16.LB */
22091 { pool
, P16_LH
, 4 , 16,
22092 0xfc00 , 0x7c00 , 0 , 0,
22093 0x0 }, /* P16.LH */
22094 { reserved_block
, 0 , 0 , 16,
22095 0xfc00 , 0x9c00 , 0 , 0,
22096 0x0 }, /* P16~*(19) */
22097 { instruction
, 0 , 0 , 16,
22098 0xfc00 , 0xbc00 , &NMD::MOVEP
, 0,
22099 XMMS_
}, /* MOVEP */
22100 { reserved_block
, 0 , 0 , 16,
22101 0xfc00 , 0xdc00 , 0 , 0,
22102 0x0 }, /* P16~*(27) */
22103 { instruction
, 0 , 0 , 16,
22104 0xfc00 , 0xfc00 , &NMD::MOVEP_REV_
, 0,
22105 XMMS_
}, /* MOVEP[REV] */
22109 NMD::Pool
NMD::MAJOR
[2] = {
22110 { pool
, P32
, 32 , 32,
22111 0x10000000, 0x00000000, 0 , 0,
22113 { pool
, P16
, 32 , 16,
22114 0x1000 , 0x1000 , 0 , 0,