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]));
393 * NMD::decode_gpr_gpr1() - decoder for 'gpr1' gpr encoding type
395 * Map a 1-bit code to the 5-bit register space according to this pattern:
400 * | └---------------------┐
401 * └---------------------┐ |
406 * 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
409 * Used in handling following instruction:
413 uint64
NMD::decode_gpr_gpr1(uint64 d
)
415 static uint64 register_list
[] = { 4, 5 };
416 return renumber_registers(d
, register_list
,
417 sizeof(register_list
) / sizeof(register_list
[0]));
422 * NMD::decode_gpr_gpr4_zero() - decoder for 'gpr4.zero' gpr encoding type
424 * Map a 4-bit code to the 5-bit register space according to this pattern:
427 * 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
428 * | | | | | | | | | | | | | | | |
429 * | | | | | | | | | | | | └---------------------┐
430 * | | | | | | | | | | | └---------------┐ |
431 * | | | | | | | | | | └---------------┐ | |
432 * | | | | | | | | | └---------------┐ | | |
433 * | | | | | | | | └---------------┐ | | | |
434 * | | | | | | | | | | | | | | | |
435 * | | | | | | | | | | | | | | | |
436 * 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
439 * This pattern is the same one used for 'gpr4' gpr encoding type, except for
440 * the input value 3, that is mapped to the output value 0 instead of 11.
442 * Used in handling following instructions:
448 uint64
NMD::decode_gpr_gpr4_zero(uint64 d
)
450 static uint64 register_list
[] = { 8, 9, 10, 0, 4, 5, 6, 7,
451 16, 17, 18, 19, 20, 21, 22, 23 };
452 return renumber_registers(d
, register_list
,
453 sizeof(register_list
) / sizeof(register_list
[0]));
458 * NMD::decode_gpr_gpr4() - decoder for 'gpr4' gpr encoding type
460 * Map a 4-bit code to the 5-bit register space according to this pattern:
463 * 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
464 * | | | | | | | | | | | | | | | |
465 * | | | | | | | | | | | | | | | |
466 * | | | | | | | | | | | └---------------┐
467 * | | | | | | | | | | └---------------┐ |
468 * | | | | | | | | | └---------------┐ | |
469 * | | | | | | | | └---------------┐ | | |
470 * | | | | | | | | | | | | | | | |
471 * | | | | | | | | | | | | | | | |
472 * 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
475 * Used in handling following instructions:
483 uint64
NMD::decode_gpr_gpr4(uint64 d
)
485 static uint64 register_list
[] = { 8, 9, 10, 11, 4, 5, 6, 7,
486 16, 17, 18, 19, 20, 21, 22, 23 };
487 return renumber_registers(d
, register_list
,
488 sizeof(register_list
) / sizeof(register_list
[0]));
493 * NMD::decode_gpr_gpr2_reg1() - decoder for 'gpr2.reg1' gpr encoding type
495 * Map a 2-bit code to the 5-bit register space according to this pattern:
500 * | | | └-------------------┐
501 * | | └-------------------┐ |
502 * | └-------------------┐ | |
503 * └-------------------┐ | | |
506 * 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
509 * Used in handling following instructions:
514 uint64
NMD::decode_gpr_gpr2_reg1(uint64 d
)
516 static uint64 register_list
[] = { 4, 5, 6, 7 };
517 return renumber_registers(d
, register_list
,
518 sizeof(register_list
) / sizeof(register_list
[0]));
523 * NMD::decode_gpr_gpr2_reg2() - decoder for 'gpr2.reg2' gpr encoding type
525 * Map a 2-bit code to the 5-bit register space according to this pattern:
530 * | | | └-----------------┐
531 * | | └-----------------┐ |
532 * | └-----------------┐ | |
533 * └-----------------┐ | | |
536 * 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
539 * Used in handling following instructions:
544 uint64
NMD::decode_gpr_gpr2_reg2(uint64 d
)
546 static uint64 register_list
[] = { 5, 6, 7, 8 };
547 return renumber_registers(d
, register_list
,
548 sizeof(register_list
) / sizeof(register_list
[0]));
552 uint64
NMD::copy(uint64 d
)
558 int64
NMD::copy(int64 d
)
564 int64
NMD::neg_copy(uint64 d
)
570 int64
NMD::neg_copy(int64 d
)
576 /* strange wrapper around gpr3 */
577 uint64
NMD::encode_rs3_and_check_rs3_ge_rt3(uint64 d
)
579 return decode_gpr_gpr3(d
);
583 /* strange wrapper around gpr3 */
584 uint64
NMD::encode_rs3_and_check_rs3_lt_rt3(uint64 d
)
586 return decode_gpr_gpr3(d
);
590 /* nop - done by extraction function */
591 uint64
NMD::encode_s_from_address(uint64 d
)
597 /* nop - done by extraction function */
598 uint64
NMD::encode_u_from_address(uint64 d
)
604 /* nop - done by extraction function */
605 uint64
NMD::encode_s_from_s_hi(uint64 d
)
611 uint64
NMD::encode_count3_from_count(uint64 d
)
613 IMGASSERTONCE(d
< 8);
614 return d
== 0ull ? 8ull : d
;
618 uint64
NMD::encode_shift3_from_shift(uint64 d
)
620 IMGASSERTONCE(d
< 8);
621 return d
== 0ull ? 8ull : d
;
625 /* special value for load literal */
626 int64
NMD::encode_eu_from_s_li16(uint64 d
)
628 IMGASSERTONCE(d
< 128);
629 return d
== 127 ? -1 : (int64
)d
;
633 uint64
NMD::encode_msbd_from_size(uint64 d
)
635 IMGASSERTONCE(d
< 32);
640 uint64
NMD::encode_eu_from_u_andi16(uint64 d
)
642 IMGASSERTONCE(d
< 16);
653 uint64
NMD::encode_msbd_from_pos_and_size(uint64 d
)
660 /* save16 / restore16 ???? */
661 uint64
NMD::encode_rt1_from_rt(uint64 d
)
668 uint64
NMD::encode_lsb_from_pos_and_size(uint64 d
)
674 std::string
NMD::save_restore_list(uint64 rt
, uint64 count
, uint64 gp
)
678 for (uint64 counter
= 0; counter
!= count
; counter
++) {
679 bool use_gp
= gp
&& (counter
== count
- 1);
680 uint64 this_rt
= use_gp
? 28 : ((rt
& 0x10) | (rt
+ counter
)) & 0x1f;
681 str
+= img::format(",%s", GPR(this_rt
));
688 std::string
NMD::GPR(uint64 reg
)
690 static const char *gpr_reg
[32] = {
691 "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
692 "a4", "a5", "a6", "a7", "r12", "r13", "r14", "r15",
693 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
694 "r24", "r25", "k0", "k1", "gp", "sp", "fp", "ra"
701 throw std::runtime_error(img::format("Invalid GPR register index %" PRIu64
,
706 std::string
NMD::FPR(uint64 reg
)
708 static const char *fpr_reg
[32] = {
709 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
710 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
711 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
712 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
719 throw std::runtime_error(img::format("Invalid FPR register index %" PRIu64
,
724 std::string
NMD::AC(uint64 reg
)
726 static const char *ac_reg
[4] = {
727 "ac0", "ac1", "ac2", "ac3"
734 throw std::runtime_error(img::format("Invalid AC register index %" PRIu64
,
739 std::string
NMD::IMMEDIATE(uint64 value
)
741 return img::format("0x%" PRIx64
, value
);
745 std::string
NMD::IMMEDIATE(int64 value
)
747 return img::format("%" PRId64
, value
);
751 std::string
NMD::CPR(uint64 reg
)
753 /* needs more work */
754 return img::format("CP%" PRIu64
, reg
);
758 std::string
NMD::ADDRESS(uint64 value
, int instruction_size
)
760 /* token for string replace */
761 /* const char TOKEN_REPLACE = (char)0xa2; */
762 img::address address
= m_pc
+ value
+ instruction_size
;
763 /* symbol replacement */
764 /* return img::as_char(TOKEN_REPLACE) + to_string(address); */
765 return to_string(address
);
769 uint64
NMD::extract_op_code_value(const uint16
* data
, int size
)
775 return ((uint64
)data
[0] << 16) | data
[1];
777 return ((uint64
)data
[0] << 32) | ((uint64
)data
[1] << 16) | data
[2];
784 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
785 NMD::TABLE_ENTRY_TYPE
& type
)
787 return Disassemble(data
, dis
, type
, MAJOR
, 2);
792 * Recurse through tables until the instruction is found then return
793 * the string and size
796 * pointer to a word stream,
797 * disassember table and size
799 * instruction size - negative is error
800 * disassembly string - on error will constain error string
802 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
803 NMD::TABLE_ENTRY_TYPE
& type
, const Pool
*table
,
808 for (int i
= 0; i
< table_size
; i
++) {
809 uint64 op_code
= extract_op_code_value(data
,
810 table
[i
].instructions_size
);
811 if ((op_code
& table
[i
].mask
) == table
[i
].value
) {
813 conditional_function cond
= table
[i
].condition
;
814 if ((cond
== 0) || (this->*cond
)(op_code
)) {
817 if (table
[i
].type
== pool
) {
818 return Disassemble(data
, dis
, type
,
820 table
[i
].next_table_size
);
821 } else if ((table
[i
].type
== instruction
) ||
822 (table
[i
].type
== call_instruction
) ||
823 (table
[i
].type
== branch_instruction
) ||
824 (table
[i
].type
== return_instruction
)) {
825 if ((table
[i
].attributes
!= 0) &&
826 (m_requested_instruction_categories
&
827 table
[i
].attributes
) == 0) {
829 * failed due to instruction having
830 * an ASE attribute and the requested version
831 * not having that attribute
833 dis
= "ASE attribute missmatch";
836 disassembly_function dis_fn
= table
[i
].disassembly
;
838 dis
= "disassembler failure - bad table entry";
841 type
= table
[i
].type
;
842 dis
= (this->*dis_fn
)(op_code
);
843 return table
[i
].instructions_size
;
845 dis
= "reserved instruction";
849 catch (std::runtime_error
& e
)
852 return -3; /* runtime error */
858 catch (std::exception
& e
)
861 return -4; /* runtime error */
864 dis
= "failed to disassemble";
865 return -1; /* failed to disassemble */
869 uint64
NMD::extract_code_18_to_0(uint64 instruction
)
872 value
|= extract_bits(instruction
, 0, 19);
877 uint64
NMD::extract_shift3_2_1_0(uint64 instruction
)
880 value
|= extract_bits(instruction
, 0, 3);
885 uint64
NMD::extract_u_11_10_9_8_7_6_5_4_3__s3(uint64 instruction
)
888 value
|= extract_bits(instruction
, 3, 9) << 3;
893 uint64
NMD::extract_count_3_2_1_0(uint64 instruction
)
896 value
|= extract_bits(instruction
, 0, 4);
901 uint64
NMD::extract_rtz3_9_8_7(uint64 instruction
)
904 value
|= extract_bits(instruction
, 7, 3);
909 uint64
NMD::extract_u_17_to_1__s1(uint64 instruction
)
912 value
|= extract_bits(instruction
, 1, 17) << 1;
917 int64
NMD::extract_s__se9_20_19_18_17_16_15_14_13_12_11(uint64 instruction
)
920 value
|= extract_bits(instruction
, 11, 10);
921 value
= sign_extend(value
, 9);
926 int64
NMD::extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(uint64 instruction
)
929 value
|= extract_bits(instruction
, 0, 1) << 11;
930 value
|= extract_bits(instruction
, 1, 10) << 1;
931 value
= sign_extend(value
, 11);
936 uint64
NMD::extract_u_10(uint64 instruction
)
939 value
|= extract_bits(instruction
, 10, 1);
944 uint64
NMD::extract_rtz4_27_26_25_23_22_21(uint64 instruction
)
947 value
|= extract_bits(instruction
, 21, 3);
948 value
|= extract_bits(instruction
, 25, 1) << 3;
953 uint64
NMD::extract_sa_15_14_13_12_11(uint64 instruction
)
956 value
|= extract_bits(instruction
, 11, 5);
961 uint64
NMD::extract_shift_4_3_2_1_0(uint64 instruction
)
964 value
|= extract_bits(instruction
, 0, 5);
969 uint64
NMD::extract_shiftx_10_9_8_7__s1(uint64 instruction
)
972 value
|= extract_bits(instruction
, 7, 4) << 1;
977 uint64
NMD::extract_hint_25_24_23_22_21(uint64 instruction
)
980 value
|= extract_bits(instruction
, 21, 5);
985 uint64
NMD::extract_count3_14_13_12(uint64 instruction
)
988 value
|= extract_bits(instruction
, 12, 3);
993 int64
NMD::extract_s__se31_0_11_to_2_20_to_12_s12(uint64 instruction
)
996 value
|= extract_bits(instruction
, 0, 1) << 31;
997 value
|= extract_bits(instruction
, 2, 10) << 21;
998 value
|= extract_bits(instruction
, 12, 9) << 12;
999 value
= sign_extend(value
, 31);
1004 int64
NMD::extract_s__se7_0_6_5_4_3_2_1_s1(uint64 instruction
)
1007 value
|= extract_bits(instruction
, 0, 1) << 7;
1008 value
|= extract_bits(instruction
, 1, 6) << 1;
1009 value
= sign_extend(value
, 7);
1014 uint64
NMD::extract_u2_10_9(uint64 instruction
)
1017 value
|= extract_bits(instruction
, 9, 2);
1022 uint64
NMD::extract_code_25_24_23_22_21_20_19_18_17_16(uint64 instruction
)
1025 value
|= extract_bits(instruction
, 16, 10);
1030 uint64
NMD::extract_rs_20_19_18_17_16(uint64 instruction
)
1033 value
|= extract_bits(instruction
, 16, 5);
1038 uint64
NMD::extract_u_2_1__s1(uint64 instruction
)
1041 value
|= extract_bits(instruction
, 1, 2) << 1;
1046 uint64
NMD::extract_stripe_6(uint64 instruction
)
1049 value
|= extract_bits(instruction
, 6, 1);
1054 uint64
NMD::extract_ac_13_12(uint64 instruction
)
1057 value
|= extract_bits(instruction
, 14, 2);
1062 uint64
NMD::extract_shift_20_19_18_17_16(uint64 instruction
)
1065 value
|= extract_bits(instruction
, 16, 5);
1070 uint64
NMD::extract_rdl_25_24(uint64 instruction
)
1073 value
|= extract_bits(instruction
, 24, 1);
1078 int64
NMD::extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(uint64 instruction
)
1081 value
|= extract_bits(instruction
, 0, 1) << 10;
1082 value
|= extract_bits(instruction
, 1, 9) << 1;
1083 value
= sign_extend(value
, 10);
1088 uint64
NMD::extract_eu_6_5_4_3_2_1_0(uint64 instruction
)
1091 value
|= extract_bits(instruction
, 0, 7);
1096 uint64
NMD::extract_shift_5_4_3_2_1_0(uint64 instruction
)
1099 value
|= extract_bits(instruction
, 0, 6);
1104 uint64
NMD::extract_count_19_18_17_16(uint64 instruction
)
1107 value
|= extract_bits(instruction
, 16, 4);
1112 uint64
NMD::extract_code_2_1_0(uint64 instruction
)
1115 value
|= extract_bits(instruction
, 0, 3);
1120 uint64
NMD::extract_u_11_10_9_8_7_6_5_4_3_2_1_0(uint64 instruction
)
1123 value
|= extract_bits(instruction
, 0, 12);
1128 uint64
NMD::extract_rs_4_3_2_1_0(uint64 instruction
)
1131 value
|= extract_bits(instruction
, 0, 5);
1136 uint64
NMD::extract_u_20_to_3__s3(uint64 instruction
)
1139 value
|= extract_bits(instruction
, 3, 18) << 3;
1144 uint64
NMD::extract_u_3_2_1_0__s2(uint64 instruction
)
1147 value
|= extract_bits(instruction
, 0, 4) << 2;
1152 uint64
NMD::extract_cofun_25_24_23(uint64 instruction
)
1155 value
|= extract_bits(instruction
, 3, 23);
1160 uint64
NMD::extract_u_2_1_0__s2(uint64 instruction
)
1163 value
|= extract_bits(instruction
, 0, 3) << 2;
1168 uint64
NMD::extract_rd3_3_2_1(uint64 instruction
)
1171 value
|= extract_bits(instruction
, 1, 3);
1176 uint64
NMD::extract_sa_15_14_13_12(uint64 instruction
)
1179 value
|= extract_bits(instruction
, 12, 4);
1184 uint64
NMD::extract_rt_25_24_23_22_21(uint64 instruction
)
1187 value
|= extract_bits(instruction
, 21, 5);
1192 uint64
NMD::extract_ru_7_6_5_4_3(uint64 instruction
)
1195 value
|= extract_bits(instruction
, 3, 5);
1200 uint64
NMD::extract_u_17_to_0(uint64 instruction
)
1203 value
|= extract_bits(instruction
, 0, 18);
1208 uint64
NMD::extract_rsz4_4_2_1_0(uint64 instruction
)
1211 value
|= extract_bits(instruction
, 0, 3);
1212 value
|= extract_bits(instruction
, 4, 1) << 3;
1217 int64
NMD::extract_s__se21_0_20_to_1_s1(uint64 instruction
)
1220 value
|= extract_bits(instruction
, 0, 1) << 21;
1221 value
|= extract_bits(instruction
, 1, 20) << 1;
1222 value
= sign_extend(value
, 21);
1227 uint64
NMD::extract_op_25_to_3(uint64 instruction
)
1230 value
|= extract_bits(instruction
, 3, 23);
1235 uint64
NMD::extract_rs4_4_2_1_0(uint64 instruction
)
1238 value
|= extract_bits(instruction
, 0, 3);
1239 value
|= extract_bits(instruction
, 4, 1) << 3;
1244 uint64
NMD::extract_bit_23_22_21(uint64 instruction
)
1247 value
|= extract_bits(instruction
, 21, 3);
1252 uint64
NMD::extract_rt_41_40_39_38_37(uint64 instruction
)
1255 value
|= extract_bits(instruction
, 37, 5);
1260 int64
NMD::extract_shift__se5_21_20_19_18_17_16(uint64 instruction
)
1263 value
|= extract_bits(instruction
, 16, 6);
1264 value
= sign_extend(value
, 5);
1269 uint64
NMD::extract_rd2_3_8(uint64 instruction
)
1272 value
|= extract_bits(instruction
, 3, 1) << 1;
1273 value
|= extract_bits(instruction
, 8, 1);
1278 uint64
NMD::extract_code_17_to_0(uint64 instruction
)
1281 value
|= extract_bits(instruction
, 0, 18);
1286 uint64
NMD::extract_size_20_19_18_17_16(uint64 instruction
)
1289 value
|= extract_bits(instruction
, 16, 5);
1294 int64
NMD::extract_s__se8_15_7_6_5_4_3_2_s2(uint64 instruction
)
1297 value
|= extract_bits(instruction
, 2, 6) << 2;
1298 value
|= extract_bits(instruction
, 15, 1) << 8;
1299 value
= sign_extend(value
, 8);
1304 uint64
NMD::extract_u_15_to_0(uint64 instruction
)
1307 value
|= extract_bits(instruction
, 0, 16);
1312 uint64
NMD::extract_fs_20_19_18_17_16(uint64 instruction
)
1315 value
|= extract_bits(instruction
, 16, 5);
1320 int64
NMD::extract_s__se8_15_7_6_5_4_3_2_1_0(uint64 instruction
)
1323 value
|= extract_bits(instruction
, 0, 8);
1324 value
|= extract_bits(instruction
, 15, 1) << 8;
1325 value
= sign_extend(value
, 8);
1330 uint64
NMD::extract_stype_20_19_18_17_16(uint64 instruction
)
1333 value
|= extract_bits(instruction
, 16, 5);
1338 uint64
NMD::extract_rtl_11(uint64 instruction
)
1341 value
|= extract_bits(instruction
, 9, 1);
1346 uint64
NMD::extract_hs_20_19_18_17_16(uint64 instruction
)
1349 value
|= extract_bits(instruction
, 16, 5);
1354 uint64
NMD::extract_sel_13_12_11(uint64 instruction
)
1357 value
|= extract_bits(instruction
, 11, 3);
1362 uint64
NMD::extract_lsb_4_3_2_1_0(uint64 instruction
)
1365 value
|= extract_bits(instruction
, 0, 5);
1370 uint64
NMD::extract_gp_2(uint64 instruction
)
1373 value
|= extract_bits(instruction
, 2, 1);
1378 uint64
NMD::extract_rt3_9_8_7(uint64 instruction
)
1381 value
|= extract_bits(instruction
, 7, 3);
1386 uint64
NMD::extract_ft_25_24_23_22_21(uint64 instruction
)
1389 value
|= extract_bits(instruction
, 21, 5);
1394 uint64
NMD::extract_u_17_16_15_14_13_12_11(uint64 instruction
)
1397 value
|= extract_bits(instruction
, 11, 7);
1402 uint64
NMD::extract_cs_20_19_18_17_16(uint64 instruction
)
1405 value
|= extract_bits(instruction
, 16, 5);
1410 uint64
NMD::extract_rt4_9_7_6_5(uint64 instruction
)
1413 value
|= extract_bits(instruction
, 5, 3);
1414 value
|= extract_bits(instruction
, 9, 1) << 3;
1419 uint64
NMD::extract_msbt_10_9_8_7_6(uint64 instruction
)
1422 value
|= extract_bits(instruction
, 6, 5);
1427 uint64
NMD::extract_u_5_4_3_2_1_0__s2(uint64 instruction
)
1430 value
|= extract_bits(instruction
, 0, 6) << 2;
1435 uint64
NMD::extract_sa_15_14_13(uint64 instruction
)
1438 value
|= extract_bits(instruction
, 13, 3);
1443 int64
NMD::extract_s__se14_0_13_to_1_s1(uint64 instruction
)
1446 value
|= extract_bits(instruction
, 0, 1) << 14;
1447 value
|= extract_bits(instruction
, 1, 13) << 1;
1448 value
= sign_extend(value
, 14);
1453 uint64
NMD::extract_rs3_6_5_4(uint64 instruction
)
1456 value
|= extract_bits(instruction
, 4, 3);
1461 uint64
NMD::extract_u_31_to_0__s32(uint64 instruction
)
1464 value
|= extract_bits(instruction
, 0, 32) << 32;
1469 uint64
NMD::extract_shift_10_9_8_7_6(uint64 instruction
)
1472 value
|= extract_bits(instruction
, 6, 5);
1477 uint64
NMD::extract_cs_25_24_23_22_21(uint64 instruction
)
1480 value
|= extract_bits(instruction
, 21, 5);
1485 uint64
NMD::extract_shiftx_11_10_9_8_7_6(uint64 instruction
)
1488 value
|= extract_bits(instruction
, 6, 6);
1493 uint64
NMD::extract_rt_9_8_7_6_5(uint64 instruction
)
1496 value
|= extract_bits(instruction
, 5, 5);
1501 uint64
NMD::extract_op_25_24_23_22_21(uint64 instruction
)
1504 value
|= extract_bits(instruction
, 21, 5);
1509 uint64
NMD::extract_u_6_5_4_3_2_1_0__s2(uint64 instruction
)
1512 value
|= extract_bits(instruction
, 0, 7) << 2;
1517 uint64
NMD::extract_bit_16_15_14_13_12_11(uint64 instruction
)
1520 value
|= extract_bits(instruction
, 11, 6);
1525 uint64
NMD::extract_mask_20_19_18_17_16_15_14(uint64 instruction
)
1528 value
|= extract_bits(instruction
, 14, 7);
1533 uint64
NMD::extract_eu_3_2_1_0(uint64 instruction
)
1536 value
|= extract_bits(instruction
, 0, 4);
1541 uint64
NMD::extract_u_7_6_5_4__s4(uint64 instruction
)
1544 value
|= extract_bits(instruction
, 4, 4) << 4;
1549 int64
NMD::extract_s__se8_15_7_6_5_4_3_s3(uint64 instruction
)
1552 value
|= extract_bits(instruction
, 3, 5) << 3;
1553 value
|= extract_bits(instruction
, 15, 1) << 8;
1554 value
= sign_extend(value
, 8);
1559 uint64
NMD::extract_ft_15_14_13_12_11(uint64 instruction
)
1562 value
|= extract_bits(instruction
, 11, 5);
1567 int64
NMD::extract_s__se31_15_to_0_31_to_16(uint64 instruction
)
1570 value
|= extract_bits(instruction
, 0, 16) << 16;
1571 value
|= extract_bits(instruction
, 16, 16);
1572 value
= sign_extend(value
, 31);
1577 uint64
NMD::extract_u_20_19_18_17_16_15_14_13(uint64 instruction
)
1580 value
|= extract_bits(instruction
, 13, 8);
1585 uint64
NMD::extract_u_17_to_2__s2(uint64 instruction
)
1588 value
|= extract_bits(instruction
, 2, 16) << 2;
1593 uint64
NMD::extract_rd_15_14_13_12_11(uint64 instruction
)
1596 value
|= extract_bits(instruction
, 11, 5);
1601 uint64
NMD::extract_c0s_20_19_18_17_16(uint64 instruction
)
1604 value
|= extract_bits(instruction
, 16, 5);
1609 uint64
NMD::extract_code_1_0(uint64 instruction
)
1612 value
|= extract_bits(instruction
, 0, 2);
1617 int64
NMD::extract_s__se25_0_24_to_1_s1(uint64 instruction
)
1620 value
|= extract_bits(instruction
, 0, 1) << 25;
1621 value
|= extract_bits(instruction
, 1, 24) << 1;
1622 value
= sign_extend(value
, 25);
1627 uint64
NMD::extract_u_1_0(uint64 instruction
)
1630 value
|= extract_bits(instruction
, 0, 2);
1635 uint64
NMD::extract_u_3_8__s2(uint64 instruction
)
1638 value
|= extract_bits(instruction
, 3, 1) << 3;
1639 value
|= extract_bits(instruction
, 8, 1) << 2;
1644 uint64
NMD::extract_fd_15_14_13_12_11(uint64 instruction
)
1647 value
|= extract_bits(instruction
, 11, 5);
1652 uint64
NMD::extract_u_4_3_2_1_0__s2(uint64 instruction
)
1655 value
|= extract_bits(instruction
, 0, 5) << 2;
1660 uint64
NMD::extract_rtz4_9_7_6_5(uint64 instruction
)
1663 value
|= extract_bits(instruction
, 5, 3);
1664 value
|= extract_bits(instruction
, 9, 1) << 3;
1669 uint64
NMD::extract_sel_15_14_13_12_11(uint64 instruction
)
1672 value
|= extract_bits(instruction
, 11, 5);
1677 uint64
NMD::extract_ct_25_24_23_22_21(uint64 instruction
)
1680 value
|= extract_bits(instruction
, 21, 5);
1685 uint64
NMD::extract_u_20_to_2__s2(uint64 instruction
)
1688 value
|= extract_bits(instruction
, 2, 19) << 2;
1693 int64
NMD::extract_s__se3_4_2_1_0(uint64 instruction
)
1696 value
|= extract_bits(instruction
, 0, 3);
1697 value
|= extract_bits(instruction
, 4, 1) << 3;
1698 value
= sign_extend(value
, 3);
1703 uint64
NMD::extract_u_3_2_1_0__s1(uint64 instruction
)
1706 value
|= extract_bits(instruction
, 0, 4) << 1;
1712 bool NMD::ADDIU_32__cond(uint64 instruction
)
1714 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1719 bool NMD::ADDIU_RS5__cond(uint64 instruction
)
1721 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1726 bool NMD::BALRSC_cond(uint64 instruction
)
1728 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1733 bool NMD::BEQC_16__cond(uint64 instruction
)
1735 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1736 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1737 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1738 return rs3
< rt3
&& u
!= 0;
1742 bool NMD::BNEC_16__cond(uint64 instruction
)
1744 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1745 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1746 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1747 return rs3
>= rt3
&& u
!= 0;
1751 bool NMD::MOVE_cond(uint64 instruction
)
1753 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1758 bool NMD::P16_BR1_cond(uint64 instruction
)
1760 uint64 u
= extract_u_3_2_1_0__s1(instruction
);
1765 bool NMD::PREF_S9__cond(uint64 instruction
)
1767 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1772 bool NMD::PREFE_cond(uint64 instruction
)
1774 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1779 bool NMD::SLTU_cond(uint64 instruction
)
1781 uint64 rd
= extract_rd_15_14_13_12_11(instruction
);
1788 * ABS.D fd, fs - Floating Point Absolute Value
1791 * 10987654321098765432109876543210
1792 * 010001 00000 000101
1797 std::string
NMD::ABS_D(uint64 instruction
)
1799 uint64 fd_value
= extract_ft_25_24_23_22_21(instruction
);
1800 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1802 std::string fs
= FPR(copy(fs_value
));
1803 std::string fd
= FPR(copy(fd_value
));
1805 return img::format("ABS.D %s, %s", fd
, fs
);
1810 * ABS.S fd, fs - Floating Point Absolute Value
1813 * 10987654321098765432109876543210
1814 * 010001 00000 000101
1819 std::string
NMD::ABS_S(uint64 instruction
)
1821 uint64 fd_value
= extract_ft_25_24_23_22_21(instruction
);
1822 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1824 std::string fs
= FPR(copy(fs_value
));
1825 std::string fd
= FPR(copy(fd_value
));
1827 return img::format("ABS.S %s, %s", fd
, fs
);
1832 * ABSQ_S.PH rt, rs - Find Absolute Value of Two Fractional Halfwords
1835 * 10987654321098765432109876543210
1836 * 001000 0001000100111111
1840 std::string
NMD::ABSQ_S_PH(uint64 instruction
)
1842 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1843 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1845 std::string rt
= GPR(copy(rt_value
));
1846 std::string rs
= GPR(copy(rs_value
));
1848 return img::format("ABSQ_S.PH %s, %s", rt
, rs
);
1853 * ABSQ_S.QB rt, rs - Find Absolute Value of Four Fractional Byte Values
1856 * 10987654321098765432109876543210
1857 * 001000 0000000100111111
1861 std::string
NMD::ABSQ_S_QB(uint64 instruction
)
1863 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1864 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1866 std::string rt
= GPR(copy(rt_value
));
1867 std::string rs
= GPR(copy(rs_value
));
1869 return img::format("ABSQ_S.QB %s, %s", rt
, rs
);
1877 * 10987654321098765432109876543210
1878 * 001000 0010000100111111
1882 std::string
NMD::ABSQ_S_W(uint64 instruction
)
1884 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1885 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1887 std::string rt
= GPR(copy(rt_value
));
1888 std::string rs
= GPR(copy(rs_value
));
1890 return img::format("ABSQ_S.W %s, %s", rt
, rs
);
1898 * 10987654321098765432109876543210
1899 * 001000 0010000100111111
1903 std::string
NMD::ACLR(uint64 instruction
)
1905 uint64 bit_value
= extract_bit_23_22_21(instruction
);
1906 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1907 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
1909 std::string bit
= IMMEDIATE(copy(bit_value
));
1910 std::string s
= IMMEDIATE(copy(s_value
));
1911 std::string rs
= GPR(copy(rs_value
));
1913 return img::format("ACLR %s, %s(%s)", bit
, s
, rs
);
1921 * 10987654321098765432109876543210
1922 * 001000 0010000100111111
1926 std::string
NMD::ADD(uint64 instruction
)
1928 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1929 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1930 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
1932 std::string rd
= GPR(copy(rd_value
));
1933 std::string rs
= GPR(copy(rs_value
));
1934 std::string rt
= GPR(copy(rt_value
));
1936 return img::format("ADD %s, %s, %s", rd
, rs
, rt
);
1941 * ADD.D fd, fs, ft - Floating Point Add
1944 * 10987654321098765432109876543210
1951 std::string
NMD::ADD_D(uint64 instruction
)
1953 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
1954 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1955 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
1957 std::string ft
= FPR(copy(ft_value
));
1958 std::string fs
= FPR(copy(fs_value
));
1959 std::string fd
= FPR(copy(fd_value
));
1961 return img::format("ADD.D %s, %s, %s", fd
, fs
, ft
);
1966 * ADD.S fd, fs, ft - Floating Point Add
1969 * 10987654321098765432109876543210
1976 std::string
NMD::ADD_S(uint64 instruction
)
1978 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
1979 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
1980 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
1982 std::string ft
= FPR(copy(ft_value
));
1983 std::string fs
= FPR(copy(fs_value
));
1984 std::string fd
= FPR(copy(fd_value
));
1986 return img::format("ADD.S %s, %s, %s", fd
, fs
, ft
);
1994 * 10987654321098765432109876543210
1995 * 001000 0010000100111111
1999 std::string
NMD::ADDIU_32_(uint64 instruction
)
2001 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2002 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2003 uint64 u_value
= extract_u_15_to_0(instruction
);
2005 std::string rt
= GPR(copy(rt_value
));
2006 std::string rs
= GPR(copy(rs_value
));
2007 std::string u
= IMMEDIATE(copy(u_value
));
2009 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
2017 * 10987654321098765432109876543210
2018 * 001000 0010000100111111
2022 std::string
NMD::ADDIU_48_(uint64 instruction
)
2024 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2025 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
2027 std::string rt
= GPR(copy(rt_value
));
2028 std::string s
= IMMEDIATE(copy(s_value
));
2030 return img::format("ADDIU %s, %s", rt
, s
);
2038 * 10987654321098765432109876543210
2039 * 001000 0010000100111111
2043 std::string
NMD::ADDIU_GP48_(uint64 instruction
)
2045 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2046 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
2048 std::string rt
= GPR(copy(rt_value
));
2049 std::string s
= IMMEDIATE(copy(s_value
));
2051 return img::format("ADDIU %s, $%d, %s", rt
, 28, s
);
2059 * 10987654321098765432109876543210
2060 * 001000 0010000100111111
2064 std::string
NMD::ADDIU_GP_B_(uint64 instruction
)
2066 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2067 uint64 u_value
= extract_u_17_to_0(instruction
);
2069 std::string rt
= GPR(copy(rt_value
));
2070 std::string u
= IMMEDIATE(copy(u_value
));
2072 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
2080 * 10987654321098765432109876543210
2081 * 001000 0010000100111111
2085 std::string
NMD::ADDIU_GP_W_(uint64 instruction
)
2087 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2088 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
2090 std::string rt
= GPR(copy(rt_value
));
2091 std::string u
= IMMEDIATE(copy(u_value
));
2093 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
2101 * 10987654321098765432109876543210
2102 * 001000 0010000100111111
2106 std::string
NMD::ADDIU_NEG_(uint64 instruction
)
2108 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2109 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2110 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
2112 std::string rt
= GPR(copy(rt_value
));
2113 std::string rs
= GPR(copy(rs_value
));
2114 std::string u
= IMMEDIATE(neg_copy(u_value
));
2116 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
2124 * 10987654321098765432109876543210
2125 * 001000 0010000100111111
2129 std::string
NMD::ADDIU_R1_SP_(uint64 instruction
)
2131 uint64 u_value
= extract_u_5_4_3_2_1_0__s2(instruction
);
2132 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2134 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2135 std::string u
= IMMEDIATE(copy(u_value
));
2137 return img::format("ADDIU %s, $%d, %s", rt3
, 29, u
);
2145 * 10987654321098765432109876543210
2146 * 001000 0010000100111111
2150 std::string
NMD::ADDIU_R2_(uint64 instruction
)
2152 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2153 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2154 uint64 u_value
= extract_u_2_1_0__s2(instruction
);
2156 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2157 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2158 std::string u
= IMMEDIATE(copy(u_value
));
2160 return img::format("ADDIU %s, %s, %s", rt3
, rs3
, u
);
2165 * ADDIU[RS5] rt, s5 - Add Signed Word and Set Carry Bit
2172 std::string
NMD::ADDIU_RS5_(uint64 instruction
)
2174 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
2175 int64 s_value
= extract_s__se3_4_2_1_0(instruction
);
2177 std::string rt
= GPR(copy(rt_value
));
2178 std::string s
= IMMEDIATE(copy(s_value
));
2180 return img::format("ADDIU %s, %s", rt
, s
);
2188 * 10987654321098765432109876543210
2189 * 001000 x1110000101
2194 std::string
NMD::ADDIUPC_32_(uint64 instruction
)
2196 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2197 int64 s_value
= extract_s__se21_0_20_to_1_s1(instruction
);
2199 std::string rt
= GPR(copy(rt_value
));
2200 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2202 return img::format("ADDIUPC %s, %s", rt
, s
);
2210 * 10987654321098765432109876543210
2211 * 001000 x1110000101
2216 std::string
NMD::ADDIUPC_48_(uint64 instruction
)
2218 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2219 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
2221 std::string rt
= GPR(copy(rt_value
));
2222 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
2224 return img::format("ADDIUPC %s, %s", rt
, s
);
2229 * ADDQ.PH rd, rt, rs - Add Fractional Halfword Vectors
2232 * 10987654321098765432109876543210
2233 * 001000 00000001101
2238 std::string
NMD::ADDQ_PH(uint64 instruction
)
2240 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2241 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2242 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2244 std::string rd
= GPR(copy(rd_value
));
2245 std::string rs
= GPR(copy(rs_value
));
2246 std::string rt
= GPR(copy(rt_value
));
2248 return img::format("ADDQ.PH %s, %s, %s", rd
, rs
, rt
);
2253 * ADDQ_S.PH rd, rt, rs - Add Fractional Halfword Vectors
2256 * 10987654321098765432109876543210
2257 * 001000 10000001101
2262 std::string
NMD::ADDQ_S_PH(uint64 instruction
)
2264 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2265 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2266 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2268 std::string rd
= GPR(copy(rd_value
));
2269 std::string rs
= GPR(copy(rs_value
));
2270 std::string rt
= GPR(copy(rt_value
));
2272 return img::format("ADDQ_S.PH %s, %s, %s", rd
, rs
, rt
);
2277 * ADDQ_S.W rd, rt, rs - Add Fractional Words
2280 * 10987654321098765432109876543210
2281 * 001000 x1100000101
2286 std::string
NMD::ADDQ_S_W(uint64 instruction
)
2288 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2289 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2290 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2292 std::string rd
= GPR(copy(rd_value
));
2293 std::string rs
= GPR(copy(rs_value
));
2294 std::string rt
= GPR(copy(rt_value
));
2296 return img::format("ADDQ_S.W %s, %s, %s", rd
, rs
, rt
);
2301 * ADDQH.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2305 * 10987654321098765432109876543210
2306 * 001000 00001001101
2311 std::string
NMD::ADDQH_PH(uint64 instruction
)
2313 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2314 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2315 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2317 std::string rd
= GPR(copy(rd_value
));
2318 std::string rs
= GPR(copy(rs_value
));
2319 std::string rt
= GPR(copy(rt_value
));
2321 return img::format("ADDQH.PH %s, %s, %s", rd
, rs
, rt
);
2326 * ADDQH_R.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2330 * 10987654321098765432109876543210
2331 * 001000 10001001101
2336 std::string
NMD::ADDQH_R_PH(uint64 instruction
)
2338 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2339 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2340 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2342 std::string rd
= GPR(copy(rd_value
));
2343 std::string rs
= GPR(copy(rs_value
));
2344 std::string rt
= GPR(copy(rt_value
));
2346 return img::format("ADDQH_R.PH %s, %s, %s", rd
, rs
, rt
);
2351 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2354 * 10987654321098765432109876543210
2355 * 001000 00010001101
2360 std::string
NMD::ADDQH_R_W(uint64 instruction
)
2362 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2363 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2364 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2366 std::string rd
= GPR(copy(rd_value
));
2367 std::string rs
= GPR(copy(rs_value
));
2368 std::string rt
= GPR(copy(rt_value
));
2370 return img::format("ADDQH_R.W %s, %s, %s", rd
, rs
, rt
);
2375 * ADDQH.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2378 * 10987654321098765432109876543210
2379 * 001000 10010001101
2384 std::string
NMD::ADDQH_W(uint64 instruction
)
2386 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2387 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2388 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2390 std::string rd
= GPR(copy(rd_value
));
2391 std::string rs
= GPR(copy(rs_value
));
2392 std::string rt
= GPR(copy(rt_value
));
2394 return img::format("ADDQH.W %s, %s, %s", rd
, rs
, rt
);
2399 * ADDSC rd, rt, rs - Add Signed Word and Set Carry Bit
2402 * 10987654321098765432109876543210
2403 * 001000 x1110000101
2408 std::string
NMD::ADDSC(uint64 instruction
)
2410 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2411 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2412 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2414 std::string rd
= GPR(copy(rd_value
));
2415 std::string rs
= GPR(copy(rs_value
));
2416 std::string rt
= GPR(copy(rt_value
));
2418 return img::format("ADDSC %s, %s, %s", rd
, rs
, rt
);
2423 * ADDU[16] rd3, rs3, rt3 -
2431 std::string
NMD::ADDU_16_(uint64 instruction
)
2433 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2434 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2435 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
2437 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2438 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2439 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
2441 return img::format("ADDU %s, %s, %s", rd3
, rs3
, rt3
);
2449 * 10987654321098765432109876543210
2450 * 001000 x1110000101
2455 std::string
NMD::ADDU_32_(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, %s, %s", rd
, rs
, rt
);
2473 * 10987654321098765432109876543210
2474 * 001000 x1110000101
2479 std::string
NMD::ADDU_4X4_(uint64 instruction
)
2481 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
2482 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
2484 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
2485 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
2487 return img::format("ADDU %s, %s", rs4
, rt4
);
2492 * ADDU.PH rd, rt, rs - Unsigned Add Integer Halfwords
2495 * 10987654321098765432109876543210
2496 * 001000 00100001101
2501 std::string
NMD::ADDU_PH(uint64 instruction
)
2503 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2504 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2505 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2507 std::string rd
= GPR(copy(rd_value
));
2508 std::string rs
= GPR(copy(rs_value
));
2509 std::string rt
= GPR(copy(rt_value
));
2511 return img::format("ADDU.PH %s, %s, %s", rd
, rs
, rt
);
2516 * ADDU.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2519 * 10987654321098765432109876543210
2520 * 001000 00011001101
2525 std::string
NMD::ADDU_QB(uint64 instruction
)
2527 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2528 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2529 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2531 std::string rd
= GPR(copy(rd_value
));
2532 std::string rs
= GPR(copy(rs_value
));
2533 std::string rt
= GPR(copy(rt_value
));
2535 return img::format("ADDU.QB %s, %s, %s", rd
, rs
, rt
);
2540 * ADDU_S.PH rd, rt, rs - Unsigned Add Integer Halfwords
2543 * 10987654321098765432109876543210
2544 * 001000 10100001101
2549 std::string
NMD::ADDU_S_PH(uint64 instruction
)
2551 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2552 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2553 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2555 std::string rd
= GPR(copy(rd_value
));
2556 std::string rs
= GPR(copy(rs_value
));
2557 std::string rt
= GPR(copy(rt_value
));
2559 return img::format("ADDU_S.PH %s, %s, %s", rd
, rs
, rt
);
2564 * ADDU_S.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2567 * 10987654321098765432109876543210
2568 * 001000 10011001101
2573 std::string
NMD::ADDU_S_QB(uint64 instruction
)
2575 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2576 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2577 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2579 std::string rd
= GPR(copy(rd_value
));
2580 std::string rs
= GPR(copy(rs_value
));
2581 std::string rt
= GPR(copy(rt_value
));
2583 return img::format("ADDU_S.QB %s, %s, %s", rd
, rs
, rt
);
2588 * ADDUH.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2592 * 10987654321098765432109876543210
2593 * 001000 00101001101
2598 std::string
NMD::ADDUH_QB(uint64 instruction
)
2600 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2601 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2602 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2604 std::string rd
= GPR(copy(rd_value
));
2605 std::string rs
= GPR(copy(rs_value
));
2606 std::string rt
= GPR(copy(rt_value
));
2608 return img::format("ADDUH.QB %s, %s, %s", rd
, rs
, rt
);
2613 * ADDUH_R.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2617 * 10987654321098765432109876543210
2618 * 001000 10101001101
2623 std::string
NMD::ADDUH_R_QB(uint64 instruction
)
2625 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2626 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2627 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2629 std::string rd
= GPR(copy(rd_value
));
2630 std::string rs
= GPR(copy(rs_value
));
2631 std::string rt
= GPR(copy(rt_value
));
2633 return img::format("ADDUH_R.QB %s, %s, %s", rd
, rs
, rt
);
2637 * ADDWC rd, rt, rs - Add Word with Carry Bit
2640 * 10987654321098765432109876543210
2641 * 001000 x1111000101
2646 std::string
NMD::ADDWC(uint64 instruction
)
2648 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2649 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2650 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2652 std::string rd
= GPR(copy(rd_value
));
2653 std::string rs
= GPR(copy(rs_value
));
2654 std::string rt
= GPR(copy(rt_value
));
2656 return img::format("ADDWC %s, %s, %s", rd
, rs
, rt
);
2664 * 10987654321098765432109876543210
2665 * 001000 x1110000101
2670 std::string
NMD::ALUIPC(uint64 instruction
)
2672 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2673 int64 s_value
= extract_s__se31_0_11_to_2_20_to_12_s12(instruction
);
2675 std::string rt
= GPR(copy(rt_value
));
2676 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2678 return img::format("ALUIPC %s, %%pcrel_hi(%s)", rt
, s
);
2683 * AND[16] rt3, rs3 -
2691 std::string
NMD::AND_16_(uint64 instruction
)
2693 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2694 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2696 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2697 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2699 return img::format("AND %s, %s", rs3
, rt3
);
2707 * 10987654321098765432109876543210
2708 * 001000 x1110000101
2713 std::string
NMD::AND_32_(uint64 instruction
)
2715 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2716 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2717 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
2719 std::string rd
= GPR(copy(rd_value
));
2720 std::string rs
= GPR(copy(rs_value
));
2721 std::string rt
= GPR(copy(rt_value
));
2723 return img::format("AND %s, %s, %s", rd
, rs
, rt
);
2736 std::string
NMD::ANDI_16_(uint64 instruction
)
2738 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2739 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2740 uint64 eu_value
= extract_eu_3_2_1_0(instruction
);
2742 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
2743 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
2744 std::string eu
= IMMEDIATE(encode_eu_from_u_andi16(eu_value
));
2746 return img::format("ANDI %s, %s, %s", rt3
, rs3
, eu
);
2754 * 10987654321098765432109876543210
2755 * 001000 x1110000101
2760 std::string
NMD::ANDI_32_(uint64 instruction
)
2762 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2763 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2764 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
2766 std::string rt
= GPR(copy(rt_value
));
2767 std::string rs
= GPR(copy(rs_value
));
2768 std::string u
= IMMEDIATE(copy(u_value
));
2770 return img::format("ANDI %s, %s, %s", rt
, rs
, u
);
2778 * 10987654321098765432109876543210
2779 * 001000 x1110000101
2784 std::string
NMD::APPEND(uint64 instruction
)
2786 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2787 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2788 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
2790 std::string rt
= GPR(copy(rt_value
));
2791 std::string rs
= GPR(copy(rs_value
));
2792 std::string sa
= IMMEDIATE(copy(sa_value
));
2794 return img::format("APPEND %s, %s, %s", rt
, rs
, sa
);
2802 * 10987654321098765432109876543210
2803 * 001000 x1110000101
2808 std::string
NMD::ASET(uint64 instruction
)
2810 uint64 bit_value
= extract_bit_23_22_21(instruction
);
2811 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2812 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
2814 std::string bit
= IMMEDIATE(copy(bit_value
));
2815 std::string s
= IMMEDIATE(copy(s_value
));
2816 std::string rs
= GPR(copy(rs_value
));
2818 return img::format("ASET %s, %s(%s)", bit
, s
, rs
);
2826 * 10987654321098765432109876543210
2827 * 001000 x1110000101
2832 std::string
NMD::BALC_16_(uint64 instruction
)
2834 int64 s_value
= extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(instruction
);
2836 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2838 return img::format("BALC %s", s
);
2846 * 10987654321098765432109876543210
2847 * 001000 x1110000101
2852 std::string
NMD::BALC_32_(uint64 instruction
)
2854 int64 s_value
= extract_s__se25_0_24_to_1_s1(instruction
);
2856 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2858 return img::format("BALC %s", s
);
2866 * 10987654321098765432109876543210
2867 * 001000 x1110000101
2872 std::string
NMD::BALRSC(uint64 instruction
)
2874 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2875 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2877 std::string rt
= GPR(copy(rt_value
));
2878 std::string rs
= GPR(copy(rs_value
));
2880 return img::format("BALRSC %s, %s", rt
, rs
);
2888 * 10987654321098765432109876543210
2889 * 001000 x1110000101
2894 std::string
NMD::BBEQZC(uint64 instruction
)
2896 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2897 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2898 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
2900 std::string rt
= GPR(copy(rt_value
));
2901 std::string bit
= IMMEDIATE(copy(bit_value
));
2902 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2904 return img::format("BBEQZC %s, %s, %s", rt
, bit
, s
);
2912 * 10987654321098765432109876543210
2913 * 001000 x1110000101
2918 std::string
NMD::BBNEZC(uint64 instruction
)
2920 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2921 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2922 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
2924 std::string rt
= GPR(copy(rt_value
));
2925 std::string bit
= IMMEDIATE(copy(bit_value
));
2926 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2928 return img::format("BBNEZC %s, %s, %s", rt
, bit
, s
);
2936 * 10987654321098765432109876543210
2937 * 001000 x1110000101
2942 std::string
NMD::BC_16_(uint64 instruction
)
2944 int64 s_value
= extract_s__se10_0_9_8_7_6_5_4_3_2_1_s1(instruction
);
2946 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2948 return img::format("BC %s", s
);
2956 * 10987654321098765432109876543210
2957 * 001000 x1110000101
2962 std::string
NMD::BC_32_(uint64 instruction
)
2964 int64 s_value
= extract_s__se25_0_24_to_1_s1(instruction
);
2966 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2968 return img::format("BC %s", s
);
2976 * 10987654321098765432109876543210
2977 * 001000 x1110000101
2982 std::string
NMD::BC1EQZC(uint64 instruction
)
2984 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
2985 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
2987 std::string ft
= FPR(copy(ft_value
));
2988 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2990 return img::format("BC1EQZC %s, %s", ft
, s
);
2998 * 10987654321098765432109876543210
2999 * 001000 x1110000101
3004 std::string
NMD::BC1NEZC(uint64 instruction
)
3006 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3007 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3009 std::string ft
= FPR(copy(ft_value
));
3010 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3012 return img::format("BC1NEZC %s, %s", ft
, s
);
3020 * 10987654321098765432109876543210
3021 * 001000 x1110000101
3026 std::string
NMD::BC2EQZC(uint64 instruction
)
3028 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
3029 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3031 std::string ct
= CPR(copy(ct_value
));
3032 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3034 return img::format("BC2EQZC %s, %s", ct
, s
);
3042 * 10987654321098765432109876543210
3043 * 001000 x1110000101
3048 std::string
NMD::BC2NEZC(uint64 instruction
)
3050 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
3051 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3053 std::string ct
= CPR(copy(ct_value
));
3054 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3056 return img::format("BC2NEZC %s, %s", ct
, s
);
3064 * 10987654321098765432109876543210
3065 * 001000 x1110000101
3070 std::string
NMD::BEQC_16_(uint64 instruction
)
3072 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3073 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
3074 uint64 u_value
= extract_u_3_2_1_0__s1(instruction
);
3076 std::string rs3
= GPR(encode_rs3_and_check_rs3_lt_rt3(rs3_value
));
3077 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3078 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
3080 return img::format("BEQC %s, %s, %s", rs3
, rt3
, u
);
3088 * 10987654321098765432109876543210
3089 * 001000 x1110000101
3094 std::string
NMD::BEQC_32_(uint64 instruction
)
3096 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3097 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3098 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3100 std::string rs
= GPR(copy(rs_value
));
3101 std::string rt
= GPR(copy(rt_value
));
3102 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3104 return img::format("BEQC %s, %s, %s", rs
, rt
, s
);
3112 * 10987654321098765432109876543210
3113 * 001000 x1110000101
3118 std::string
NMD::BEQIC(uint64 instruction
)
3120 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3121 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3122 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3124 std::string rt
= GPR(copy(rt_value
));
3125 std::string u
= IMMEDIATE(copy(u_value
));
3126 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3128 return img::format("BEQIC %s, %s, %s", rt
, u
, s
);
3136 * 10987654321098765432109876543210
3137 * 001000 x1110000101
3142 std::string
NMD::BEQZC_16_(uint64 instruction
)
3144 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3145 int64 s_value
= extract_s__se7_0_6_5_4_3_2_1_s1(instruction
);
3147 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3148 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3150 return img::format("BEQZC %s, %s", rt3
, s
);
3158 * 10987654321098765432109876543210
3159 * 001000 x1110000101
3164 std::string
NMD::BGEC(uint64 instruction
)
3166 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3167 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3168 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3170 std::string rs
= GPR(copy(rs_value
));
3171 std::string rt
= GPR(copy(rt_value
));
3172 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3174 return img::format("BGEC %s, %s, %s", rs
, rt
, s
);
3182 * 10987654321098765432109876543210
3183 * 001000 x1110000101
3188 std::string
NMD::BGEIC(uint64 instruction
)
3190 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3191 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3192 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3194 std::string rt
= GPR(copy(rt_value
));
3195 std::string u
= IMMEDIATE(copy(u_value
));
3196 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3198 return img::format("BGEIC %s, %s, %s", rt
, u
, s
);
3206 * 10987654321098765432109876543210
3207 * 001000 x1110000101
3212 std::string
NMD::BGEIUC(uint64 instruction
)
3214 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3215 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3216 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3218 std::string rt
= GPR(copy(rt_value
));
3219 std::string u
= IMMEDIATE(copy(u_value
));
3220 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3222 return img::format("BGEIUC %s, %s, %s", rt
, u
, s
);
3230 * 10987654321098765432109876543210
3231 * 001000 x1110000101
3236 std::string
NMD::BGEUC(uint64 instruction
)
3238 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3239 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3240 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3242 std::string rs
= GPR(copy(rs_value
));
3243 std::string rt
= GPR(copy(rt_value
));
3244 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3246 return img::format("BGEUC %s, %s, %s", rs
, rt
, s
);
3254 * 10987654321098765432109876543210
3255 * 001000 x1110000101
3260 std::string
NMD::BLTC(uint64 instruction
)
3262 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3263 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3264 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3266 std::string rs
= GPR(copy(rs_value
));
3267 std::string rt
= GPR(copy(rt_value
));
3268 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3270 return img::format("BLTC %s, %s, %s", rs
, rt
, s
);
3278 * 10987654321098765432109876543210
3279 * 001000 x1110000101
3284 std::string
NMD::BLTIC(uint64 instruction
)
3286 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3287 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3288 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3290 std::string rt
= GPR(copy(rt_value
));
3291 std::string u
= IMMEDIATE(copy(u_value
));
3292 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3294 return img::format("BLTIC %s, %s, %s", rt
, u
, s
);
3302 * 10987654321098765432109876543210
3303 * 001000 x1110000101
3308 std::string
NMD::BLTIUC(uint64 instruction
)
3310 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3311 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3312 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3314 std::string rt
= GPR(copy(rt_value
));
3315 std::string u
= IMMEDIATE(copy(u_value
));
3316 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3318 return img::format("BLTIUC %s, %s, %s", rt
, u
, s
);
3326 * 10987654321098765432109876543210
3327 * 001000 x1110000101
3332 std::string
NMD::BLTUC(uint64 instruction
)
3334 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3335 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3336 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3338 std::string rs
= GPR(copy(rs_value
));
3339 std::string rt
= GPR(copy(rt_value
));
3340 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3342 return img::format("BLTUC %s, %s, %s", rs
, rt
, s
);
3350 * 10987654321098765432109876543210
3351 * 001000 x1110000101
3356 std::string
NMD::BNEC_16_(uint64 instruction
)
3358 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3359 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
3360 uint64 u_value
= extract_u_3_2_1_0__s1(instruction
);
3362 std::string rs3
= GPR(encode_rs3_and_check_rs3_ge_rt3(rs3_value
));
3363 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3364 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
3366 return img::format("BNEC %s, %s, %s", rs3
, rt3
, u
);
3374 * 10987654321098765432109876543210
3375 * 001000 x1110000101
3380 std::string
NMD::BNEC_32_(uint64 instruction
)
3382 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3383 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3384 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3386 std::string rs
= GPR(copy(rs_value
));
3387 std::string rt
= GPR(copy(rt_value
));
3388 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3390 return img::format("BNEC %s, %s, %s", rs
, rt
, s
);
3398 * 10987654321098765432109876543210
3399 * 001000 x1110000101
3404 std::string
NMD::BNEIC(uint64 instruction
)
3406 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3407 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3408 int64 s_value
= extract_s__se11_0_10_9_8_7_6_5_4_3_2_1_0_s1(instruction
);
3410 std::string rt
= GPR(copy(rt_value
));
3411 std::string u
= IMMEDIATE(copy(u_value
));
3412 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3414 return img::format("BNEIC %s, %s, %s", rt
, u
, s
);
3422 * 10987654321098765432109876543210
3423 * 001000 x1110000101
3428 std::string
NMD::BNEZC_16_(uint64 instruction
)
3430 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3431 int64 s_value
= extract_s__se7_0_6_5_4_3_2_1_s1(instruction
);
3433 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
3434 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3436 return img::format("BNEZC %s, %s", rt3
, s
);
3444 * 10987654321098765432109876543210
3445 * 001000 x1110000101
3450 std::string
NMD::BPOSGE32C(uint64 instruction
)
3452 int64 s_value
= extract_s__se14_0_13_to_1_s1(instruction
);
3454 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3456 return img::format("BPOSGE32C %s", s
);
3464 * 10987654321098765432109876543210
3465 * 001000 x1110000101
3470 std::string
NMD::BREAK_16_(uint64 instruction
)
3472 uint64 code_value
= extract_code_2_1_0(instruction
);
3474 std::string code
= IMMEDIATE(copy(code_value
));
3476 return img::format("BREAK %s", code
);
3481 * BREAK code - Break. Cause a Breakpoint exception
3484 * 10987654321098765432109876543210
3485 * 001000 x1110000101
3490 std::string
NMD::BREAK_32_(uint64 instruction
)
3492 uint64 code_value
= extract_code_18_to_0(instruction
);
3494 std::string code
= IMMEDIATE(copy(code_value
));
3496 return img::format("BREAK %s", code
);
3504 * 10987654321098765432109876543210
3505 * 001000 x1110000101
3510 std::string
NMD::BRSC(uint64 instruction
)
3512 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3514 std::string rs
= GPR(copy(rs_value
));
3516 return img::format("BRSC %s", rs
);
3524 * 10987654321098765432109876543210
3525 * 001000 x1110000101
3530 std::string
NMD::CACHE(uint64 instruction
)
3532 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3533 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3534 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
3536 std::string op
= IMMEDIATE(copy(op_value
));
3537 std::string s
= IMMEDIATE(copy(s_value
));
3538 std::string rs
= GPR(copy(rs_value
));
3540 return img::format("CACHE %s, %s(%s)", op
, s
, rs
);
3548 * 10987654321098765432109876543210
3549 * 001000 x1110000101
3554 std::string
NMD::CACHEE(uint64 instruction
)
3556 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3557 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3558 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
3560 std::string op
= IMMEDIATE(copy(op_value
));
3561 std::string s
= IMMEDIATE(copy(s_value
));
3562 std::string rs
= GPR(copy(rs_value
));
3564 return img::format("CACHEE %s, %s(%s)", op
, s
, rs
);
3572 * 10987654321098765432109876543210
3573 * 001000 x1110000101
3578 std::string
NMD::CEIL_L_D(uint64 instruction
)
3580 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3581 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3583 std::string ft
= FPR(copy(ft_value
));
3584 std::string fs
= FPR(copy(fs_value
));
3586 return img::format("CEIL.L.D %s, %s", ft
, fs
);
3594 * 10987654321098765432109876543210
3595 * 001000 x1110000101
3600 std::string
NMD::CEIL_L_S(uint64 instruction
)
3602 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3603 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3605 std::string ft
= FPR(copy(ft_value
));
3606 std::string fs
= FPR(copy(fs_value
));
3608 return img::format("CEIL.L.S %s, %s", ft
, fs
);
3616 * 10987654321098765432109876543210
3617 * 001000 x1110000101
3622 std::string
NMD::CEIL_W_D(uint64 instruction
)
3624 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3625 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3627 std::string ft
= FPR(copy(ft_value
));
3628 std::string fs
= FPR(copy(fs_value
));
3630 return img::format("CEIL.W.D %s, %s", ft
, fs
);
3638 * 10987654321098765432109876543210
3639 * 001000 x1110000101
3644 std::string
NMD::CEIL_W_S(uint64 instruction
)
3646 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3647 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3649 std::string ft
= FPR(copy(ft_value
));
3650 std::string fs
= FPR(copy(fs_value
));
3652 return img::format("CEIL.W.S %s, %s", ft
, fs
);
3660 * 10987654321098765432109876543210
3661 * 001000 x1110000101
3666 std::string
NMD::CFC1(uint64 instruction
)
3668 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3669 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3671 std::string rt
= GPR(copy(rt_value
));
3672 std::string cs
= CPR(copy(cs_value
));
3674 return img::format("CFC1 %s, %s", rt
, cs
);
3682 * 10987654321098765432109876543210
3683 * 001000 x1110000101
3688 std::string
NMD::CFC2(uint64 instruction
)
3690 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3691 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3693 std::string rt
= GPR(copy(rt_value
));
3694 std::string cs
= CPR(copy(cs_value
));
3696 return img::format("CFC2 %s, %s", rt
, cs
);
3704 * 10987654321098765432109876543210
3705 * 001000 x1110000101
3710 std::string
NMD::CLASS_D(uint64 instruction
)
3712 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3713 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3715 std::string ft
= FPR(copy(ft_value
));
3716 std::string fs
= FPR(copy(fs_value
));
3718 return img::format("CLASS.D %s, %s", ft
, fs
);
3726 * 10987654321098765432109876543210
3727 * 001000 x1110000101
3732 std::string
NMD::CLASS_S(uint64 instruction
)
3734 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3735 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3737 std::string ft
= FPR(copy(ft_value
));
3738 std::string fs
= FPR(copy(fs_value
));
3740 return img::format("CLASS.S %s, %s", ft
, fs
);
3748 * 10987654321098765432109876543210
3749 * 001000 x1110000101
3754 std::string
NMD::CLO(uint64 instruction
)
3756 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3757 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3759 std::string rt
= GPR(copy(rt_value
));
3760 std::string rs
= GPR(copy(rs_value
));
3762 return img::format("CLO %s, %s", rt
, rs
);
3770 * 10987654321098765432109876543210
3771 * 001000 x1110000101
3776 std::string
NMD::CLZ(uint64 instruction
)
3778 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3779 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3781 std::string rt
= GPR(copy(rt_value
));
3782 std::string rs
= GPR(copy(rs_value
));
3784 return img::format("CLZ %s, %s", rt
, rs
);
3792 * 10987654321098765432109876543210
3793 * 001000 x1110000101
3798 std::string
NMD::CMP_AF_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.AF.D %s, %s, %s", fd
, fs
, ft
);
3816 * 10987654321098765432109876543210
3817 * 001000 x1110000101
3822 std::string
NMD::CMP_AF_S(uint64 instruction
)
3824 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3825 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3826 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3828 std::string fd
= FPR(copy(fd_value
));
3829 std::string fs
= FPR(copy(fs_value
));
3830 std::string ft
= FPR(copy(ft_value
));
3832 return img::format("CMP.AF.S %s, %s, %s", fd
, fs
, ft
);
3840 * 10987654321098765432109876543210
3841 * 001000 x1110000101
3846 std::string
NMD::CMP_EQ_D(uint64 instruction
)
3848 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3849 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3850 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3852 std::string fd
= FPR(copy(fd_value
));
3853 std::string fs
= FPR(copy(fs_value
));
3854 std::string ft
= FPR(copy(ft_value
));
3856 return img::format("CMP.EQ.D %s, %s, %s", fd
, fs
, ft
);
3864 * 10987654321098765432109876543210
3865 * 001000 x1110000101
3870 std::string
NMD::CMP_EQ_PH(uint64 instruction
)
3872 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3873 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3875 std::string rs
= GPR(copy(rs_value
));
3876 std::string rt
= GPR(copy(rt_value
));
3878 return img::format("CMP.EQ.PH %s, %s", rs
, rt
);
3886 * 10987654321098765432109876543210
3887 * 001000 x1110000101
3892 std::string
NMD::CMP_EQ_S(uint64 instruction
)
3894 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3895 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3896 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3898 std::string fd
= FPR(copy(fd_value
));
3899 std::string fs
= FPR(copy(fs_value
));
3900 std::string ft
= FPR(copy(ft_value
));
3902 return img::format("CMP.EQ.S %s, %s, %s", fd
, fs
, ft
);
3910 * 10987654321098765432109876543210
3911 * 001000 x1110000101
3916 std::string
NMD::CMP_LE_D(uint64 instruction
)
3918 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
3919 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
3920 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
3922 std::string fd
= FPR(copy(fd_value
));
3923 std::string fs
= FPR(copy(fs_value
));
3924 std::string ft
= FPR(copy(ft_value
));
3926 return img::format("CMP.LE.D %s, %s, %s", fd
, fs
, ft
);
3934 * 10987654321098765432109876543210
3935 * 001000 x1110000101
3940 std::string
NMD::CMP_LE_PH(uint64 instruction
)
3942 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3943 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3945 std::string rs
= GPR(copy(rs_value
));
3946 std::string rt
= GPR(copy(rt_value
));
3948 return img::format("CMP.LE.PH %s, %s", rs
, rt
);
3956 * 10987654321098765432109876543210
3957 * 001000 x1110000101
3962 std::string
NMD::CMP_LE_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.LE.S %s, %s, %s", fd
, fs
, ft
);
3980 * 10987654321098765432109876543210
3981 * 001000 x1110000101
3986 std::string
NMD::CMP_LT_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.LT.D %s, %s, %s", fd
, fs
, ft
);
4004 * 10987654321098765432109876543210
4005 * 001000 x1110000101
4010 std::string
NMD::CMP_LT_PH(uint64 instruction
)
4012 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4013 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4015 std::string rs
= GPR(copy(rs_value
));
4016 std::string rt
= GPR(copy(rt_value
));
4018 return img::format("CMP.LT.PH %s, %s", rs
, rt
);
4026 * 10987654321098765432109876543210
4027 * 001000 x1110000101
4032 std::string
NMD::CMP_LT_S(uint64 instruction
)
4034 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4035 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4036 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4038 std::string fd
= FPR(copy(fd_value
));
4039 std::string fs
= FPR(copy(fs_value
));
4040 std::string ft
= FPR(copy(ft_value
));
4042 return img::format("CMP.LT.S %s, %s, %s", fd
, fs
, ft
);
4050 * 10987654321098765432109876543210
4051 * 001000 x1110000101
4056 std::string
NMD::CMP_NE_D(uint64 instruction
)
4058 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4059 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4060 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4062 std::string fd
= FPR(copy(fd_value
));
4063 std::string fs
= FPR(copy(fs_value
));
4064 std::string ft
= FPR(copy(ft_value
));
4066 return img::format("CMP.NE.D %s, %s, %s", fd
, fs
, ft
);
4074 * 10987654321098765432109876543210
4075 * 001000 x1110000101
4080 std::string
NMD::CMP_NE_S(uint64 instruction
)
4082 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4083 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4084 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4086 std::string fd
= FPR(copy(fd_value
));
4087 std::string fs
= FPR(copy(fs_value
));
4088 std::string ft
= FPR(copy(ft_value
));
4090 return img::format("CMP.NE.S %s, %s, %s", fd
, fs
, ft
);
4098 * 10987654321098765432109876543210
4099 * 001000 x1110000101
4104 std::string
NMD::CMP_OR_D(uint64 instruction
)
4106 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4107 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4108 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4110 std::string fd
= FPR(copy(fd_value
));
4111 std::string fs
= FPR(copy(fs_value
));
4112 std::string ft
= FPR(copy(ft_value
));
4114 return img::format("CMP.OR.D %s, %s, %s", fd
, fs
, ft
);
4122 * 10987654321098765432109876543210
4123 * 001000 x1110000101
4128 std::string
NMD::CMP_OR_S(uint64 instruction
)
4130 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4131 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4132 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4134 std::string fd
= FPR(copy(fd_value
));
4135 std::string fs
= FPR(copy(fs_value
));
4136 std::string ft
= FPR(copy(ft_value
));
4138 return img::format("CMP.OR.S %s, %s, %s", fd
, fs
, ft
);
4146 * 10987654321098765432109876543210
4147 * 001000 x1110000101
4152 std::string
NMD::CMP_SAF_D(uint64 instruction
)
4154 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4155 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4156 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4158 std::string fd
= FPR(copy(fd_value
));
4159 std::string fs
= FPR(copy(fs_value
));
4160 std::string ft
= FPR(copy(ft_value
));
4162 return img::format("CMP.SAF.D %s, %s, %s", fd
, fs
, ft
);
4170 * 10987654321098765432109876543210
4171 * 001000 x1110000101
4176 std::string
NMD::CMP_SAF_S(uint64 instruction
)
4178 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4179 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4180 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4182 std::string fd
= FPR(copy(fd_value
));
4183 std::string fs
= FPR(copy(fs_value
));
4184 std::string ft
= FPR(copy(ft_value
));
4186 return img::format("CMP.SAF.S %s, %s, %s", fd
, fs
, ft
);
4194 * 10987654321098765432109876543210
4195 * 001000 x1110000101
4200 std::string
NMD::CMP_SEQ_D(uint64 instruction
)
4202 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4203 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4204 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4206 std::string fd
= FPR(copy(fd_value
));
4207 std::string fs
= FPR(copy(fs_value
));
4208 std::string ft
= FPR(copy(ft_value
));
4210 return img::format("CMP.SEQ.D %s, %s, %s", fd
, fs
, ft
);
4218 * 10987654321098765432109876543210
4219 * 001000 x1110000101
4224 std::string
NMD::CMP_SEQ_S(uint64 instruction
)
4226 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4227 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4228 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4230 std::string fd
= FPR(copy(fd_value
));
4231 std::string fs
= FPR(copy(fs_value
));
4232 std::string ft
= FPR(copy(ft_value
));
4234 return img::format("CMP.SEQ.S %s, %s, %s", fd
, fs
, ft
);
4242 * 10987654321098765432109876543210
4243 * 001000 x1110000101
4248 std::string
NMD::CMP_SLE_D(uint64 instruction
)
4250 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4251 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4252 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4254 std::string fd
= FPR(copy(fd_value
));
4255 std::string fs
= FPR(copy(fs_value
));
4256 std::string ft
= FPR(copy(ft_value
));
4258 return img::format("CMP.SLE.D %s, %s, %s", fd
, fs
, ft
);
4266 * 10987654321098765432109876543210
4267 * 001000 x1110000101
4272 std::string
NMD::CMP_SLE_S(uint64 instruction
)
4274 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4275 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4276 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4278 std::string fd
= FPR(copy(fd_value
));
4279 std::string fs
= FPR(copy(fs_value
));
4280 std::string ft
= FPR(copy(ft_value
));
4282 return img::format("CMP.SLE.S %s, %s, %s", fd
, fs
, ft
);
4290 * 10987654321098765432109876543210
4291 * 001000 x1110000101
4296 std::string
NMD::CMP_SLT_D(uint64 instruction
)
4298 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4299 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4300 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4302 std::string fd
= FPR(copy(fd_value
));
4303 std::string fs
= FPR(copy(fs_value
));
4304 std::string ft
= FPR(copy(ft_value
));
4306 return img::format("CMP.SLT.D %s, %s, %s", fd
, fs
, ft
);
4314 * 10987654321098765432109876543210
4315 * 001000 x1110000101
4320 std::string
NMD::CMP_SLT_S(uint64 instruction
)
4322 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4323 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4324 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4326 std::string fd
= FPR(copy(fd_value
));
4327 std::string fs
= FPR(copy(fs_value
));
4328 std::string ft
= FPR(copy(ft_value
));
4330 return img::format("CMP.SLT.S %s, %s, %s", fd
, fs
, ft
);
4338 * 10987654321098765432109876543210
4339 * 001000 x1110000101
4344 std::string
NMD::CMP_SNE_D(uint64 instruction
)
4346 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4347 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4348 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4350 std::string fd
= FPR(copy(fd_value
));
4351 std::string fs
= FPR(copy(fs_value
));
4352 std::string ft
= FPR(copy(ft_value
));
4354 return img::format("CMP.SNE.D %s, %s, %s", fd
, fs
, ft
);
4362 * 10987654321098765432109876543210
4363 * 001000 x1110000101
4368 std::string
NMD::CMP_SNE_S(uint64 instruction
)
4370 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4371 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4372 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4374 std::string fd
= FPR(copy(fd_value
));
4375 std::string fs
= FPR(copy(fs_value
));
4376 std::string ft
= FPR(copy(ft_value
));
4378 return img::format("CMP.SNE.S %s, %s, %s", fd
, fs
, ft
);
4386 * 10987654321098765432109876543210
4387 * 001000 x1110000101
4392 std::string
NMD::CMP_SOR_D(uint64 instruction
)
4394 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4395 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4396 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4398 std::string fd
= FPR(copy(fd_value
));
4399 std::string fs
= FPR(copy(fs_value
));
4400 std::string ft
= FPR(copy(ft_value
));
4402 return img::format("CMP.SOR.D %s, %s, %s", fd
, fs
, ft
);
4410 * 10987654321098765432109876543210
4411 * 001000 x1110000101
4416 std::string
NMD::CMP_SOR_S(uint64 instruction
)
4418 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4419 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4420 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4422 std::string fd
= FPR(copy(fd_value
));
4423 std::string fs
= FPR(copy(fs_value
));
4424 std::string ft
= FPR(copy(ft_value
));
4426 return img::format("CMP.SOR.S %s, %s, %s", fd
, fs
, ft
);
4434 * 10987654321098765432109876543210
4435 * 001000 x1110000101
4440 std::string
NMD::CMP_SUEQ_D(uint64 instruction
)
4442 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4443 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4444 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4446 std::string fd
= FPR(copy(fd_value
));
4447 std::string fs
= FPR(copy(fs_value
));
4448 std::string ft
= FPR(copy(ft_value
));
4450 return img::format("CMP.SUEQ.D %s, %s, %s", fd
, fs
, ft
);
4458 * 10987654321098765432109876543210
4459 * 001000 x1110000101
4464 std::string
NMD::CMP_SUEQ_S(uint64 instruction
)
4466 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4467 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4468 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4470 std::string fd
= FPR(copy(fd_value
));
4471 std::string fs
= FPR(copy(fs_value
));
4472 std::string ft
= FPR(copy(ft_value
));
4474 return img::format("CMP.SUEQ.S %s, %s, %s", fd
, fs
, ft
);
4482 * 10987654321098765432109876543210
4483 * 001000 x1110000101
4488 std::string
NMD::CMP_SULE_D(uint64 instruction
)
4490 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4491 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4492 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4494 std::string fd
= FPR(copy(fd_value
));
4495 std::string fs
= FPR(copy(fs_value
));
4496 std::string ft
= FPR(copy(ft_value
));
4498 return img::format("CMP.SULE.D %s, %s, %s", fd
, fs
, ft
);
4506 * 10987654321098765432109876543210
4507 * 001000 x1110000101
4512 std::string
NMD::CMP_SULE_S(uint64 instruction
)
4514 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4515 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4516 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4518 std::string fd
= FPR(copy(fd_value
));
4519 std::string fs
= FPR(copy(fs_value
));
4520 std::string ft
= FPR(copy(ft_value
));
4522 return img::format("CMP.SULE.S %s, %s, %s", fd
, fs
, ft
);
4530 * 10987654321098765432109876543210
4531 * 001000 x1110000101
4536 std::string
NMD::CMP_SULT_D(uint64 instruction
)
4538 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4539 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4540 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4542 std::string fd
= FPR(copy(fd_value
));
4543 std::string fs
= FPR(copy(fs_value
));
4544 std::string ft
= FPR(copy(ft_value
));
4546 return img::format("CMP.SULT.D %s, %s, %s", fd
, fs
, ft
);
4554 * 10987654321098765432109876543210
4555 * 001000 x1110000101
4560 std::string
NMD::CMP_SULT_S(uint64 instruction
)
4562 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4563 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4564 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4566 std::string fd
= FPR(copy(fd_value
));
4567 std::string fs
= FPR(copy(fs_value
));
4568 std::string ft
= FPR(copy(ft_value
));
4570 return img::format("CMP.SULT.S %s, %s, %s", fd
, fs
, ft
);
4578 * 10987654321098765432109876543210
4579 * 001000 x1110000101
4584 std::string
NMD::CMP_SUN_D(uint64 instruction
)
4586 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4587 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4588 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4590 std::string fd
= FPR(copy(fd_value
));
4591 std::string fs
= FPR(copy(fs_value
));
4592 std::string ft
= FPR(copy(ft_value
));
4594 return img::format("CMP.SUN.D %s, %s, %s", fd
, fs
, ft
);
4602 * 10987654321098765432109876543210
4603 * 001000 x1110000101
4608 std::string
NMD::CMP_SUNE_D(uint64 instruction
)
4610 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4611 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4612 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4614 std::string fd
= FPR(copy(fd_value
));
4615 std::string fs
= FPR(copy(fs_value
));
4616 std::string ft
= FPR(copy(ft_value
));
4618 return img::format("CMP.SUNE.D %s, %s, %s", fd
, fs
, ft
);
4626 * 10987654321098765432109876543210
4627 * 001000 x1110000101
4632 std::string
NMD::CMP_SUNE_S(uint64 instruction
)
4634 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4635 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4636 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4638 std::string fd
= FPR(copy(fd_value
));
4639 std::string fs
= FPR(copy(fs_value
));
4640 std::string ft
= FPR(copy(ft_value
));
4642 return img::format("CMP.SUNE.S %s, %s, %s", fd
, fs
, ft
);
4650 * 10987654321098765432109876543210
4651 * 001000 x1110000101
4656 std::string
NMD::CMP_SUN_S(uint64 instruction
)
4658 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4659 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4660 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4662 std::string fd
= FPR(copy(fd_value
));
4663 std::string fs
= FPR(copy(fs_value
));
4664 std::string ft
= FPR(copy(ft_value
));
4666 return img::format("CMP.SUN.S %s, %s, %s", fd
, fs
, ft
);
4674 * 10987654321098765432109876543210
4675 * 001000 x1110000101
4680 std::string
NMD::CMP_UEQ_D(uint64 instruction
)
4682 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4683 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4684 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4686 std::string fd
= FPR(copy(fd_value
));
4687 std::string fs
= FPR(copy(fs_value
));
4688 std::string ft
= FPR(copy(ft_value
));
4690 return img::format("CMP.UEQ.D %s, %s, %s", fd
, fs
, ft
);
4698 * 10987654321098765432109876543210
4699 * 001000 x1110000101
4704 std::string
NMD::CMP_UEQ_S(uint64 instruction
)
4706 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4707 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4708 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4710 std::string fd
= FPR(copy(fd_value
));
4711 std::string fs
= FPR(copy(fs_value
));
4712 std::string ft
= FPR(copy(ft_value
));
4714 return img::format("CMP.UEQ.S %s, %s, %s", fd
, fs
, ft
);
4722 * 10987654321098765432109876543210
4723 * 001000 x1110000101
4728 std::string
NMD::CMP_ULE_D(uint64 instruction
)
4730 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4731 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4732 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4734 std::string fd
= FPR(copy(fd_value
));
4735 std::string fs
= FPR(copy(fs_value
));
4736 std::string ft
= FPR(copy(ft_value
));
4738 return img::format("CMP.ULE.D %s, %s, %s", fd
, fs
, ft
);
4746 * 10987654321098765432109876543210
4747 * 001000 x1110000101
4752 std::string
NMD::CMP_ULE_S(uint64 instruction
)
4754 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4755 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4756 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4758 std::string fd
= FPR(copy(fd_value
));
4759 std::string fs
= FPR(copy(fs_value
));
4760 std::string ft
= FPR(copy(ft_value
));
4762 return img::format("CMP.ULE.S %s, %s, %s", fd
, fs
, ft
);
4770 * 10987654321098765432109876543210
4771 * 001000 x1110000101
4776 std::string
NMD::CMP_ULT_D(uint64 instruction
)
4778 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4779 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4780 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4782 std::string fd
= FPR(copy(fd_value
));
4783 std::string fs
= FPR(copy(fs_value
));
4784 std::string ft
= FPR(copy(ft_value
));
4786 return img::format("CMP.ULT.D %s, %s, %s", fd
, fs
, ft
);
4794 * 10987654321098765432109876543210
4795 * 001000 x1110000101
4800 std::string
NMD::CMP_ULT_S(uint64 instruction
)
4802 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4803 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4804 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4806 std::string fd
= FPR(copy(fd_value
));
4807 std::string fs
= FPR(copy(fs_value
));
4808 std::string ft
= FPR(copy(ft_value
));
4810 return img::format("CMP.ULT.S %s, %s, %s", fd
, fs
, ft
);
4818 * 10987654321098765432109876543210
4819 * 001000 x1110000101
4824 std::string
NMD::CMP_UN_D(uint64 instruction
)
4826 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4827 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4828 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4830 std::string fd
= FPR(copy(fd_value
));
4831 std::string fs
= FPR(copy(fs_value
));
4832 std::string ft
= FPR(copy(ft_value
));
4834 return img::format("CMP.UN.D %s, %s, %s", fd
, fs
, ft
);
4842 * 10987654321098765432109876543210
4843 * 001000 x1110000101
4848 std::string
NMD::CMP_UNE_D(uint64 instruction
)
4850 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4851 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4852 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4854 std::string fd
= FPR(copy(fd_value
));
4855 std::string fs
= FPR(copy(fs_value
));
4856 std::string ft
= FPR(copy(ft_value
));
4858 return img::format("CMP.UNE.D %s, %s, %s", fd
, fs
, ft
);
4866 * 10987654321098765432109876543210
4867 * 001000 x1110000101
4872 std::string
NMD::CMP_UNE_S(uint64 instruction
)
4874 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4875 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4876 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4878 std::string fd
= FPR(copy(fd_value
));
4879 std::string fs
= FPR(copy(fs_value
));
4880 std::string ft
= FPR(copy(ft_value
));
4882 return img::format("CMP.UNE.S %s, %s, %s", fd
, fs
, ft
);
4890 * 10987654321098765432109876543210
4891 * 001000 x1110000101
4896 std::string
NMD::CMP_UN_S(uint64 instruction
)
4898 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
4899 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
4900 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
4902 std::string fd
= FPR(copy(fd_value
));
4903 std::string fs
= FPR(copy(fs_value
));
4904 std::string ft
= FPR(copy(ft_value
));
4906 return img::format("CMP.UN.S %s, %s, %s", fd
, fs
, ft
);
4914 * 10987654321098765432109876543210
4915 * 001000 x1110000101
4920 std::string
NMD::CMPGDU_EQ_QB(uint64 instruction
)
4922 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4923 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4924 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4926 std::string rd
= GPR(copy(rd_value
));
4927 std::string rs
= GPR(copy(rs_value
));
4928 std::string rt
= GPR(copy(rt_value
));
4930 return img::format("CMPGDU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
4938 * 10987654321098765432109876543210
4939 * 001000 x1110000101
4944 std::string
NMD::CMPGDU_LE_QB(uint64 instruction
)
4946 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4947 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4948 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4950 std::string rd
= GPR(copy(rd_value
));
4951 std::string rs
= GPR(copy(rs_value
));
4952 std::string rt
= GPR(copy(rt_value
));
4954 return img::format("CMPGDU.LE.QB %s, %s, %s", rd
, rs
, rt
);
4962 * 10987654321098765432109876543210
4963 * 001000 x1110000101
4968 std::string
NMD::CMPGDU_LT_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
);
4972 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4974 std::string rd
= GPR(copy(rd_value
));
4975 std::string rs
= GPR(copy(rs_value
));
4976 std::string rt
= GPR(copy(rt_value
));
4978 return img::format("CMPGDU.LT.QB %s, %s, %s", rd
, rs
, rt
);
4986 * 10987654321098765432109876543210
4987 * 001000 x1110000101
4992 std::string
NMD::CMPGU_EQ_QB(uint64 instruction
)
4994 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4995 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4996 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
4998 std::string rd
= GPR(copy(rd_value
));
4999 std::string rs
= GPR(copy(rs_value
));
5000 std::string rt
= GPR(copy(rt_value
));
5002 return img::format("CMPGU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
5010 * 10987654321098765432109876543210
5011 * 001000 x1110000101
5016 std::string
NMD::CMPGU_LE_QB(uint64 instruction
)
5018 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5019 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5020 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5022 std::string rd
= GPR(copy(rd_value
));
5023 std::string rs
= GPR(copy(rs_value
));
5024 std::string rt
= GPR(copy(rt_value
));
5026 return img::format("CMPGU.LE.QB %s, %s, %s", rd
, rs
, rt
);
5034 * 10987654321098765432109876543210
5035 * 001000 x1110000101
5040 std::string
NMD::CMPGU_LT_QB(uint64 instruction
)
5042 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5043 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5044 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5046 std::string rd
= GPR(copy(rd_value
));
5047 std::string rs
= GPR(copy(rs_value
));
5048 std::string rt
= GPR(copy(rt_value
));
5050 return img::format("CMPGU.LT.QB %s, %s, %s", rd
, rs
, rt
);
5058 * 10987654321098765432109876543210
5059 * 001000 x1110000101
5064 std::string
NMD::CMPU_EQ_QB(uint64 instruction
)
5066 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5067 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5069 std::string rs
= GPR(copy(rs_value
));
5070 std::string rt
= GPR(copy(rt_value
));
5072 return img::format("CMPU.EQ.QB %s, %s", rs
, rt
);
5080 * 10987654321098765432109876543210
5081 * 001000 x1110000101
5086 std::string
NMD::CMPU_LE_QB(uint64 instruction
)
5088 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5089 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5091 std::string rs
= GPR(copy(rs_value
));
5092 std::string rt
= GPR(copy(rt_value
));
5094 return img::format("CMPU.LE.QB %s, %s", rs
, rt
);
5102 * 10987654321098765432109876543210
5103 * 001000 x1110000101
5108 std::string
NMD::CMPU_LT_QB(uint64 instruction
)
5110 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5111 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5113 std::string rs
= GPR(copy(rs_value
));
5114 std::string rt
= GPR(copy(rt_value
));
5116 return img::format("CMPU.LT.QB %s, %s", rs
, rt
);
5124 * 10987654321098765432109876543210
5125 * 001000 x1110000101
5130 std::string
NMD::COP2_1(uint64 instruction
)
5132 uint64 cofun_value
= extract_cofun_25_24_23(instruction
);
5134 std::string cofun
= IMMEDIATE(copy(cofun_value
));
5136 return img::format("COP2_1 %s", cofun
);
5144 * 10987654321098765432109876543210
5145 * 001000 x1110000101
5150 std::string
NMD::CTC1(uint64 instruction
)
5152 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5153 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5155 std::string rt
= GPR(copy(rt_value
));
5156 std::string cs
= CPR(copy(cs_value
));
5158 return img::format("CTC1 %s, %s", rt
, cs
);
5166 * 10987654321098765432109876543210
5167 * 001000 x1110000101
5172 std::string
NMD::CTC2(uint64 instruction
)
5174 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5175 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5177 std::string rt
= GPR(copy(rt_value
));
5178 std::string cs
= CPR(copy(cs_value
));
5180 return img::format("CTC2 %s, %s", rt
, cs
);
5188 * 10987654321098765432109876543210
5189 * 001000 x1110000101
5194 std::string
NMD::CVT_D_L(uint64 instruction
)
5196 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5197 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5199 std::string ft
= FPR(copy(ft_value
));
5200 std::string fs
= FPR(copy(fs_value
));
5202 return img::format("CVT.D.L %s, %s", ft
, fs
);
5210 * 10987654321098765432109876543210
5211 * 001000 x1110000101
5216 std::string
NMD::CVT_D_S(uint64 instruction
)
5218 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5219 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5221 std::string ft
= FPR(copy(ft_value
));
5222 std::string fs
= FPR(copy(fs_value
));
5224 return img::format("CVT.D.S %s, %s", ft
, fs
);
5232 * 10987654321098765432109876543210
5233 * 001000 x1110000101
5238 std::string
NMD::CVT_D_W(uint64 instruction
)
5240 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5241 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5243 std::string ft
= FPR(copy(ft_value
));
5244 std::string fs
= FPR(copy(fs_value
));
5246 return img::format("CVT.D.W %s, %s", ft
, fs
);
5254 * 10987654321098765432109876543210
5255 * 001000 x1110000101
5260 std::string
NMD::CVT_L_D(uint64 instruction
)
5262 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5263 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5265 std::string ft
= FPR(copy(ft_value
));
5266 std::string fs
= FPR(copy(fs_value
));
5268 return img::format("CVT.L.D %s, %s", ft
, fs
);
5276 * 10987654321098765432109876543210
5277 * 001000 x1110000101
5282 std::string
NMD::CVT_L_S(uint64 instruction
)
5284 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5285 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5287 std::string ft
= FPR(copy(ft_value
));
5288 std::string fs
= FPR(copy(fs_value
));
5290 return img::format("CVT.L.S %s, %s", ft
, fs
);
5298 * 10987654321098765432109876543210
5299 * 001000 x1110000101
5304 std::string
NMD::CVT_S_D(uint64 instruction
)
5306 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5307 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5309 std::string ft
= FPR(copy(ft_value
));
5310 std::string fs
= FPR(copy(fs_value
));
5312 return img::format("CVT.S.D %s, %s", ft
, fs
);
5320 * 10987654321098765432109876543210
5321 * 001000 x1110000101
5326 std::string
NMD::CVT_S_L(uint64 instruction
)
5328 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5329 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5331 std::string ft
= FPR(copy(ft_value
));
5332 std::string fs
= FPR(copy(fs_value
));
5334 return img::format("CVT.S.L %s, %s", ft
, fs
);
5342 * 10987654321098765432109876543210
5343 * 001000 x1110000101
5348 std::string
NMD::CVT_S_PL(uint64 instruction
)
5350 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5351 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5353 std::string ft
= FPR(copy(ft_value
));
5354 std::string fs
= FPR(copy(fs_value
));
5356 return img::format("CVT.S.PL %s, %s", ft
, fs
);
5364 * 10987654321098765432109876543210
5365 * 001000 x1110000101
5370 std::string
NMD::CVT_S_PU(uint64 instruction
)
5372 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5373 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5375 std::string ft
= FPR(copy(ft_value
));
5376 std::string fs
= FPR(copy(fs_value
));
5378 return img::format("CVT.S.PU %s, %s", ft
, fs
);
5386 * 10987654321098765432109876543210
5387 * 001000 x1110000101
5392 std::string
NMD::CVT_S_W(uint64 instruction
)
5394 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5395 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5397 std::string ft
= FPR(copy(ft_value
));
5398 std::string fs
= FPR(copy(fs_value
));
5400 return img::format("CVT.S.W %s, %s", ft
, fs
);
5408 * 10987654321098765432109876543210
5409 * 001000 x1110000101
5414 std::string
NMD::CVT_W_D(uint64 instruction
)
5416 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5417 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5419 std::string ft
= FPR(copy(ft_value
));
5420 std::string fs
= FPR(copy(fs_value
));
5422 return img::format("CVT.W.D %s, %s", ft
, fs
);
5430 * 10987654321098765432109876543210
5431 * 001000 x1110000101
5436 std::string
NMD::CVT_W_S(uint64 instruction
)
5438 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5439 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5441 std::string ft
= FPR(copy(ft_value
));
5442 std::string fs
= FPR(copy(fs_value
));
5444 return img::format("CVT.W.S %s, %s", ft
, fs
);
5452 * 10987654321098765432109876543210
5453 * 001000 x1110000101
5458 std::string
NMD::DADDIU_48_(uint64 instruction
)
5460 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
5461 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
5463 std::string rt
= GPR(copy(rt_value
));
5464 std::string s
= IMMEDIATE(copy(s_value
));
5466 return img::format("DADDIU %s, %s", rt
, s
);
5474 * 10987654321098765432109876543210
5475 * 001000 x1110000101
5480 std::string
NMD::DADDIU_NEG_(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
);
5484 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5486 std::string rt
= GPR(copy(rt_value
));
5487 std::string rs
= GPR(copy(rs_value
));
5488 std::string u
= IMMEDIATE(neg_copy(u_value
));
5490 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5498 * 10987654321098765432109876543210
5499 * 001000 x1110000101
5504 std::string
NMD::DADDIU_U12_(uint64 instruction
)
5506 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5507 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5508 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5510 std::string rt
= GPR(copy(rt_value
));
5511 std::string rs
= GPR(copy(rs_value
));
5512 std::string u
= IMMEDIATE(copy(u_value
));
5514 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5522 * 10987654321098765432109876543210
5523 * 001000 x1110000101
5528 std::string
NMD::DADD(uint64 instruction
)
5530 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5531 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5532 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5534 std::string rd
= GPR(copy(rd_value
));
5535 std::string rs
= GPR(copy(rs_value
));
5536 std::string rt
= GPR(copy(rt_value
));
5538 return img::format("DADD %s, %s, %s", rd
, rs
, rt
);
5546 * 10987654321098765432109876543210
5547 * 001000 x1110000101
5552 std::string
NMD::DADDU(uint64 instruction
)
5554 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5555 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5556 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5558 std::string rd
= GPR(copy(rd_value
));
5559 std::string rs
= GPR(copy(rs_value
));
5560 std::string rt
= GPR(copy(rt_value
));
5562 return img::format("DADDU %s, %s, %s", rd
, rs
, rt
);
5570 * 10987654321098765432109876543210
5571 * 001000 x1110000101
5576 std::string
NMD::DCLO(uint64 instruction
)
5578 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5579 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5581 std::string rt
= GPR(copy(rt_value
));
5582 std::string rs
= GPR(copy(rs_value
));
5584 return img::format("DCLO %s, %s", rt
, rs
);
5592 * 10987654321098765432109876543210
5593 * 001000 x1110000101
5598 std::string
NMD::DCLZ(uint64 instruction
)
5600 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5601 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5603 std::string rt
= GPR(copy(rt_value
));
5604 std::string rs
= GPR(copy(rs_value
));
5606 return img::format("DCLZ %s, %s", rt
, rs
);
5614 * 10987654321098765432109876543210
5615 * 001000 x1110000101
5620 std::string
NMD::DDIV(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 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5626 std::string rd
= GPR(copy(rd_value
));
5627 std::string rs
= GPR(copy(rs_value
));
5628 std::string rt
= GPR(copy(rt_value
));
5630 return img::format("DDIV %s, %s, %s", rd
, rs
, rt
);
5638 * 10987654321098765432109876543210
5639 * 001000 x1110000101
5644 std::string
NMD::DDIVU(uint64 instruction
)
5646 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5647 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5648 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5650 std::string rd
= GPR(copy(rd_value
));
5651 std::string rs
= GPR(copy(rs_value
));
5652 std::string rt
= GPR(copy(rt_value
));
5654 return img::format("DDIVU %s, %s, %s", rd
, rs
, rt
);
5662 * 10987654321098765432109876543210
5663 * 001000 x1110000101
5668 std::string
NMD::DERET(uint64 instruction
)
5680 * 10987654321098765432109876543210
5681 * 001000 x1110000101
5686 std::string
NMD::DEXTM(uint64 instruction
)
5688 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5689 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5690 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5691 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5693 std::string rt
= GPR(copy(rt_value
));
5694 std::string rs
= GPR(copy(rs_value
));
5695 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5696 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5698 return img::format("DEXTM %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5706 * 10987654321098765432109876543210
5707 * 001000 x1110000101
5712 std::string
NMD::DEXT(uint64 instruction
)
5714 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5715 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5716 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5717 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5719 std::string rt
= GPR(copy(rt_value
));
5720 std::string rs
= GPR(copy(rs_value
));
5721 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5722 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5724 return img::format("DEXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5732 * 10987654321098765432109876543210
5733 * 001000 x1110000101
5738 std::string
NMD::DEXTU(uint64 instruction
)
5740 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5741 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5742 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5743 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5745 std::string rt
= GPR(copy(rt_value
));
5746 std::string rs
= GPR(copy(rs_value
));
5747 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5748 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5750 return img::format("DEXTU %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5758 * 10987654321098765432109876543210
5759 * 001000 x1110000101
5764 std::string
NMD::DINSM(uint64 instruction
)
5766 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5767 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5768 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5769 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5771 std::string rt
= GPR(copy(rt_value
));
5772 std::string rs
= GPR(copy(rs_value
));
5773 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5774 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5775 /* !!!!!!!!!! - no conversion function */
5777 return img::format("DINSM %s, %s, %s, %s", rt
, rs
, pos
, size
);
5786 * 10987654321098765432109876543210
5787 * 001000 x1110000101
5792 std::string
NMD::DINS(uint64 instruction
)
5794 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5795 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5796 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5797 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5799 std::string rt
= GPR(copy(rt_value
));
5800 std::string rs
= GPR(copy(rs_value
));
5801 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5802 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5803 /* !!!!!!!!!! - no conversion function */
5805 return img::format("DINS %s, %s, %s, %s", rt
, rs
, pos
, size
);
5814 * 10987654321098765432109876543210
5815 * 001000 x1110000101
5820 std::string
NMD::DINSU(uint64 instruction
)
5822 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5823 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5824 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5825 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5827 std::string rt
= GPR(copy(rt_value
));
5828 std::string rs
= GPR(copy(rs_value
));
5829 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5830 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5831 /* !!!!!!!!!! - no conversion function */
5833 return img::format("DINSU %s, %s, %s, %s", rt
, rs
, pos
, size
);
5842 * 10987654321098765432109876543210
5843 * 001000 x1110000101
5848 std::string
NMD::DI(uint64 instruction
)
5850 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5852 std::string rt
= GPR(copy(rt_value
));
5854 return img::format("DI %s", rt
);
5862 * 10987654321098765432109876543210
5863 * 001000 x1110000101
5868 std::string
NMD::DIV(uint64 instruction
)
5870 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5871 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5872 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5874 std::string rd
= GPR(copy(rd_value
));
5875 std::string rs
= GPR(copy(rs_value
));
5876 std::string rt
= GPR(copy(rt_value
));
5878 return img::format("DIV %s, %s, %s", rd
, rs
, rt
);
5886 * 10987654321098765432109876543210
5887 * 001000 x1110000101
5892 std::string
NMD::DIV_D(uint64 instruction
)
5894 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5895 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5896 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
5898 std::string fd
= FPR(copy(fd_value
));
5899 std::string fs
= FPR(copy(fs_value
));
5900 std::string ft
= FPR(copy(ft_value
));
5902 return img::format("DIV.D %s, %s, %s", fd
, fs
, ft
);
5910 * 10987654321098765432109876543210
5911 * 001000 x1110000101
5916 std::string
NMD::DIV_S(uint64 instruction
)
5918 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
5919 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
5920 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
5922 std::string fd
= FPR(copy(fd_value
));
5923 std::string fs
= FPR(copy(fs_value
));
5924 std::string ft
= FPR(copy(ft_value
));
5926 return img::format("DIV.S %s, %s, %s", fd
, fs
, ft
);
5934 * 10987654321098765432109876543210
5935 * 001000 x1110000101
5940 std::string
NMD::DIVU(uint64 instruction
)
5942 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5943 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5944 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5946 std::string rd
= GPR(copy(rd_value
));
5947 std::string rs
= GPR(copy(rs_value
));
5948 std::string rt
= GPR(copy(rt_value
));
5950 return img::format("DIVU %s, %s, %s", rd
, rs
, rt
);
5958 * 10987654321098765432109876543210
5959 * 001000 x1110000101
5964 std::string
NMD::DLSA(uint64 instruction
)
5966 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5967 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5968 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
5969 uint64 u2_value
= extract_u2_10_9(instruction
);
5971 std::string rd
= GPR(copy(rd_value
));
5972 std::string rs
= GPR(copy(rs_value
));
5973 std::string rt
= GPR(copy(rt_value
));
5974 std::string u2
= IMMEDIATE(copy(u2_value
));
5976 return img::format("DLSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
5984 * 10987654321098765432109876543210
5985 * 001000 x1110000101
5990 std::string
NMD::DLUI_48_(uint64 instruction
)
5992 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
5993 uint64 u_value
= extract_u_31_to_0__s32(instruction
);
5995 std::string rt
= GPR(copy(rt_value
));
5996 std::string u
= IMMEDIATE(copy(u_value
));
5998 return img::format("DLUI %s, %s", rt
, u
);
6006 * 10987654321098765432109876543210
6007 * 001000 x1110000101
6012 std::string
NMD::DMFC0(uint64 instruction
)
6014 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6015 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6016 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6018 std::string rt
= GPR(copy(rt_value
));
6019 std::string c0s
= CPR(copy(c0s_value
));
6020 std::string sel
= IMMEDIATE(copy(sel_value
));
6022 return img::format("DMFC0 %s, %s, %s", rt
, c0s
, sel
);
6030 * 10987654321098765432109876543210
6031 * 001000 x1110000101
6036 std::string
NMD::DMFC1(uint64 instruction
)
6038 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6039 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
6041 std::string rt
= GPR(copy(rt_value
));
6042 std::string fs
= FPR(copy(fs_value
));
6044 return img::format("DMFC1 %s, %s", rt
, fs
);
6052 * 10987654321098765432109876543210
6053 * 001000 x1110000101
6058 std::string
NMD::DMFC2(uint64 instruction
)
6060 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6061 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
6063 std::string rt
= GPR(copy(rt_value
));
6064 std::string cs
= CPR(copy(cs_value
));
6066 return img::format("DMFC2 %s, %s", rt
, cs
);
6074 * 10987654321098765432109876543210
6075 * 001000 x1110000101
6080 std::string
NMD::DMFGC0(uint64 instruction
)
6082 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6083 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6084 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6086 std::string rt
= GPR(copy(rt_value
));
6087 std::string c0s
= CPR(copy(c0s_value
));
6088 std::string sel
= IMMEDIATE(copy(sel_value
));
6090 return img::format("DMFGC0 %s, %s, %s", rt
, c0s
, sel
);
6098 * 10987654321098765432109876543210
6099 * 001000 x1110000101
6104 std::string
NMD::DMOD(uint64 instruction
)
6106 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6107 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6108 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6110 std::string rd
= GPR(copy(rd_value
));
6111 std::string rs
= GPR(copy(rs_value
));
6112 std::string rt
= GPR(copy(rt_value
));
6114 return img::format("DMOD %s, %s, %s", rd
, rs
, rt
);
6122 * 10987654321098765432109876543210
6123 * 001000 x1110000101
6128 std::string
NMD::DMODU(uint64 instruction
)
6130 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6131 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6132 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6134 std::string rd
= GPR(copy(rd_value
));
6135 std::string rs
= GPR(copy(rs_value
));
6136 std::string rt
= GPR(copy(rt_value
));
6138 return img::format("DMODU %s, %s, %s", rd
, rs
, rt
);
6146 * 10987654321098765432109876543210
6147 * 001000 x1110000101
6152 std::string
NMD::DMTC0(uint64 instruction
)
6154 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6155 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6156 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6158 std::string rt
= GPR(copy(rt_value
));
6159 std::string c0s
= CPR(copy(c0s_value
));
6160 std::string sel
= IMMEDIATE(copy(sel_value
));
6162 return img::format("DMTC0 %s, %s, %s", rt
, c0s
, sel
);
6170 * 10987654321098765432109876543210
6171 * 001000 x1110000101
6176 std::string
NMD::DMTC1(uint64 instruction
)
6178 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6179 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
6181 std::string rt
= GPR(copy(rt_value
));
6182 std::string fs
= FPR(copy(fs_value
));
6184 return img::format("DMTC1 %s, %s", rt
, fs
);
6192 * 10987654321098765432109876543210
6193 * 001000 x1110000101
6198 std::string
NMD::DMTC2(uint64 instruction
)
6200 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6201 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
6203 std::string rt
= GPR(copy(rt_value
));
6204 std::string cs
= CPR(copy(cs_value
));
6206 return img::format("DMTC2 %s, %s", rt
, cs
);
6214 * 10987654321098765432109876543210
6215 * 001000 x1110000101
6220 std::string
NMD::DMTGC0(uint64 instruction
)
6222 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6223 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6224 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6226 std::string rt
= GPR(copy(rt_value
));
6227 std::string c0s
= CPR(copy(c0s_value
));
6228 std::string sel
= IMMEDIATE(copy(sel_value
));
6230 return img::format("DMTGC0 %s, %s, %s", rt
, c0s
, sel
);
6238 * 10987654321098765432109876543210
6239 * 001000 x1110000101
6244 std::string
NMD::DMT(uint64 instruction
)
6246 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6248 std::string rt
= GPR(copy(rt_value
));
6250 return img::format("DMT %s", rt
);
6258 * 10987654321098765432109876543210
6259 * 001000 x1110000101
6264 std::string
NMD::DMUH(uint64 instruction
)
6266 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6267 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6268 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6270 std::string rd
= GPR(copy(rd_value
));
6271 std::string rs
= GPR(copy(rs_value
));
6272 std::string rt
= GPR(copy(rt_value
));
6274 return img::format("DMUH %s, %s, %s", rd
, rs
, rt
);
6282 * 10987654321098765432109876543210
6283 * 001000 x1110000101
6288 std::string
NMD::DMUHU(uint64 instruction
)
6290 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6291 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6292 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6294 std::string rd
= GPR(copy(rd_value
));
6295 std::string rs
= GPR(copy(rs_value
));
6296 std::string rt
= GPR(copy(rt_value
));
6298 return img::format("DMUHU %s, %s, %s", rd
, rs
, rt
);
6306 * 10987654321098765432109876543210
6307 * 001000 x1110000101
6312 std::string
NMD::DMUL(uint64 instruction
)
6314 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6315 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6316 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6318 std::string rd
= GPR(copy(rd_value
));
6319 std::string rs
= GPR(copy(rs_value
));
6320 std::string rt
= GPR(copy(rt_value
));
6322 return img::format("DMUL %s, %s, %s", rd
, rs
, rt
);
6330 * 10987654321098765432109876543210
6331 * 001000 x1110000101
6336 std::string
NMD::DMULU(uint64 instruction
)
6338 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6339 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6340 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6342 std::string rd
= GPR(copy(rd_value
));
6343 std::string rs
= GPR(copy(rs_value
));
6344 std::string rt
= GPR(copy(rt_value
));
6346 return img::format("DMULU %s, %s, %s", rd
, rs
, rt
);
6354 * 10987654321098765432109876543210
6355 * 001000 x1110000101
6360 std::string
NMD::DPA_W_PH(uint64 instruction
)
6362 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6363 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6364 uint64 ac_value
= extract_ac_13_12(instruction
);
6366 std::string ac
= AC(copy(ac_value
));
6367 std::string rs
= GPR(copy(rs_value
));
6368 std::string rt
= GPR(copy(rt_value
));
6370 return img::format("DPA.W.PH %s, %s, %s", ac
, rs
, rt
);
6378 * 10987654321098765432109876543210
6379 * 001000 x1110000101
6384 std::string
NMD::DPAQ_SA_L_W(uint64 instruction
)
6386 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6387 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6388 uint64 ac_value
= extract_ac_13_12(instruction
);
6390 std::string ac
= AC(copy(ac_value
));
6391 std::string rs
= GPR(copy(rs_value
));
6392 std::string rt
= GPR(copy(rt_value
));
6394 return img::format("DPAQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6402 * 10987654321098765432109876543210
6403 * 001000 x1110000101
6408 std::string
NMD::DPAQ_S_W_PH(uint64 instruction
)
6410 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6411 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6412 uint64 ac_value
= extract_ac_13_12(instruction
);
6414 std::string ac
= AC(copy(ac_value
));
6415 std::string rs
= GPR(copy(rs_value
));
6416 std::string rt
= GPR(copy(rt_value
));
6418 return img::format("DPAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6426 * 10987654321098765432109876543210
6427 * 001000 x1110000101
6432 std::string
NMD::DPAQX_SA_W_PH(uint64 instruction
)
6434 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6435 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6436 uint64 ac_value
= extract_ac_13_12(instruction
);
6438 std::string ac
= AC(copy(ac_value
));
6439 std::string rs
= GPR(copy(rs_value
));
6440 std::string rt
= GPR(copy(rt_value
));
6442 return img::format("DPAQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6450 * 10987654321098765432109876543210
6451 * 001000 x1110000101
6456 std::string
NMD::DPAQX_S_W_PH(uint64 instruction
)
6458 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6459 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6460 uint64 ac_value
= extract_ac_13_12(instruction
);
6462 std::string ac
= AC(copy(ac_value
));
6463 std::string rs
= GPR(copy(rs_value
));
6464 std::string rt
= GPR(copy(rt_value
));
6466 return img::format("DPAQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6474 * 10987654321098765432109876543210
6475 * 001000 x1110000101
6480 std::string
NMD::DPAU_H_QBL(uint64 instruction
)
6482 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6483 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6484 uint64 ac_value
= extract_ac_13_12(instruction
);
6486 std::string ac
= AC(copy(ac_value
));
6487 std::string rs
= GPR(copy(rs_value
));
6488 std::string rt
= GPR(copy(rt_value
));
6490 return img::format("DPAU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6498 * 10987654321098765432109876543210
6499 * 001000 x1110000101
6504 std::string
NMD::DPAU_H_QBR(uint64 instruction
)
6506 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6507 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6508 uint64 ac_value
= extract_ac_13_12(instruction
);
6510 std::string ac
= AC(copy(ac_value
));
6511 std::string rs
= GPR(copy(rs_value
));
6512 std::string rt
= GPR(copy(rt_value
));
6514 return img::format("DPAU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6522 * 10987654321098765432109876543210
6523 * 001000 x1110000101
6528 std::string
NMD::DPAX_W_PH(uint64 instruction
)
6530 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6531 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6532 uint64 ac_value
= extract_ac_13_12(instruction
);
6534 std::string ac
= AC(copy(ac_value
));
6535 std::string rs
= GPR(copy(rs_value
));
6536 std::string rt
= GPR(copy(rt_value
));
6538 return img::format("DPAX.W.PH %s, %s, %s", ac
, rs
, rt
);
6546 * 10987654321098765432109876543210
6547 * 001000 x1110000101
6552 std::string
NMD::DPS_W_PH(uint64 instruction
)
6554 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6555 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6556 uint64 ac_value
= extract_ac_13_12(instruction
);
6558 std::string ac
= AC(copy(ac_value
));
6559 std::string rs
= GPR(copy(rs_value
));
6560 std::string rt
= GPR(copy(rt_value
));
6562 return img::format("DPS.W.PH %s, %s, %s", ac
, rs
, rt
);
6570 * 10987654321098765432109876543210
6571 * 001000 x1110000101
6576 std::string
NMD::DPSQ_SA_L_W(uint64 instruction
)
6578 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6579 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6580 uint64 ac_value
= extract_ac_13_12(instruction
);
6582 std::string ac
= AC(copy(ac_value
));
6583 std::string rs
= GPR(copy(rs_value
));
6584 std::string rt
= GPR(copy(rt_value
));
6586 return img::format("DPSQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6594 * 10987654321098765432109876543210
6595 * 001000 x1110000101
6600 std::string
NMD::DPSQ_S_W_PH(uint64 instruction
)
6602 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6603 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6604 uint64 ac_value
= extract_ac_13_12(instruction
);
6606 std::string ac
= AC(copy(ac_value
));
6607 std::string rs
= GPR(copy(rs_value
));
6608 std::string rt
= GPR(copy(rt_value
));
6610 return img::format("DPSQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6618 * 10987654321098765432109876543210
6619 * 001000 x1110000101
6624 std::string
NMD::DPSQX_SA_W_PH(uint64 instruction
)
6626 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6627 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6628 uint64 ac_value
= extract_ac_13_12(instruction
);
6630 std::string ac
= AC(copy(ac_value
));
6631 std::string rs
= GPR(copy(rs_value
));
6632 std::string rt
= GPR(copy(rt_value
));
6634 return img::format("DPSQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6642 * 10987654321098765432109876543210
6643 * 001000 x1110000101
6648 std::string
NMD::DPSQX_S_W_PH(uint64 instruction
)
6650 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6651 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6652 uint64 ac_value
= extract_ac_13_12(instruction
);
6654 std::string ac
= AC(copy(ac_value
));
6655 std::string rs
= GPR(copy(rs_value
));
6656 std::string rt
= GPR(copy(rt_value
));
6658 return img::format("DPSQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6666 * 10987654321098765432109876543210
6667 * 001000 x1110000101
6672 std::string
NMD::DPSU_H_QBL(uint64 instruction
)
6674 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6675 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6676 uint64 ac_value
= extract_ac_13_12(instruction
);
6678 std::string ac
= AC(copy(ac_value
));
6679 std::string rs
= GPR(copy(rs_value
));
6680 std::string rt
= GPR(copy(rt_value
));
6682 return img::format("DPSU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6690 * 10987654321098765432109876543210
6691 * 001000 x1110000101
6696 std::string
NMD::DPSU_H_QBR(uint64 instruction
)
6698 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6699 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6700 uint64 ac_value
= extract_ac_13_12(instruction
);
6702 std::string ac
= AC(copy(ac_value
));
6703 std::string rs
= GPR(copy(rs_value
));
6704 std::string rt
= GPR(copy(rt_value
));
6706 return img::format("DPSU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6714 * 10987654321098765432109876543210
6715 * 001000 x1110000101
6720 std::string
NMD::DPSX_W_PH(uint64 instruction
)
6722 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6723 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6724 uint64 ac_value
= extract_ac_13_12(instruction
);
6726 std::string ac
= AC(copy(ac_value
));
6727 std::string rs
= GPR(copy(rs_value
));
6728 std::string rt
= GPR(copy(rt_value
));
6730 return img::format("DPSX.W.PH %s, %s, %s", ac
, rs
, rt
);
6738 * 10987654321098765432109876543210
6739 * 001000 x1110000101
6744 std::string
NMD::DROTR(uint64 instruction
)
6746 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6747 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6748 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6750 std::string rt
= GPR(copy(rt_value
));
6751 std::string rs
= GPR(copy(rs_value
));
6752 std::string shift
= IMMEDIATE(copy(shift_value
));
6754 return img::format("DROTR %s, %s, %s", rt
, rs
, shift
);
6762 * 10987654321098765432109876543210
6763 * 10o000 1100xxx0110
6768 std::string
NMD::DROTR32(uint64 instruction
)
6770 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6771 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6772 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6774 std::string rt
= GPR(copy(rt_value
));
6775 std::string rs
= GPR(copy(rs_value
));
6776 std::string shift
= IMMEDIATE(copy(shift_value
));
6778 return img::format("DROTR32 %s, %s, %s", rt
, rs
, shift
);
6786 * 10987654321098765432109876543210
6787 * 001000 x1110000101
6792 std::string
NMD::DROTRV(uint64 instruction
)
6794 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6795 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6796 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6798 std::string rd
= GPR(copy(rd_value
));
6799 std::string rs
= GPR(copy(rs_value
));
6800 std::string rt
= GPR(copy(rt_value
));
6802 return img::format("DROTRV %s, %s, %s", rd
, rs
, rt
);
6810 * 10987654321098765432109876543210
6811 * 001000 x1110000101
6816 std::string
NMD::DROTX(uint64 instruction
)
6818 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6819 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6820 uint64 shiftx_value
= extract_shiftx_11_10_9_8_7_6(instruction
);
6821 uint64 shift_value
= extract_shift_5_4_3_2_1_0(instruction
);
6823 std::string rt
= GPR(copy(rt_value
));
6824 std::string rs
= GPR(copy(rs_value
));
6825 std::string shift
= IMMEDIATE(copy(shift_value
));
6826 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
6828 return img::format("DROTX %s, %s, %s, %s", rt
, rs
, shift
, shiftx
);
6836 * 10987654321098765432109876543210
6837 * 10o000 1100xxx0000
6842 std::string
NMD::DSLL(uint64 instruction
)
6844 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6845 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6846 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6848 std::string rt
= GPR(copy(rt_value
));
6849 std::string rs
= GPR(copy(rs_value
));
6850 std::string shift
= IMMEDIATE(copy(shift_value
));
6852 return img::format("DSLL %s, %s, %s", rt
, rs
, shift
);
6860 * 10987654321098765432109876543210
6861 * 10o000 1100xxx0000
6866 std::string
NMD::DSLL32(uint64 instruction
)
6868 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6869 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6870 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6872 std::string rt
= GPR(copy(rt_value
));
6873 std::string rs
= GPR(copy(rs_value
));
6874 std::string shift
= IMMEDIATE(copy(shift_value
));
6876 return img::format("DSLL32 %s, %s, %s", rt
, rs
, shift
);
6884 * 10987654321098765432109876543210
6885 * 001000 x1110000101
6890 std::string
NMD::DSLLV(uint64 instruction
)
6892 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6893 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6894 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6896 std::string rd
= GPR(copy(rd_value
));
6897 std::string rs
= GPR(copy(rs_value
));
6898 std::string rt
= GPR(copy(rt_value
));
6900 return img::format("DSLLV %s, %s, %s", rd
, rs
, rt
);
6908 * 10987654321098765432109876543210
6909 * 10o000 1100xxx0100
6914 std::string
NMD::DSRA(uint64 instruction
)
6916 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6917 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6918 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6920 std::string rt
= GPR(copy(rt_value
));
6921 std::string rs
= GPR(copy(rs_value
));
6922 std::string shift
= IMMEDIATE(copy(shift_value
));
6924 return img::format("DSRA %s, %s, %s", rt
, rs
, shift
);
6932 * 10987654321098765432109876543210
6933 * 10o000 1100xxx0100
6938 std::string
NMD::DSRA32(uint64 instruction
)
6940 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6941 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6942 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6944 std::string rt
= GPR(copy(rt_value
));
6945 std::string rs
= GPR(copy(rs_value
));
6946 std::string shift
= IMMEDIATE(copy(shift_value
));
6948 return img::format("DSRA32 %s, %s, %s", rt
, rs
, shift
);
6956 * 10987654321098765432109876543210
6957 * 001000 x1110000101
6962 std::string
NMD::DSRAV(uint64 instruction
)
6964 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6965 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6966 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
6968 std::string rd
= GPR(copy(rd_value
));
6969 std::string rs
= GPR(copy(rs_value
));
6970 std::string rt
= GPR(copy(rt_value
));
6972 return img::format("DSRAV %s, %s, %s", rd
, rs
, rt
);
6980 * 10987654321098765432109876543210
6981 * 10o000 1100xxx0100
6986 std::string
NMD::DSRL(uint64 instruction
)
6988 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6989 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6990 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6992 std::string rt
= GPR(copy(rt_value
));
6993 std::string rs
= GPR(copy(rs_value
));
6994 std::string shift
= IMMEDIATE(copy(shift_value
));
6996 return img::format("DSRL %s, %s, %s", rt
, rs
, shift
);
7004 * 10987654321098765432109876543210
7005 * 10o000 1100xxx0010
7010 std::string
NMD::DSRL32(uint64 instruction
)
7012 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7013 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7014 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
7016 std::string rt
= GPR(copy(rt_value
));
7017 std::string rs
= GPR(copy(rs_value
));
7018 std::string shift
= IMMEDIATE(copy(shift_value
));
7020 return img::format("DSRL32 %s, %s, %s", rt
, rs
, shift
);
7028 * 10987654321098765432109876543210
7029 * 001000 x1110000101
7034 std::string
NMD::DSRLV(uint64 instruction
)
7036 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7037 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7038 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7040 std::string rd
= GPR(copy(rd_value
));
7041 std::string rs
= GPR(copy(rs_value
));
7042 std::string rt
= GPR(copy(rt_value
));
7044 return img::format("DSRLV %s, %s, %s", rd
, rs
, rt
);
7052 * 10987654321098765432109876543210
7053 * 001000 x1110000101
7058 std::string
NMD::DSUB(uint64 instruction
)
7060 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7061 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7062 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7064 std::string rd
= GPR(copy(rd_value
));
7065 std::string rs
= GPR(copy(rs_value
));
7066 std::string rt
= GPR(copy(rt_value
));
7068 return img::format("DSUB %s, %s, %s", rd
, rs
, rt
);
7076 * 10987654321098765432109876543210
7077 * 001000 x1110000101
7082 std::string
NMD::DSUBU(uint64 instruction
)
7084 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7085 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7086 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7088 std::string rd
= GPR(copy(rd_value
));
7089 std::string rs
= GPR(copy(rs_value
));
7090 std::string rt
= GPR(copy(rt_value
));
7092 return img::format("DSUBU %s, %s, %s", rd
, rs
, rt
);
7100 * 10987654321098765432109876543210
7101 * 001000 x1110000101
7106 std::string
NMD::DVPE(uint64 instruction
)
7108 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7110 std::string rt
= GPR(copy(rt_value
));
7112 return img::format("DVPE %s", rt
);
7120 * 10987654321098765432109876543210
7121 * 001000 x1110000101
7126 std::string
NMD::DVP(uint64 instruction
)
7128 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7130 std::string rt
= GPR(copy(rt_value
));
7132 return img::format("DVP %s", rt
);
7140 * 10987654321098765432109876543210
7141 * 001000 x1110000101
7146 std::string
NMD::EHB(uint64 instruction
)
7158 * 10987654321098765432109876543210
7159 * 001000 x1110000101
7164 std::string
NMD::EI(uint64 instruction
)
7166 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7168 std::string rt
= GPR(copy(rt_value
));
7170 return img::format("EI %s", rt
);
7178 * 10987654321098765432109876543210
7179 * 001000 x1110000101
7184 std::string
NMD::EMT(uint64 instruction
)
7186 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7188 std::string rt
= GPR(copy(rt_value
));
7190 return img::format("EMT %s", rt
);
7198 * 10987654321098765432109876543210
7199 * 001000 x1110000101
7204 std::string
NMD::ERET(uint64 instruction
)
7216 * 10987654321098765432109876543210
7217 * 001000 x1110000101
7222 std::string
NMD::ERETNC(uint64 instruction
)
7234 * 10987654321098765432109876543210
7235 * 001000 x1110000101
7240 std::string
NMD::EVP(uint64 instruction
)
7242 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7244 std::string rt
= GPR(copy(rt_value
));
7246 return img::format("EVP %s", rt
);
7254 * 10987654321098765432109876543210
7255 * 001000 x1110000101
7260 std::string
NMD::EVPE(uint64 instruction
)
7262 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7264 std::string rt
= GPR(copy(rt_value
));
7266 return img::format("EVPE %s", rt
);
7274 * 10987654321098765432109876543210
7275 * 001000 x1110000101
7280 std::string
NMD::EXT(uint64 instruction
)
7282 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7283 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7284 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7285 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7287 std::string rt
= GPR(copy(rt_value
));
7288 std::string rs
= GPR(copy(rs_value
));
7289 std::string lsb
= IMMEDIATE(copy(lsb_value
));
7290 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
7292 return img::format("EXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
7300 * 10987654321098765432109876543210
7301 * 001000 x1110000101
7306 std::string
NMD::EXTD(uint64 instruction
)
7308 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7309 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7310 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7311 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7313 std::string rd
= GPR(copy(rd_value
));
7314 std::string rs
= GPR(copy(rs_value
));
7315 std::string rt
= GPR(copy(rt_value
));
7316 std::string shift
= IMMEDIATE(copy(shift_value
));
7318 return img::format("EXTD %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7326 * 10987654321098765432109876543210
7327 * 001000 x1110000101
7332 std::string
NMD::EXTD32(uint64 instruction
)
7334 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7335 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7336 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7337 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7339 std::string rd
= GPR(copy(rd_value
));
7340 std::string rs
= GPR(copy(rs_value
));
7341 std::string rt
= GPR(copy(rt_value
));
7342 std::string shift
= IMMEDIATE(copy(shift_value
));
7344 return img::format("EXTD32 %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7352 * 10987654321098765432109876543210
7353 * 001000 x1110000101
7358 std::string
NMD::EXTPDP(uint64 instruction
)
7360 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7361 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7362 uint64 ac_value
= extract_ac_13_12(instruction
);
7364 std::string rt
= GPR(copy(rt_value
));
7365 std::string ac
= AC(copy(ac_value
));
7366 std::string size
= IMMEDIATE(copy(size_value
));
7368 return img::format("EXTPDP %s, %s, %s", rt
, ac
, size
);
7376 * 10987654321098765432109876543210
7377 * 001000 x1110000101
7382 std::string
NMD::EXTPDPV(uint64 instruction
)
7384 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7385 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7386 uint64 ac_value
= extract_ac_13_12(instruction
);
7388 std::string rt
= GPR(copy(rt_value
));
7389 std::string ac
= AC(copy(ac_value
));
7390 std::string rs
= GPR(copy(rs_value
));
7392 return img::format("EXTPDPV %s, %s, %s", rt
, ac
, rs
);
7400 * 10987654321098765432109876543210
7401 * 001000 x1110000101
7406 std::string
NMD::EXTP(uint64 instruction
)
7408 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7409 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7410 uint64 ac_value
= extract_ac_13_12(instruction
);
7412 std::string rt
= GPR(copy(rt_value
));
7413 std::string ac
= AC(copy(ac_value
));
7414 std::string size
= IMMEDIATE(copy(size_value
));
7416 return img::format("EXTP %s, %s, %s", rt
, ac
, size
);
7424 * 10987654321098765432109876543210
7425 * 001000 x1110000101
7430 std::string
NMD::EXTPV(uint64 instruction
)
7432 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7433 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7434 uint64 ac_value
= extract_ac_13_12(instruction
);
7436 std::string rt
= GPR(copy(rt_value
));
7437 std::string ac
= AC(copy(ac_value
));
7438 std::string rs
= GPR(copy(rs_value
));
7440 return img::format("EXTPV %s, %s, %s", rt
, ac
, rs
);
7448 * 10987654321098765432109876543210
7449 * 001000 x1110000101
7454 std::string
NMD::EXTR_RS_W(uint64 instruction
)
7456 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7457 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7458 uint64 ac_value
= extract_ac_13_12(instruction
);
7460 std::string rt
= GPR(copy(rt_value
));
7461 std::string ac
= AC(copy(ac_value
));
7462 std::string shift
= IMMEDIATE(copy(shift_value
));
7464 return img::format("EXTR_RS.W %s, %s, %s", rt
, ac
, shift
);
7472 * 10987654321098765432109876543210
7473 * 001000 x1110000101
7478 std::string
NMD::EXTR_R_W(uint64 instruction
)
7480 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7481 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7482 uint64 ac_value
= extract_ac_13_12(instruction
);
7484 std::string rt
= GPR(copy(rt_value
));
7485 std::string ac
= AC(copy(ac_value
));
7486 std::string shift
= IMMEDIATE(copy(shift_value
));
7488 return img::format("EXTR_R.W %s, %s, %s", rt
, ac
, shift
);
7496 * 10987654321098765432109876543210
7497 * 001000 x1110000101
7502 std::string
NMD::EXTR_S_H(uint64 instruction
)
7504 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7505 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7506 uint64 ac_value
= extract_ac_13_12(instruction
);
7508 std::string rt
= GPR(copy(rt_value
));
7509 std::string ac
= AC(copy(ac_value
));
7510 std::string shift
= IMMEDIATE(copy(shift_value
));
7512 return img::format("EXTR_S.H %s, %s, %s", rt
, ac
, shift
);
7520 * 10987654321098765432109876543210
7521 * 001000 x1110000101
7526 std::string
NMD::EXTR_W(uint64 instruction
)
7528 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7529 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7530 uint64 ac_value
= extract_ac_13_12(instruction
);
7532 std::string rt
= GPR(copy(rt_value
));
7533 std::string ac
= AC(copy(ac_value
));
7534 std::string shift
= IMMEDIATE(copy(shift_value
));
7536 return img::format("EXTR.W %s, %s, %s", rt
, ac
, shift
);
7544 * 10987654321098765432109876543210
7545 * 001000 x1110000101
7550 std::string
NMD::EXTRV_RS_W(uint64 instruction
)
7552 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7553 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7554 uint64 ac_value
= extract_ac_13_12(instruction
);
7556 std::string rt
= GPR(copy(rt_value
));
7557 std::string ac
= AC(copy(ac_value
));
7558 std::string rs
= GPR(copy(rs_value
));
7560 return img::format("EXTRV_RS.W %s, %s, %s", rt
, ac
, rs
);
7568 * 10987654321098765432109876543210
7569 * 001000 x1110000101
7574 std::string
NMD::EXTRV_R_W(uint64 instruction
)
7576 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7577 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7578 uint64 ac_value
= extract_ac_13_12(instruction
);
7580 std::string rt
= GPR(copy(rt_value
));
7581 std::string ac
= AC(copy(ac_value
));
7582 std::string rs
= GPR(copy(rs_value
));
7584 return img::format("EXTRV_R.W %s, %s, %s", rt
, ac
, rs
);
7592 * 10987654321098765432109876543210
7593 * 001000 x1110000101
7598 std::string
NMD::EXTRV_S_H(uint64 instruction
)
7600 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7601 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7602 uint64 ac_value
= extract_ac_13_12(instruction
);
7604 std::string rt
= GPR(copy(rt_value
));
7605 std::string ac
= AC(copy(ac_value
));
7606 std::string rs
= GPR(copy(rs_value
));
7608 return img::format("EXTRV_S.H %s, %s, %s", rt
, ac
, rs
);
7616 * 10987654321098765432109876543210
7617 * 001000 x1110000101
7622 std::string
NMD::EXTRV_W(uint64 instruction
)
7624 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7625 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7626 uint64 ac_value
= extract_ac_13_12(instruction
);
7628 std::string rt
= GPR(copy(rt_value
));
7629 std::string ac
= AC(copy(ac_value
));
7630 std::string rs
= GPR(copy(rs_value
));
7632 return img::format("EXTRV.W %s, %s, %s", rt
, ac
, rs
);
7637 * EXTW - Extract Word
7640 * 10987654321098765432109876543210
7647 std::string
NMD::EXTW(uint64 instruction
)
7649 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7650 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7651 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7652 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7654 std::string rd
= GPR(copy(rd_value
));
7655 std::string rs
= GPR(copy(rs_value
));
7656 std::string rt
= GPR(copy(rt_value
));
7657 std::string shift
= IMMEDIATE(copy(shift_value
));
7659 return img::format("EXTW %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7667 * 10987654321098765432109876543210
7668 * 001000 x1110000101
7673 std::string
NMD::FLOOR_L_D(uint64 instruction
)
7675 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7676 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7678 std::string ft
= FPR(copy(ft_value
));
7679 std::string fs
= FPR(copy(fs_value
));
7681 return img::format("FLOOR.L.D %s, %s", ft
, fs
);
7689 * 10987654321098765432109876543210
7690 * 001000 x1110000101
7695 std::string
NMD::FLOOR_L_S(uint64 instruction
)
7697 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7698 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7700 std::string ft
= FPR(copy(ft_value
));
7701 std::string fs
= FPR(copy(fs_value
));
7703 return img::format("FLOOR.L.S %s, %s", ft
, fs
);
7711 * 10987654321098765432109876543210
7712 * 001000 x1110000101
7717 std::string
NMD::FLOOR_W_D(uint64 instruction
)
7719 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7720 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7722 std::string ft
= FPR(copy(ft_value
));
7723 std::string fs
= FPR(copy(fs_value
));
7725 return img::format("FLOOR.W.D %s, %s", ft
, fs
);
7733 * 10987654321098765432109876543210
7734 * 001000 x1110000101
7739 std::string
NMD::FLOOR_W_S(uint64 instruction
)
7741 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
7742 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
7744 std::string ft
= FPR(copy(ft_value
));
7745 std::string fs
= FPR(copy(fs_value
));
7747 return img::format("FLOOR.W.S %s, %s", ft
, fs
);
7755 * 10987654321098765432109876543210
7756 * 001000 x1110000101
7761 std::string
NMD::FORK(uint64 instruction
)
7763 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7764 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7765 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
7767 std::string rd
= GPR(copy(rd_value
));
7768 std::string rs
= GPR(copy(rs_value
));
7769 std::string rt
= GPR(copy(rt_value
));
7771 return img::format("FORK %s, %s, %s", rd
, rs
, rt
);
7779 * 10987654321098765432109876543210
7780 * 001000 x1110000101
7785 std::string
NMD::HYPCALL(uint64 instruction
)
7787 uint64 code_value
= extract_code_17_to_0(instruction
);
7789 std::string code
= IMMEDIATE(copy(code_value
));
7791 return img::format("HYPCALL %s", code
);
7799 * 10987654321098765432109876543210
7800 * 001000 x1110000101
7805 std::string
NMD::HYPCALL_16_(uint64 instruction
)
7807 uint64 code_value
= extract_code_1_0(instruction
);
7809 std::string code
= IMMEDIATE(copy(code_value
));
7811 return img::format("HYPCALL %s", code
);
7819 * 10987654321098765432109876543210
7820 * 001000 x1110000101
7825 std::string
NMD::INS(uint64 instruction
)
7827 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7828 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7829 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7830 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7832 std::string rt
= GPR(copy(rt_value
));
7833 std::string rs
= GPR(copy(rs_value
));
7834 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
7835 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
7836 /* !!!!!!!!!! - no conversion function */
7838 return img::format("INS %s, %s, %s, %s", rt
, rs
, pos
, size
);
7847 * 10987654321098765432109876543210
7848 * 001000 x1110000101
7853 std::string
NMD::INSV(uint64 instruction
)
7855 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7856 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7858 std::string rt
= GPR(copy(rt_value
));
7859 std::string rs
= GPR(copy(rs_value
));
7861 return img::format("INSV %s, %s", rt
, rs
);
7869 * 10987654321098765432109876543210
7870 * 001000 x1110000101
7875 std::string
NMD::IRET(uint64 instruction
)
7887 * 10987654321098765432109876543210
7888 * 001000 x1110000101
7893 std::string
NMD::JALRC_16_(uint64 instruction
)
7895 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7897 std::string rt
= GPR(copy(rt_value
));
7899 return img::format("JALRC $%d, %s", 31, rt
);
7907 * 10987654321098765432109876543210
7908 * 001000 x1110000101
7913 std::string
NMD::JALRC_32_(uint64 instruction
)
7915 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7916 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7918 std::string rt
= GPR(copy(rt_value
));
7919 std::string rs
= GPR(copy(rs_value
));
7921 return img::format("JALRC %s, %s", rt
, rs
);
7929 * 10987654321098765432109876543210
7930 * 001000 x1110000101
7935 std::string
NMD::JALRC_HB(uint64 instruction
)
7937 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7938 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7940 std::string rt
= GPR(copy(rt_value
));
7941 std::string rs
= GPR(copy(rs_value
));
7943 return img::format("JALRC.HB %s, %s", rt
, rs
);
7951 * 10987654321098765432109876543210
7952 * 001000 x1110000101
7957 std::string
NMD::JRC(uint64 instruction
)
7959 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7961 std::string rt
= GPR(copy(rt_value
));
7963 return img::format("JRC %s", rt
);
7971 * 10987654321098765432109876543210
7972 * 001000 x1110000101
7977 std::string
NMD::LB_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("LB %s, %s(%s)", rt3
, u
, rs3
);
7995 * 10987654321098765432109876543210
7996 * 001000 x1110000101
8001 std::string
NMD::LB_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("LB %s, %s($%d)", rt
, u
, 28);
8017 * 10987654321098765432109876543210
8018 * 001000 x1110000101
8023 std::string
NMD::LB_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("LB %s, %s(%s)", rt
, s
, rs
);
8041 * 10987654321098765432109876543210
8042 * 001000 x1110000101
8047 std::string
NMD::LB_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("LB %s, %s(%s)", rt
, u
, rs
);
8065 * 10987654321098765432109876543210
8066 * 001000 x1110000101
8071 std::string
NMD::LBE(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("LBE %s, %s(%s)", rt
, s
, rs
);
8089 * 10987654321098765432109876543210
8090 * 001000 x1110000101
8095 std::string
NMD::LBU_16_(uint64 instruction
)
8097 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8098 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8099 uint64 u_value
= extract_u_1_0(instruction
);
8101 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8102 std::string u
= IMMEDIATE(copy(u_value
));
8103 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
8105 return img::format("LBU %s, %s(%s)", rt3
, u
, rs3
);
8113 * 10987654321098765432109876543210
8114 * 001000 x1110000101
8119 std::string
NMD::LBU_GP_(uint64 instruction
)
8121 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8122 uint64 u_value
= extract_u_17_to_0(instruction
);
8124 std::string rt
= GPR(copy(rt_value
));
8125 std::string u
= IMMEDIATE(copy(u_value
));
8127 return img::format("LBU %s, %s($%d)", rt
, u
, 28);
8135 * 10987654321098765432109876543210
8136 * 001000 x1110000101
8141 std::string
NMD::LBU_S9_(uint64 instruction
)
8143 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8144 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8145 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8147 std::string rt
= GPR(copy(rt_value
));
8148 std::string s
= IMMEDIATE(copy(s_value
));
8149 std::string rs
= GPR(copy(rs_value
));
8151 return img::format("LBU %s, %s(%s)", rt
, s
, rs
);
8159 * 10987654321098765432109876543210
8160 * 001000 x1110000101
8165 std::string
NMD::LBU_U12_(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 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8171 std::string rt
= GPR(copy(rt_value
));
8172 std::string u
= IMMEDIATE(copy(u_value
));
8173 std::string rs
= GPR(copy(rs_value
));
8175 return img::format("LBU %s, %s(%s)", rt
, u
, rs
);
8183 * 10987654321098765432109876543210
8184 * 001000 x1110000101
8189 std::string
NMD::LBUE(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 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8195 std::string rt
= GPR(copy(rt_value
));
8196 std::string s
= IMMEDIATE(copy(s_value
));
8197 std::string rs
= GPR(copy(rs_value
));
8199 return img::format("LBUE %s, %s(%s)", rt
, s
, rs
);
8207 * 10987654321098765432109876543210
8208 * 001000 x1110000101
8213 std::string
NMD::LBUX(uint64 instruction
)
8215 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8216 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8217 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8219 std::string rd
= GPR(copy(rd_value
));
8220 std::string rs
= GPR(copy(rs_value
));
8221 std::string rt
= GPR(copy(rt_value
));
8223 return img::format("LBUX %s, %s(%s)", rd
, rs
, rt
);
8231 * 10987654321098765432109876543210
8232 * 001000 x1110000101
8237 std::string
NMD::LBX(uint64 instruction
)
8239 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8240 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8241 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8243 std::string rd
= GPR(copy(rd_value
));
8244 std::string rs
= GPR(copy(rs_value
));
8245 std::string rt
= GPR(copy(rt_value
));
8247 return img::format("LBX %s, %s(%s)", rd
, rs
, rt
);
8255 * 10987654321098765432109876543210
8256 * 001000 x1110000101
8261 std::string
NMD::LD_GP_(uint64 instruction
)
8263 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8264 uint64 u_value
= extract_u_20_to_3__s3(instruction
);
8266 std::string rt
= GPR(copy(rt_value
));
8267 std::string u
= IMMEDIATE(copy(u_value
));
8269 return img::format("LD %s, %s($%d)", rt
, u
, 28);
8277 * 10987654321098765432109876543210
8278 * 001000 x1110000101
8283 std::string
NMD::LD_S9_(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 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8289 std::string rt
= GPR(copy(rt_value
));
8290 std::string s
= IMMEDIATE(copy(s_value
));
8291 std::string rs
= GPR(copy(rs_value
));
8293 return img::format("LD %s, %s(%s)", rt
, s
, rs
);
8301 * 10987654321098765432109876543210
8302 * 001000 x1110000101
8307 std::string
NMD::LD_U12_(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 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8313 std::string rt
= GPR(copy(rt_value
));
8314 std::string u
= IMMEDIATE(copy(u_value
));
8315 std::string rs
= GPR(copy(rs_value
));
8317 return img::format("LD %s, %s(%s)", rt
, u
, rs
);
8325 * 10987654321098765432109876543210
8326 * 001000 x1110000101
8331 std::string
NMD::LDC1_GP_(uint64 instruction
)
8333 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8334 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
8336 std::string ft
= FPR(copy(ft_value
));
8337 std::string u
= IMMEDIATE(copy(u_value
));
8339 return img::format("LDC1 %s, %s($%d)", ft
, u
, 28);
8347 * 10987654321098765432109876543210
8348 * 001000 x1110000101
8353 std::string
NMD::LDC1_S9_(uint64 instruction
)
8355 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8356 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8357 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8359 std::string ft
= FPR(copy(ft_value
));
8360 std::string s
= IMMEDIATE(copy(s_value
));
8361 std::string rs
= GPR(copy(rs_value
));
8363 return img::format("LDC1 %s, %s(%s)", ft
, s
, rs
);
8371 * 10987654321098765432109876543210
8372 * 001000 x1110000101
8377 std::string
NMD::LDC1_U12_(uint64 instruction
)
8379 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
8380 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8381 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8383 std::string ft
= FPR(copy(ft_value
));
8384 std::string u
= IMMEDIATE(copy(u_value
));
8385 std::string rs
= GPR(copy(rs_value
));
8387 return img::format("LDC1 %s, %s(%s)", ft
, u
, rs
);
8395 * 10987654321098765432109876543210
8396 * 001000 x1110000101
8401 std::string
NMD::LDC1XS(uint64 instruction
)
8403 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8404 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8405 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8407 std::string ft
= FPR(copy(ft_value
));
8408 std::string rs
= GPR(copy(rs_value
));
8409 std::string rt
= GPR(copy(rt_value
));
8411 return img::format("LDC1XS %s, %s(%s)", ft
, rs
, rt
);
8419 * 10987654321098765432109876543210
8420 * 001000 x1110000101
8425 std::string
NMD::LDC1X(uint64 instruction
)
8427 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8428 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8429 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8431 std::string ft
= FPR(copy(ft_value
));
8432 std::string rs
= GPR(copy(rs_value
));
8433 std::string rt
= GPR(copy(rt_value
));
8435 return img::format("LDC1X %s, %s(%s)", ft
, rs
, rt
);
8443 * 10987654321098765432109876543210
8444 * 001000 x1110000101
8449 std::string
NMD::LDC2(uint64 instruction
)
8451 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
8452 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8453 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8455 std::string ct
= CPR(copy(ct_value
));
8456 std::string s
= IMMEDIATE(copy(s_value
));
8457 std::string rs
= GPR(copy(rs_value
));
8459 return img::format("LDC2 %s, %s(%s)", ct
, s
, rs
);
8467 * 10987654321098765432109876543210
8468 * 001000 x1110000101
8473 std::string
NMD::LDM(uint64 instruction
)
8475 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8476 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8477 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8478 uint64 count3_value
= extract_count3_14_13_12(instruction
);
8480 std::string rt
= GPR(copy(rt_value
));
8481 std::string s
= IMMEDIATE(copy(s_value
));
8482 std::string rs
= GPR(copy(rs_value
));
8483 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
8485 return img::format("LDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
8493 * 10987654321098765432109876543210
8494 * 001000 x1110000101
8499 std::string
NMD::LDPC_48_(uint64 instruction
)
8501 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8502 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
8504 std::string rt
= GPR(copy(rt_value
));
8505 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
8507 return img::format("LDPC %s, %s", rt
, s
);
8515 * 10987654321098765432109876543210
8516 * 001000 x1110000101
8521 std::string
NMD::LDX(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 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8527 std::string rd
= GPR(copy(rd_value
));
8528 std::string rs
= GPR(copy(rs_value
));
8529 std::string rt
= GPR(copy(rt_value
));
8531 return img::format("LDX %s, %s(%s)", rd
, rs
, rt
);
8539 * 10987654321098765432109876543210
8540 * 001000 x1110000101
8545 std::string
NMD::LDXS(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 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8551 std::string rd
= GPR(copy(rd_value
));
8552 std::string rs
= GPR(copy(rs_value
));
8553 std::string rt
= GPR(copy(rt_value
));
8555 return img::format("LDXS %s, %s(%s)", rd
, rs
, rt
);
8563 * 10987654321098765432109876543210
8564 * 001000 x1110000101
8569 std::string
NMD::LH_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("LH %s, %s(%s)", rt3
, u
, rs3
);
8587 * 10987654321098765432109876543210
8588 * 001000 x1110000101
8593 std::string
NMD::LH_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("LH %s, %s($%d)", rt
, u
, 28);
8609 * 10987654321098765432109876543210
8610 * 001000 x1110000101
8615 std::string
NMD::LH_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("LH %s, %s(%s)", rt
, s
, rs
);
8633 * 10987654321098765432109876543210
8634 * 001000 x1110000101
8639 std::string
NMD::LH_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("LH %s, %s(%s)", rt
, u
, rs
);
8657 * 10987654321098765432109876543210
8658 * 001000 x1110000101
8663 std::string
NMD::LHE(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("LHE %s, %s(%s)", rt
, s
, rs
);
8681 * 10987654321098765432109876543210
8682 * 001000 x1110000101
8687 std::string
NMD::LHU_16_(uint64 instruction
)
8689 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8690 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8691 uint64 u_value
= extract_u_2_1__s1(instruction
);
8693 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8694 std::string u
= IMMEDIATE(copy(u_value
));
8695 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
8697 return img::format("LHU %s, %s(%s)", rt3
, u
, rs3
);
8705 * 10987654321098765432109876543210
8706 * 001000 x1110000101
8711 std::string
NMD::LHU_GP_(uint64 instruction
)
8713 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8714 uint64 u_value
= extract_u_17_to_1__s1(instruction
);
8716 std::string rt
= GPR(copy(rt_value
));
8717 std::string u
= IMMEDIATE(copy(u_value
));
8719 return img::format("LHU %s, %s($%d)", rt
, u
, 28);
8727 * 10987654321098765432109876543210
8728 * 001000 x1110000101
8733 std::string
NMD::LHU_S9_(uint64 instruction
)
8735 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8736 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8737 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8739 std::string rt
= GPR(copy(rt_value
));
8740 std::string s
= IMMEDIATE(copy(s_value
));
8741 std::string rs
= GPR(copy(rs_value
));
8743 return img::format("LHU %s, %s(%s)", rt
, s
, rs
);
8751 * 10987654321098765432109876543210
8752 * 001000 x1110000101
8757 std::string
NMD::LHU_U12_(uint64 instruction
)
8759 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8760 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8761 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8763 std::string rt
= GPR(copy(rt_value
));
8764 std::string u
= IMMEDIATE(copy(u_value
));
8765 std::string rs
= GPR(copy(rs_value
));
8767 return img::format("LHU %s, %s(%s)", rt
, u
, rs
);
8775 * 10987654321098765432109876543210
8776 * 001000 x1110000101
8781 std::string
NMD::LHUE(uint64 instruction
)
8783 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8784 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8785 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
8787 std::string rt
= GPR(copy(rt_value
));
8788 std::string s
= IMMEDIATE(copy(s_value
));
8789 std::string rs
= GPR(copy(rs_value
));
8791 return img::format("LHUE %s, %s(%s)", rt
, s
, rs
);
8799 * 10987654321098765432109876543210
8800 * 001000 x1110000101
8805 std::string
NMD::LHUX(uint64 instruction
)
8807 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8808 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8809 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8811 std::string rd
= GPR(copy(rd_value
));
8812 std::string rs
= GPR(copy(rs_value
));
8813 std::string rt
= GPR(copy(rt_value
));
8815 return img::format("LHUX %s, %s(%s)", rd
, rs
, rt
);
8823 * 10987654321098765432109876543210
8824 * 001000 x1110000101
8829 std::string
NMD::LHUXS(uint64 instruction
)
8831 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8832 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8833 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8835 std::string rd
= GPR(copy(rd_value
));
8836 std::string rs
= GPR(copy(rs_value
));
8837 std::string rt
= GPR(copy(rt_value
));
8839 return img::format("LHUXS %s, %s(%s)", rd
, rs
, rt
);
8847 * 10987654321098765432109876543210
8848 * 001000 x1110000101
8853 std::string
NMD::LHXS(uint64 instruction
)
8855 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8856 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8857 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8859 std::string rd
= GPR(copy(rd_value
));
8860 std::string rs
= GPR(copy(rs_value
));
8861 std::string rt
= GPR(copy(rt_value
));
8863 return img::format("LHXS %s, %s(%s)", rd
, rs
, rt
);
8871 * 10987654321098765432109876543210
8872 * 001000 x1110000101
8877 std::string
NMD::LHX(uint64 instruction
)
8879 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8880 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8881 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
8883 std::string rd
= GPR(copy(rd_value
));
8884 std::string rs
= GPR(copy(rs_value
));
8885 std::string rt
= GPR(copy(rt_value
));
8887 return img::format("LHX %s, %s(%s)", rd
, rs
, rt
);
8895 * 10987654321098765432109876543210
8896 * 001000 x1110000101
8901 std::string
NMD::LI_16_(uint64 instruction
)
8903 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8904 uint64 eu_value
= extract_eu_6_5_4_3_2_1_0(instruction
);
8906 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
8907 std::string eu
= IMMEDIATE(encode_eu_from_s_li16(eu_value
));
8909 return img::format("LI %s, %s", rt3
, eu
);
8917 * 10987654321098765432109876543210
8918 * 001000 x1110000101
8923 std::string
NMD::LI_48_(uint64 instruction
)
8925 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8926 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
8928 std::string rt
= GPR(copy(rt_value
));
8929 std::string s
= IMMEDIATE(copy(s_value
));
8931 return img::format("LI %s, %s", rt
, s
);
8939 * 10987654321098765432109876543210
8940 * 001000 x1110000101
8945 std::string
NMD::LL(uint64 instruction
)
8947 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8948 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8949 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
8951 std::string rt
= GPR(copy(rt_value
));
8952 std::string s
= IMMEDIATE(copy(s_value
));
8953 std::string rs
= GPR(copy(rs_value
));
8955 return img::format("LL %s, %s(%s)", rt
, s
, rs
);
8963 * 10987654321098765432109876543210
8964 * 001000 x1110000101
8969 std::string
NMD::LLD(uint64 instruction
)
8971 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8972 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8973 int64 s_value
= extract_s__se8_15_7_6_5_4_3_s3(instruction
);
8975 std::string rt
= GPR(copy(rt_value
));
8976 std::string s
= IMMEDIATE(copy(s_value
));
8977 std::string rs
= GPR(copy(rs_value
));
8979 return img::format("LLD %s, %s(%s)", rt
, s
, rs
);
8987 * 10987654321098765432109876543210
8988 * 001000 x1110000101
8993 std::string
NMD::LLDP(uint64 instruction
)
8995 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8996 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8997 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
8999 std::string rt
= GPR(copy(rt_value
));
9000 std::string ru
= GPR(copy(ru_value
));
9001 std::string rs
= GPR(copy(rs_value
));
9003 return img::format("LLDP %s, %s, (%s)", rt
, ru
, rs
);
9011 * 10987654321098765432109876543210
9012 * 001000 x1110000101
9017 std::string
NMD::LLE(uint64 instruction
)
9019 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9020 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9021 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
9023 std::string rt
= GPR(copy(rt_value
));
9024 std::string s
= IMMEDIATE(copy(s_value
));
9025 std::string rs
= GPR(copy(rs_value
));
9027 return img::format("LLE %s, %s(%s)", rt
, s
, rs
);
9035 * 10987654321098765432109876543210
9036 * 001000 x1110000101
9041 std::string
NMD::LLWP(uint64 instruction
)
9043 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9044 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9045 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
9047 std::string rt
= GPR(copy(rt_value
));
9048 std::string ru
= GPR(copy(ru_value
));
9049 std::string rs
= GPR(copy(rs_value
));
9051 return img::format("LLWP %s, %s, (%s)", rt
, ru
, rs
);
9059 * 10987654321098765432109876543210
9060 * 001000 x1110000101
9065 std::string
NMD::LLWPE(uint64 instruction
)
9067 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9068 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9069 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
9071 std::string rt
= GPR(copy(rt_value
));
9072 std::string ru
= GPR(copy(ru_value
));
9073 std::string rs
= GPR(copy(rs_value
));
9075 return img::format("LLWPE %s, %s, (%s)", rt
, ru
, rs
);
9083 * 10987654321098765432109876543210
9084 * 001000 x1110000101
9089 std::string
NMD::LSA(uint64 instruction
)
9091 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9092 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9093 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9094 uint64 u2_value
= extract_u2_10_9(instruction
);
9096 std::string rd
= GPR(copy(rd_value
));
9097 std::string rs
= GPR(copy(rs_value
));
9098 std::string rt
= GPR(copy(rt_value
));
9099 std::string u2
= IMMEDIATE(copy(u2_value
));
9101 return img::format("LSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
9109 * 10987654321098765432109876543210
9110 * 001000 x1110000101
9115 std::string
NMD::LUI(uint64 instruction
)
9117 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9118 int64 s_value
= extract_s__se31_0_11_to_2_20_to_12_s12(instruction
);
9120 std::string rt
= GPR(copy(rt_value
));
9121 std::string s
= IMMEDIATE(copy(s_value
));
9123 return img::format("LUI %s, %%hi(%s)", rt
, s
);
9131 * 10987654321098765432109876543210
9132 * 001000 x1110000101
9137 std::string
NMD::LW_16_(uint64 instruction
)
9139 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9140 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9141 uint64 u_value
= extract_u_3_2_1_0__s2(instruction
);
9143 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
9144 std::string u
= IMMEDIATE(copy(u_value
));
9145 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
9147 return img::format("LW %s, %s(%s)", rt3
, u
, rs3
);
9155 * 10987654321098765432109876543210
9156 * 001000 x1110000101
9161 std::string
NMD::LW_4X4_(uint64 instruction
)
9163 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
9164 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
9165 uint64 u_value
= extract_u_3_8__s2(instruction
);
9167 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
9168 std::string u
= IMMEDIATE(copy(u_value
));
9169 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
9171 return img::format("LW %s, %s(%s)", rt4
, u
, rs4
);
9179 * 10987654321098765432109876543210
9180 * 001000 x1110000101
9185 std::string
NMD::LW_GP_(uint64 instruction
)
9187 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9188 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
9190 std::string rt
= GPR(copy(rt_value
));
9191 std::string u
= IMMEDIATE(copy(u_value
));
9193 return img::format("LW %s, %s($%d)", rt
, u
, 28);
9201 * 10987654321098765432109876543210
9202 * 001000 x1110000101
9207 std::string
NMD::LW_GP16_(uint64 instruction
)
9209 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9210 uint64 u_value
= extract_u_6_5_4_3_2_1_0__s2(instruction
);
9212 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
9213 std::string u
= IMMEDIATE(copy(u_value
));
9215 return img::format("LW %s, %s($%d)", rt3
, u
, 28);
9223 * 10987654321098765432109876543210
9224 * 001000 x1110000101
9229 std::string
NMD::LW_S9_(uint64 instruction
)
9231 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9232 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9233 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9235 std::string rt
= GPR(copy(rt_value
));
9236 std::string s
= IMMEDIATE(copy(s_value
));
9237 std::string rs
= GPR(copy(rs_value
));
9239 return img::format("LW %s, %s(%s)", rt
, s
, rs
);
9247 * 10987654321098765432109876543210
9248 * 001000 x1110000101
9253 std::string
NMD::LW_SP_(uint64 instruction
)
9255 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
9256 uint64 u_value
= extract_u_4_3_2_1_0__s2(instruction
);
9258 std::string rt
= GPR(copy(rt_value
));
9259 std::string u
= IMMEDIATE(copy(u_value
));
9261 return img::format("LW %s, %s($%d)", rt
, u
, 29);
9269 * 10987654321098765432109876543210
9270 * 001000 x1110000101
9275 std::string
NMD::LW_U12_(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 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9281 std::string rt
= GPR(copy(rt_value
));
9282 std::string u
= IMMEDIATE(copy(u_value
));
9283 std::string rs
= GPR(copy(rs_value
));
9285 return img::format("LW %s, %s(%s)", rt
, u
, rs
);
9293 * 10987654321098765432109876543210
9294 * 001000 x1110000101
9299 std::string
NMD::LWC1_GP_(uint64 instruction
)
9301 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9302 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
9304 std::string ft
= FPR(copy(ft_value
));
9305 std::string u
= IMMEDIATE(copy(u_value
));
9307 return img::format("LWC1 %s, %s($%d)", ft
, u
, 28);
9315 * 10987654321098765432109876543210
9316 * 001000 x1110000101
9321 std::string
NMD::LWC1_S9_(uint64 instruction
)
9323 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9324 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9325 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9327 std::string ft
= FPR(copy(ft_value
));
9328 std::string s
= IMMEDIATE(copy(s_value
));
9329 std::string rs
= GPR(copy(rs_value
));
9331 return img::format("LWC1 %s, %s(%s)", ft
, s
, rs
);
9339 * 10987654321098765432109876543210
9340 * 001000 x1110000101
9345 std::string
NMD::LWC1_U12_(uint64 instruction
)
9347 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9348 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9349 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9351 std::string ft
= FPR(copy(ft_value
));
9352 std::string u
= IMMEDIATE(copy(u_value
));
9353 std::string rs
= GPR(copy(rs_value
));
9355 return img::format("LWC1 %s, %s(%s)", ft
, u
, rs
);
9363 * 10987654321098765432109876543210
9364 * 001000 x1110000101
9369 std::string
NMD::LWC1X(uint64 instruction
)
9371 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9372 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9373 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9375 std::string ft
= FPR(copy(ft_value
));
9376 std::string rs
= GPR(copy(rs_value
));
9377 std::string rt
= GPR(copy(rt_value
));
9379 return img::format("LWC1X %s, %s(%s)", ft
, rs
, rt
);
9387 * 10987654321098765432109876543210
9388 * 001000 x1110000101
9393 std::string
NMD::LWC1XS(uint64 instruction
)
9395 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9396 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9397 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9399 std::string ft
= FPR(copy(ft_value
));
9400 std::string rs
= GPR(copy(rs_value
));
9401 std::string rt
= GPR(copy(rt_value
));
9403 return img::format("LWC1XS %s, %s(%s)", ft
, rs
, rt
);
9411 * 10987654321098765432109876543210
9412 * 001000 x1110000101
9417 std::string
NMD::LWC2(uint64 instruction
)
9419 uint64 ct_value
= extract_ct_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 ct
= CPR(copy(ct_value
));
9424 std::string s
= IMMEDIATE(copy(s_value
));
9425 std::string rs
= GPR(copy(rs_value
));
9427 return img::format("LWC2 %s, %s(%s)", ct
, s
, rs
);
9435 * 10987654321098765432109876543210
9436 * 001000 x1110000101
9441 std::string
NMD::LWE(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 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9447 std::string rt
= GPR(copy(rt_value
));
9448 std::string s
= IMMEDIATE(copy(s_value
));
9449 std::string rs
= GPR(copy(rs_value
));
9451 return img::format("LWE %s, %s(%s)", rt
, s
, rs
);
9459 * 10987654321098765432109876543210
9460 * 001000 x1110000101
9465 std::string
NMD::LWM(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 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9470 uint64 count3_value
= extract_count3_14_13_12(instruction
);
9472 std::string rt
= GPR(copy(rt_value
));
9473 std::string s
= IMMEDIATE(copy(s_value
));
9474 std::string rs
= GPR(copy(rs_value
));
9475 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
9477 return img::format("LWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
9485 * 10987654321098765432109876543210
9486 * 001000 x1110000101
9491 std::string
NMD::LWPC_48_(uint64 instruction
)
9493 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
9494 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
9496 std::string rt
= GPR(copy(rt_value
));
9497 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
9499 return img::format("LWPC %s, %s", rt
, s
);
9507 * 10987654321098765432109876543210
9508 * 001000 x1110000101
9513 std::string
NMD::LWU_GP_(uint64 instruction
)
9515 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9516 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
9518 std::string rt
= GPR(copy(rt_value
));
9519 std::string u
= IMMEDIATE(copy(u_value
));
9521 return img::format("LWU %s, %s($%d)", rt
, u
, 28);
9529 * 10987654321098765432109876543210
9530 * 001000 x1110000101
9535 std::string
NMD::LWU_S9_(uint64 instruction
)
9537 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9538 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9539 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
9541 std::string rt
= GPR(copy(rt_value
));
9542 std::string s
= IMMEDIATE(copy(s_value
));
9543 std::string rs
= GPR(copy(rs_value
));
9545 return img::format("LWU %s, %s(%s)", rt
, s
, rs
);
9553 * 10987654321098765432109876543210
9554 * 001000 x1110000101
9559 std::string
NMD::LWU_U12_(uint64 instruction
)
9561 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9562 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9563 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9565 std::string rt
= GPR(copy(rt_value
));
9566 std::string u
= IMMEDIATE(copy(u_value
));
9567 std::string rs
= GPR(copy(rs_value
));
9569 return img::format("LWU %s, %s(%s)", rt
, u
, rs
);
9577 * 10987654321098765432109876543210
9578 * 001000 x1110000101
9583 std::string
NMD::LWUX(uint64 instruction
)
9585 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9586 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9587 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9589 std::string rd
= GPR(copy(rd_value
));
9590 std::string rs
= GPR(copy(rs_value
));
9591 std::string rt
= GPR(copy(rt_value
));
9593 return img::format("LWUX %s, %s(%s)", rd
, rs
, rt
);
9601 * 10987654321098765432109876543210
9602 * 001000 x1110000101
9607 std::string
NMD::LWUXS(uint64 instruction
)
9609 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9610 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9611 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9613 std::string rd
= GPR(copy(rd_value
));
9614 std::string rs
= GPR(copy(rs_value
));
9615 std::string rt
= GPR(copy(rt_value
));
9617 return img::format("LWUXS %s, %s(%s)", rd
, rs
, rt
);
9625 * 10987654321098765432109876543210
9626 * 001000 x1110000101
9631 std::string
NMD::LWX(uint64 instruction
)
9633 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9634 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9635 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9637 std::string rd
= GPR(copy(rd_value
));
9638 std::string rs
= GPR(copy(rs_value
));
9639 std::string rt
= GPR(copy(rt_value
));
9641 return img::format("LWX %s, %s(%s)", rd
, rs
, rt
);
9649 * 10987654321098765432109876543210
9650 * 001000 x1110000101
9655 std::string
NMD::LWXS_16_(uint64 instruction
)
9657 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9658 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9659 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
9661 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
9662 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
9663 std::string rt3
= IMMEDIATE(decode_gpr_gpr3(rt3_value
));
9665 return img::format("LWXS %s, %s(%s)", rd3
, rs3
, rt3
);
9673 * 10987654321098765432109876543210
9674 * 001000 x1110000101
9679 std::string
NMD::LWXS_32_(uint64 instruction
)
9681 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9682 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9683 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
9685 std::string rd
= GPR(copy(rd_value
));
9686 std::string rs
= GPR(copy(rs_value
));
9687 std::string rt
= GPR(copy(rt_value
));
9689 return img::format("LWXS %s, %s(%s)", rd
, rs
, rt
);
9697 * 10987654321098765432109876543210
9698 * 001000 x1110000101
9703 std::string
NMD::MADD_DSP_(uint64 instruction
)
9705 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9706 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9707 uint64 ac_value
= extract_ac_13_12(instruction
);
9709 std::string ac
= AC(copy(ac_value
));
9710 std::string rs
= GPR(copy(rs_value
));
9711 std::string rt
= GPR(copy(rt_value
));
9713 return img::format("MADD %s, %s, %s", ac
, rs
, rt
);
9721 * 10987654321098765432109876543210
9722 * 001000 x1110000101
9727 std::string
NMD::MADDF_D(uint64 instruction
)
9729 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9730 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9731 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9733 std::string fd
= FPR(copy(fd_value
));
9734 std::string fs
= FPR(copy(fs_value
));
9735 std::string ft
= FPR(copy(ft_value
));
9737 return img::format("MADDF.D %s, %s, %s", fd
, fs
, ft
);
9745 * 10987654321098765432109876543210
9746 * 001000 x1110000101
9751 std::string
NMD::MADDF_S(uint64 instruction
)
9753 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9754 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9755 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9757 std::string fd
= FPR(copy(fd_value
));
9758 std::string fs
= FPR(copy(fs_value
));
9759 std::string ft
= FPR(copy(ft_value
));
9761 return img::format("MADDF.S %s, %s, %s", fd
, fs
, ft
);
9769 * 10987654321098765432109876543210
9770 * 001000 x1110000101
9775 std::string
NMD::MADDU_DSP_(uint64 instruction
)
9777 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9778 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9779 uint64 ac_value
= extract_ac_13_12(instruction
);
9781 std::string ac
= AC(copy(ac_value
));
9782 std::string rs
= GPR(copy(rs_value
));
9783 std::string rt
= GPR(copy(rt_value
));
9785 return img::format("MADDU %s, %s, %s", ac
, rs
, rt
);
9793 * 10987654321098765432109876543210
9794 * 001000 x1110000101
9799 std::string
NMD::MAQ_S_W_PHL(uint64 instruction
)
9801 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9802 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9803 uint64 ac_value
= extract_ac_13_12(instruction
);
9805 std::string ac
= AC(copy(ac_value
));
9806 std::string rs
= GPR(copy(rs_value
));
9807 std::string rt
= GPR(copy(rt_value
));
9809 return img::format("MAQ_S.W.PHL %s, %s, %s", ac
, rs
, rt
);
9817 * 10987654321098765432109876543210
9818 * 001000 x1110000101
9823 std::string
NMD::MAQ_S_W_PHR(uint64 instruction
)
9825 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9826 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9827 uint64 ac_value
= extract_ac_13_12(instruction
);
9829 std::string ac
= AC(copy(ac_value
));
9830 std::string rs
= GPR(copy(rs_value
));
9831 std::string rt
= GPR(copy(rt_value
));
9833 return img::format("MAQ_S.W.PHR %s, %s, %s", ac
, rs
, rt
);
9841 * 10987654321098765432109876543210
9842 * 001000 x1110000101
9847 std::string
NMD::MAQ_SA_W_PHL(uint64 instruction
)
9849 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9850 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9851 uint64 ac_value
= extract_ac_13_12(instruction
);
9853 std::string ac
= AC(copy(ac_value
));
9854 std::string rs
= GPR(copy(rs_value
));
9855 std::string rt
= GPR(copy(rt_value
));
9857 return img::format("MAQ_SA.W.PHL %s, %s, %s", ac
, rs
, rt
);
9865 * 10987654321098765432109876543210
9866 * 001000 x1110000101
9871 std::string
NMD::MAQ_SA_W_PHR(uint64 instruction
)
9873 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9874 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9875 uint64 ac_value
= extract_ac_13_12(instruction
);
9877 std::string ac
= AC(copy(ac_value
));
9878 std::string rs
= GPR(copy(rs_value
));
9879 std::string rt
= GPR(copy(rt_value
));
9881 return img::format("MAQ_SA.W.PHR %s, %s, %s", ac
, rs
, rt
);
9889 * 10987654321098765432109876543210
9890 * 001000 x1110000101
9895 std::string
NMD::MAX_D(uint64 instruction
)
9897 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9898 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9899 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9901 std::string fd
= FPR(copy(fd_value
));
9902 std::string fs
= FPR(copy(fs_value
));
9903 std::string ft
= FPR(copy(ft_value
));
9905 return img::format("MAX.D %s, %s, %s", fd
, fs
, ft
);
9913 * 10987654321098765432109876543210
9914 * 001000 x1110000101
9919 std::string
NMD::MAX_S(uint64 instruction
)
9921 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9922 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9923 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9925 std::string fd
= FPR(copy(fd_value
));
9926 std::string fs
= FPR(copy(fs_value
));
9927 std::string ft
= FPR(copy(ft_value
));
9929 return img::format("MAX.S %s, %s, %s", fd
, fs
, ft
);
9937 * 10987654321098765432109876543210
9938 * 001000 x1110000101
9943 std::string
NMD::MAXA_D(uint64 instruction
)
9945 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9946 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9947 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9949 std::string fd
= FPR(copy(fd_value
));
9950 std::string fs
= FPR(copy(fs_value
));
9951 std::string ft
= FPR(copy(ft_value
));
9953 return img::format("MAXA.D %s, %s, %s", fd
, fs
, ft
);
9961 * 10987654321098765432109876543210
9962 * 001000 x1110000101
9967 std::string
NMD::MAXA_S(uint64 instruction
)
9969 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
9970 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
9971 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
9973 std::string fd
= FPR(copy(fd_value
));
9974 std::string fs
= FPR(copy(fs_value
));
9975 std::string ft
= FPR(copy(ft_value
));
9977 return img::format("MAXA.S %s, %s, %s", fd
, fs
, ft
);
9985 * 10987654321098765432109876543210
9986 * 001000 x1110000101
9991 std::string
NMD::MFC0(uint64 instruction
)
9993 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9994 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
9995 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
9997 std::string rt
= GPR(copy(rt_value
));
9998 std::string c0s
= CPR(copy(c0s_value
));
9999 std::string sel
= IMMEDIATE(copy(sel_value
));
10001 return img::format("MFC0 %s, %s, %s", rt
, c0s
, sel
);
10009 * 10987654321098765432109876543210
10010 * 001000 x1110000101
10015 std::string
NMD::MFC1(uint64 instruction
)
10017 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10018 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10020 std::string rt
= GPR(copy(rt_value
));
10021 std::string fs
= FPR(copy(fs_value
));
10023 return img::format("MFC1 %s, %s", rt
, fs
);
10031 * 10987654321098765432109876543210
10032 * 001000 x1110000101
10037 std::string
NMD::MFC2(uint64 instruction
)
10039 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10040 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10042 std::string rt
= GPR(copy(rt_value
));
10043 std::string cs
= CPR(copy(cs_value
));
10045 return img::format("MFC2 %s, %s", rt
, cs
);
10053 * 10987654321098765432109876543210
10054 * 001000 x1110000101
10059 std::string
NMD::MFGC0(uint64 instruction
)
10061 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10062 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10063 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10065 std::string rt
= GPR(copy(rt_value
));
10066 std::string c0s
= CPR(copy(c0s_value
));
10067 std::string sel
= IMMEDIATE(copy(sel_value
));
10069 return img::format("MFGC0 %s, %s, %s", rt
, c0s
, sel
);
10077 * 10987654321098765432109876543210
10078 * 001000 x1110000101
10083 std::string
NMD::MFHC0(uint64 instruction
)
10085 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10086 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10087 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10089 std::string rt
= GPR(copy(rt_value
));
10090 std::string c0s
= CPR(copy(c0s_value
));
10091 std::string sel
= IMMEDIATE(copy(sel_value
));
10093 return img::format("MFHC0 %s, %s, %s", rt
, c0s
, sel
);
10101 * 10987654321098765432109876543210
10102 * 001000 x1110000101
10107 std::string
NMD::MFHC1(uint64 instruction
)
10109 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10110 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10112 std::string rt
= GPR(copy(rt_value
));
10113 std::string fs
= FPR(copy(fs_value
));
10115 return img::format("MFHC1 %s, %s", rt
, fs
);
10123 * 10987654321098765432109876543210
10124 * 001000 x1110000101
10129 std::string
NMD::MFHC2(uint64 instruction
)
10131 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10132 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10134 std::string rt
= GPR(copy(rt_value
));
10135 std::string cs
= CPR(copy(cs_value
));
10137 return img::format("MFHC2 %s, %s", rt
, cs
);
10145 * 10987654321098765432109876543210
10146 * 001000 x1110000101
10151 std::string
NMD::MFHGC0(uint64 instruction
)
10153 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10154 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10155 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10157 std::string rt
= GPR(copy(rt_value
));
10158 std::string c0s
= CPR(copy(c0s_value
));
10159 std::string sel
= IMMEDIATE(copy(sel_value
));
10161 return img::format("MFHGC0 %s, %s, %s", rt
, c0s
, sel
);
10169 * 10987654321098765432109876543210
10170 * 001000 x1110000101
10175 std::string
NMD::MFHI_DSP_(uint64 instruction
)
10177 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10178 uint64 ac_value
= extract_ac_13_12(instruction
);
10180 std::string rt
= GPR(copy(rt_value
));
10181 std::string ac
= AC(copy(ac_value
));
10183 return img::format("MFHI %s, %s", rt
, ac
);
10191 * 10987654321098765432109876543210
10192 * 001000 x1110000101
10197 std::string
NMD::MFHTR(uint64 instruction
)
10199 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10200 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10201 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10202 uint64 u_value
= extract_u_10(instruction
);
10204 std::string rt
= GPR(copy(rt_value
));
10205 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10206 std::string u
= IMMEDIATE(copy(u_value
));
10207 std::string sel
= IMMEDIATE(copy(sel_value
));
10209 return img::format("MFHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10217 * 10987654321098765432109876543210
10218 * 001000 x1110000101
10223 std::string
NMD::MFLO_DSP_(uint64 instruction
)
10225 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10226 uint64 ac_value
= extract_ac_13_12(instruction
);
10228 std::string rt
= GPR(copy(rt_value
));
10229 std::string ac
= AC(copy(ac_value
));
10231 return img::format("MFLO %s, %s", rt
, ac
);
10239 * 10987654321098765432109876543210
10240 * 001000 x1110000101
10245 std::string
NMD::MFTR(uint64 instruction
)
10247 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10248 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10249 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10250 uint64 u_value
= extract_u_10(instruction
);
10252 std::string rt
= GPR(copy(rt_value
));
10253 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10254 std::string u
= IMMEDIATE(copy(u_value
));
10255 std::string sel
= IMMEDIATE(copy(sel_value
));
10257 return img::format("MFTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10265 * 10987654321098765432109876543210
10266 * 001000 x1110000101
10271 std::string
NMD::MIN_D(uint64 instruction
)
10273 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10274 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10275 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10277 std::string fd
= FPR(copy(fd_value
));
10278 std::string fs
= FPR(copy(fs_value
));
10279 std::string ft
= FPR(copy(ft_value
));
10281 return img::format("MIN.D %s, %s, %s", fd
, fs
, ft
);
10289 * 10987654321098765432109876543210
10290 * 001000 x1110000101
10295 std::string
NMD::MIN_S(uint64 instruction
)
10297 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10298 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10299 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10301 std::string fd
= FPR(copy(fd_value
));
10302 std::string fs
= FPR(copy(fs_value
));
10303 std::string ft
= FPR(copy(ft_value
));
10305 return img::format("MIN.S %s, %s, %s", fd
, fs
, ft
);
10313 * 10987654321098765432109876543210
10314 * 001000 x1110000101
10319 std::string
NMD::MINA_D(uint64 instruction
)
10321 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10322 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10323 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10325 std::string fd
= FPR(copy(fd_value
));
10326 std::string fs
= FPR(copy(fs_value
));
10327 std::string ft
= FPR(copy(ft_value
));
10329 return img::format("MINA.D %s, %s, %s", fd
, fs
, ft
);
10337 * 10987654321098765432109876543210
10338 * 001000 x1110000101
10343 std::string
NMD::MINA_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
);
10347 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10349 std::string fd
= FPR(copy(fd_value
));
10350 std::string fs
= FPR(copy(fs_value
));
10351 std::string ft
= FPR(copy(ft_value
));
10353 return img::format("MINA.S %s, %s, %s", fd
, fs
, ft
);
10361 * 10987654321098765432109876543210
10362 * 001000 x1110000101
10367 std::string
NMD::MOD(uint64 instruction
)
10369 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10370 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10371 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10373 std::string rd
= GPR(copy(rd_value
));
10374 std::string rs
= GPR(copy(rs_value
));
10375 std::string rt
= GPR(copy(rt_value
));
10377 return img::format("MOD %s, %s, %s", rd
, rs
, rt
);
10385 * 10987654321098765432109876543210
10386 * 001000 x1110000101
10391 std::string
NMD::MODSUB(uint64 instruction
)
10393 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10394 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10395 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10397 std::string rd
= GPR(copy(rd_value
));
10398 std::string rs
= GPR(copy(rs_value
));
10399 std::string rt
= GPR(copy(rt_value
));
10401 return img::format("MODSUB %s, %s, %s", rd
, rs
, rt
);
10409 * 10987654321098765432109876543210
10410 * 001000 x1110000101
10415 std::string
NMD::MODU(uint64 instruction
)
10417 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10418 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10419 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10421 std::string rd
= GPR(copy(rd_value
));
10422 std::string rs
= GPR(copy(rs_value
));
10423 std::string rt
= GPR(copy(rt_value
));
10425 return img::format("MODU %s, %s, %s", rd
, rs
, rt
);
10433 * 10987654321098765432109876543210
10434 * 001000 x1110000101
10439 std::string
NMD::MOV_D(uint64 instruction
)
10441 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10442 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10444 std::string ft
= FPR(copy(ft_value
));
10445 std::string fs
= FPR(copy(fs_value
));
10447 return img::format("MOV.D %s, %s", ft
, fs
);
10455 * 10987654321098765432109876543210
10456 * 001000 x1110000101
10461 std::string
NMD::MOV_S(uint64 instruction
)
10463 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10464 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10466 std::string ft
= FPR(copy(ft_value
));
10467 std::string fs
= FPR(copy(fs_value
));
10469 return img::format("MOV.S %s, %s", ft
, fs
);
10477 * 10987654321098765432109876543210
10478 * 001000 x1110000101
10483 std::string
NMD::MOVE_BALC(uint64 instruction
)
10485 uint64 rtz4_value
= extract_rtz4_27_26_25_23_22_21(instruction
);
10486 uint64 rd1_value
= extract_rdl_25_24(instruction
);
10487 int64 s_value
= extract_s__se21_0_20_to_1_s1(instruction
);
10489 std::string rd1
= GPR(decode_gpr_gpr1(rd1_value
));
10490 std::string rtz4
= GPR(decode_gpr_gpr4_zero(rtz4_value
));
10491 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
10493 return img::format("MOVE.BALC %s, %s, %s", rd1
, rtz4
, s
);
10501 * 10987654321098765432109876543210
10502 * 001000 x1110000101
10507 std::string
NMD::MOVEP(uint64 instruction
)
10509 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
10510 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10511 uint64 rsz4_value
= extract_rsz4_4_2_1_0(instruction
);
10513 std::string rd2
= GPR(decode_gpr_gpr2_reg1(rd2_value
));
10514 std::string re2
= GPR(decode_gpr_gpr2_reg2(rd2_value
));
10515 /* !!!!!!!!!! - no conversion function */
10516 std::string rsz4
= GPR(decode_gpr_gpr4_zero(rsz4_value
));
10517 std::string rtz4
= GPR(decode_gpr_gpr4_zero(rtz4_value
));
10519 return img::format("MOVEP %s, %s, %s, %s", rd2
, re2
, rsz4
, rtz4
);
10528 * 10987654321098765432109876543210
10529 * 001000 x1110000101
10534 std::string
NMD::MOVEP_REV_(uint64 instruction
)
10536 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
10537 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10538 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
10540 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
10541 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
10542 std::string rd2
= GPR(decode_gpr_gpr2_reg1(rd2_value
));
10543 std::string rs2
= GPR(decode_gpr_gpr2_reg2(rd2_value
));
10544 /* !!!!!!!!!! - no conversion function */
10546 return img::format("MOVEP %s, %s, %s, %s", rs4
, rt4
, rd2
, rs2
);
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::MOVE(uint64 instruction
)
10563 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
10564 uint64 rs_value
= extract_rs_4_3_2_1_0(instruction
);
10566 std::string rt
= GPR(copy(rt_value
));
10567 std::string rs
= GPR(copy(rs_value
));
10569 return img::format("MOVE %s, %s", rt
, rs
);
10574 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10577 * 10987654321098765432109876543210
10578 * 001000 00010001101
10583 std::string
NMD::MOVN(uint64 instruction
)
10585 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10586 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10587 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10589 std::string rd
= GPR(copy(rd_value
));
10590 std::string rs
= GPR(copy(rs_value
));
10591 std::string rt
= GPR(copy(rt_value
));
10593 return img::format("MOVN %s, %s, %s", rd
, rs
, rt
);
10598 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10601 * 10987654321098765432109876543210
10602 * 001000 00010001101
10607 std::string
NMD::MOVZ(uint64 instruction
)
10609 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10610 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10611 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
10613 std::string rd
= GPR(copy(rd_value
));
10614 std::string rs
= GPR(copy(rs_value
));
10615 std::string rt
= GPR(copy(rt_value
));
10617 return img::format("MOVZ %s, %s, %s", rd
, rs
, rt
);
10622 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10625 * 10987654321098765432109876543210
10626 * 001000 00010001101
10631 std::string
NMD::MSUB_DSP_(uint64 instruction
)
10633 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10634 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10635 uint64 ac_value
= extract_ac_13_12(instruction
);
10637 std::string ac
= AC(copy(ac_value
));
10638 std::string rs
= GPR(copy(rs_value
));
10639 std::string rt
= GPR(copy(rt_value
));
10641 return img::format("MSUB %s, %s, %s", ac
, rs
, rt
);
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::MSUBF_D(uint64 instruction
)
10657 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10658 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10659 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10661 std::string fd
= FPR(copy(fd_value
));
10662 std::string fs
= FPR(copy(fs_value
));
10663 std::string ft
= FPR(copy(ft_value
));
10665 return img::format("MSUBF.D %s, %s, %s", fd
, fs
, ft
);
10670 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10673 * 10987654321098765432109876543210
10674 * 001000 00010001101
10679 std::string
NMD::MSUBF_S(uint64 instruction
)
10681 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
10682 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10683 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
10685 std::string fd
= FPR(copy(fd_value
));
10686 std::string fs
= FPR(copy(fs_value
));
10687 std::string ft
= FPR(copy(ft_value
));
10689 return img::format("MSUBF.S %s, %s, %s", fd
, fs
, ft
);
10694 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10697 * 10987654321098765432109876543210
10698 * 001000 00010001101
10703 std::string
NMD::MSUBU_DSP_(uint64 instruction
)
10705 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10706 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10707 uint64 ac_value
= extract_ac_13_12(instruction
);
10709 std::string ac
= AC(copy(ac_value
));
10710 std::string rs
= GPR(copy(rs_value
));
10711 std::string rt
= GPR(copy(rt_value
));
10713 return img::format("MSUBU %s, %s, %s", ac
, rs
, rt
);
10718 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10721 * 10987654321098765432109876543210
10722 * 001000 00010001101
10727 std::string
NMD::MTC0(uint64 instruction
)
10729 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10730 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10731 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10733 std::string rt
= GPR(copy(rt_value
));
10734 std::string c0s
= CPR(copy(c0s_value
));
10735 std::string sel
= IMMEDIATE(copy(sel_value
));
10737 return img::format("MTC0 %s, %s, %s", rt
, c0s
, sel
);
10742 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10745 * 10987654321098765432109876543210
10746 * 001000 00010001101
10751 std::string
NMD::MTC1(uint64 instruction
)
10753 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10754 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10756 std::string rt
= GPR(copy(rt_value
));
10757 std::string fs
= FPR(copy(fs_value
));
10759 return img::format("MTC1 %s, %s", rt
, fs
);
10764 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10767 * 10987654321098765432109876543210
10768 * 001000 00010001101
10773 std::string
NMD::MTC2(uint64 instruction
)
10775 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10776 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10778 std::string rt
= GPR(copy(rt_value
));
10779 std::string cs
= CPR(copy(cs_value
));
10781 return img::format("MTC2 %s, %s", rt
, cs
);
10786 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10789 * 10987654321098765432109876543210
10790 * 001000 00010001101
10795 std::string
NMD::MTGC0(uint64 instruction
)
10797 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10798 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10799 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10801 std::string rt
= GPR(copy(rt_value
));
10802 std::string c0s
= CPR(copy(c0s_value
));
10803 std::string sel
= IMMEDIATE(copy(sel_value
));
10805 return img::format("MTGC0 %s, %s, %s", rt
, c0s
, sel
);
10810 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10813 * 10987654321098765432109876543210
10814 * 001000 00010001101
10819 std::string
NMD::MTHC0(uint64 instruction
)
10821 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10822 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10823 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10825 std::string rt
= GPR(copy(rt_value
));
10826 std::string c0s
= CPR(copy(c0s_value
));
10827 std::string sel
= IMMEDIATE(copy(sel_value
));
10829 return img::format("MTHC0 %s, %s, %s", rt
, c0s
, sel
);
10834 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10837 * 10987654321098765432109876543210
10838 * 001000 00010001101
10843 std::string
NMD::MTHC1(uint64 instruction
)
10845 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10846 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
10848 std::string rt
= GPR(copy(rt_value
));
10849 std::string fs
= FPR(copy(fs_value
));
10851 return img::format("MTHC1 %s, %s", rt
, fs
);
10856 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10859 * 10987654321098765432109876543210
10860 * 001000 00010001101
10865 std::string
NMD::MTHC2(uint64 instruction
)
10867 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10868 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10870 std::string rt
= GPR(copy(rt_value
));
10871 std::string cs
= CPR(copy(cs_value
));
10873 return img::format("MTHC2 %s, %s", rt
, cs
);
10878 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10881 * 10987654321098765432109876543210
10882 * 001000 00010001101
10887 std::string
NMD::MTHGC0(uint64 instruction
)
10889 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10890 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10891 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10893 std::string rt
= GPR(copy(rt_value
));
10894 std::string c0s
= CPR(copy(c0s_value
));
10895 std::string sel
= IMMEDIATE(copy(sel_value
));
10897 return img::format("MTHGC0 %s, %s, %s", rt
, c0s
, 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::MTHI_DSP_(uint64 instruction
)
10913 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10914 uint64 ac_value
= extract_ac_13_12(instruction
);
10916 std::string rs
= GPR(copy(rs_value
));
10917 std::string ac
= AC(copy(ac_value
));
10919 return img::format("MTHI %s, %s", rs
, ac
);
10924 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10927 * 10987654321098765432109876543210
10928 * 001000 00010001101
10933 std::string
NMD::MTHLIP(uint64 instruction
)
10935 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10936 uint64 ac_value
= extract_ac_13_12(instruction
);
10938 std::string rs
= GPR(copy(rs_value
));
10939 std::string ac
= AC(copy(ac_value
));
10941 return img::format("MTHLIP %s, %s", rs
, ac
);
10946 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10949 * 10987654321098765432109876543210
10950 * 001000 00010001101
10955 std::string
NMD::MTHTR(uint64 instruction
)
10957 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10958 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10959 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10960 uint64 u_value
= extract_u_10(instruction
);
10962 std::string rt
= GPR(copy(rt_value
));
10963 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10964 std::string u
= IMMEDIATE(copy(u_value
));
10965 std::string sel
= IMMEDIATE(copy(sel_value
));
10967 return img::format("MTHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10972 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10975 * 10987654321098765432109876543210
10976 * 001000 00010001101
10981 std::string
NMD::MTLO_DSP_(uint64 instruction
)
10983 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10984 uint64 ac_value
= extract_ac_13_12(instruction
);
10986 std::string rs
= GPR(copy(rs_value
));
10987 std::string ac
= AC(copy(ac_value
));
10989 return img::format("MTLO %s, %s", rs
, ac
);
10994 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10997 * 10987654321098765432109876543210
10998 * 001000 00010001101
11003 std::string
NMD::MTTR(uint64 instruction
)
11005 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11006 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
11007 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
11008 uint64 u_value
= extract_u_10(instruction
);
11010 std::string rt
= GPR(copy(rt_value
));
11011 std::string c0s
= IMMEDIATE(copy(c0s_value
));
11012 std::string u
= IMMEDIATE(copy(u_value
));
11013 std::string sel
= IMMEDIATE(copy(sel_value
));
11015 return img::format("MTTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
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::MUH(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("MUH %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::MUHU(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("MUHU %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_32_(uint64 instruction
)
11079 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11080 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11081 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11083 std::string rd
= GPR(copy(rd_value
));
11084 std::string rs
= GPR(copy(rs_value
));
11085 std::string rt
= GPR(copy(rt_value
));
11087 return img::format("MUL %s, %s, %s", rd
, rs
, rt
);
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::MUL_4X4_(uint64 instruction
)
11103 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
11104 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
11106 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
11107 std::string rt4
= GPR(decode_gpr_gpr4(rt4_value
));
11109 return img::format("MUL %s, %s", rs4
, rt4
);
11114 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11117 * 10987654321098765432109876543210
11118 * 001000 00010001101
11123 std::string
NMD::MUL_D(uint64 instruction
)
11125 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11126 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11127 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
11129 std::string fd
= FPR(copy(fd_value
));
11130 std::string fs
= FPR(copy(fs_value
));
11131 std::string ft
= FPR(copy(ft_value
));
11133 return img::format("MUL.D %s, %s, %s", fd
, fs
, ft
);
11138 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11141 * 10987654321098765432109876543210
11142 * 001000 00010001101
11147 std::string
NMD::MUL_PH(uint64 instruction
)
11149 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11150 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11151 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11153 std::string rd
= GPR(copy(rd_value
));
11154 std::string rs
= GPR(copy(rs_value
));
11155 std::string rt
= GPR(copy(rt_value
));
11157 return img::format("MUL.PH %s, %s, %s", rd
, rs
, rt
);
11162 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11165 * 10987654321098765432109876543210
11166 * 001000 00010001101
11171 std::string
NMD::MUL_S_PH(uint64 instruction
)
11173 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11174 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11175 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11177 std::string rd
= GPR(copy(rd_value
));
11178 std::string rs
= GPR(copy(rs_value
));
11179 std::string rt
= GPR(copy(rt_value
));
11181 return img::format("MUL_S.PH %s, %s, %s", rd
, rs
, rt
);
11186 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11189 * 10987654321098765432109876543210
11190 * 001000 00010001101
11195 std::string
NMD::MUL_S(uint64 instruction
)
11197 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11198 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11199 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
11201 std::string fd
= FPR(copy(fd_value
));
11202 std::string fs
= FPR(copy(fs_value
));
11203 std::string ft
= FPR(copy(ft_value
));
11205 return img::format("MUL.S %s, %s, %s", fd
, fs
, ft
);
11210 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11213 * 10987654321098765432109876543210
11214 * 001000 00010001101
11219 std::string
NMD::MULEQ_S_W_PHL(uint64 instruction
)
11221 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11222 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11223 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11225 std::string rd
= GPR(copy(rd_value
));
11226 std::string rs
= GPR(copy(rs_value
));
11227 std::string rt
= GPR(copy(rt_value
));
11229 return img::format("MULEQ_S.W.PHL %s, %s, %s", rd
, rs
, rt
);
11234 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11237 * 10987654321098765432109876543210
11238 * 001000 00010001101
11243 std::string
NMD::MULEQ_S_W_PHR(uint64 instruction
)
11245 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11246 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11247 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11249 std::string rd
= GPR(copy(rd_value
));
11250 std::string rs
= GPR(copy(rs_value
));
11251 std::string rt
= GPR(copy(rt_value
));
11253 return img::format("MULEQ_S.W.PHR %s, %s, %s", rd
, rs
, rt
);
11258 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11261 * 10987654321098765432109876543210
11262 * 001000 00010001101
11267 std::string
NMD::MULEU_S_PH_QBL(uint64 instruction
)
11269 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11270 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11271 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11273 std::string rd
= GPR(copy(rd_value
));
11274 std::string rs
= GPR(copy(rs_value
));
11275 std::string rt
= GPR(copy(rt_value
));
11277 return img::format("MULEU_S.PH.QBL %s, %s, %s", rd
, rs
, rt
);
11282 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11285 * 10987654321098765432109876543210
11286 * 001000 00010001101
11291 std::string
NMD::MULEU_S_PH_QBR(uint64 instruction
)
11293 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11294 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11295 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11297 std::string rd
= GPR(copy(rd_value
));
11298 std::string rs
= GPR(copy(rs_value
));
11299 std::string rt
= GPR(copy(rt_value
));
11301 return img::format("MULEU_S.PH.QBR %s, %s, %s", rd
, rs
, rt
);
11306 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11309 * 10987654321098765432109876543210
11310 * 001000 00010001101
11315 std::string
NMD::MULQ_RS_PH(uint64 instruction
)
11317 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11318 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11319 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11321 std::string rd
= GPR(copy(rd_value
));
11322 std::string rs
= GPR(copy(rs_value
));
11323 std::string rt
= GPR(copy(rt_value
));
11325 return img::format("MULQ_RS.PH %s, %s, %s", rd
, rs
, rt
);
11330 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11333 * 10987654321098765432109876543210
11334 * 001000 00010001101
11339 std::string
NMD::MULQ_RS_W(uint64 instruction
)
11341 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11342 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11343 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11345 std::string rd
= GPR(copy(rd_value
));
11346 std::string rs
= GPR(copy(rs_value
));
11347 std::string rt
= GPR(copy(rt_value
));
11349 return img::format("MULQ_RS.W %s, %s, %s", rd
, rs
, rt
);
11354 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11357 * 10987654321098765432109876543210
11358 * 001000 00010001101
11363 std::string
NMD::MULQ_S_PH(uint64 instruction
)
11365 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11366 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11367 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11369 std::string rd
= GPR(copy(rd_value
));
11370 std::string rs
= GPR(copy(rs_value
));
11371 std::string rt
= GPR(copy(rt_value
));
11373 return img::format("MULQ_S.PH %s, %s, %s", rd
, rs
, rt
);
11378 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11381 * 10987654321098765432109876543210
11382 * 001000 00010001101
11387 std::string
NMD::MULQ_S_W(uint64 instruction
)
11389 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11390 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11391 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11393 std::string rd
= GPR(copy(rd_value
));
11394 std::string rs
= GPR(copy(rs_value
));
11395 std::string rt
= GPR(copy(rt_value
));
11397 return img::format("MULQ_S.W %s, %s, %s", rd
, rs
, rt
);
11402 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11405 * 10987654321098765432109876543210
11406 * 001000 00010001101
11411 std::string
NMD::MULSA_W_PH(uint64 instruction
)
11413 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11414 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11415 uint64 ac_value
= extract_ac_13_12(instruction
);
11417 std::string ac
= AC(copy(ac_value
));
11418 std::string rs
= GPR(copy(rs_value
));
11419 std::string rt
= GPR(copy(rt_value
));
11421 return img::format("MULSA.W.PH %s, %s, %s", ac
, rs
, rt
);
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::MULSAQ_S_W_PH(uint64 instruction
)
11437 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11438 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11439 uint64 ac_value
= extract_ac_13_12(instruction
);
11441 std::string ac
= AC(copy(ac_value
));
11442 std::string rs
= GPR(copy(rs_value
));
11443 std::string rt
= GPR(copy(rt_value
));
11445 return img::format("MULSAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
11450 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11453 * 10987654321098765432109876543210
11454 * 001000 00010001101
11459 std::string
NMD::MULT_DSP_(uint64 instruction
)
11461 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11462 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11463 uint64 ac_value
= extract_ac_13_12(instruction
);
11465 std::string ac
= AC(copy(ac_value
));
11466 std::string rs
= GPR(copy(rs_value
));
11467 std::string rt
= GPR(copy(rt_value
));
11469 return img::format("MULT %s, %s, %s", ac
, rs
, rt
);
11474 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11477 * 10987654321098765432109876543210
11478 * 001000 00010001101
11483 std::string
NMD::MULTU_DSP_(uint64 instruction
)
11485 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11486 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11487 uint64 ac_value
= extract_ac_13_12(instruction
);
11489 std::string ac
= AC(copy(ac_value
));
11490 std::string rs
= GPR(copy(rs_value
));
11491 std::string rt
= GPR(copy(rt_value
));
11493 return img::format("MULTU %s, %s, %s", ac
, rs
, rt
);
11498 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11501 * 10987654321098765432109876543210
11502 * 001000 00010001101
11507 std::string
NMD::MULU(uint64 instruction
)
11509 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11510 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11511 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11513 std::string rd
= GPR(copy(rd_value
));
11514 std::string rs
= GPR(copy(rs_value
));
11515 std::string rt
= GPR(copy(rt_value
));
11517 return img::format("MULU %s, %s, %s", rd
, rs
, rt
);
11522 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11525 * 10987654321098765432109876543210
11526 * 001000 00010001101
11531 std::string
NMD::NEG_D(uint64 instruction
)
11533 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11534 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11536 std::string ft
= FPR(copy(ft_value
));
11537 std::string fs
= FPR(copy(fs_value
));
11539 return img::format("NEG.D %s, %s", ft
, fs
);
11544 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11547 * 10987654321098765432109876543210
11548 * 001000 00010001101
11553 std::string
NMD::NEG_S(uint64 instruction
)
11555 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
11556 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
11558 std::string ft
= FPR(copy(ft_value
));
11559 std::string fs
= FPR(copy(fs_value
));
11561 return img::format("NEG.S %s, %s", ft
, fs
);
11566 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11569 * 10987654321098765432109876543210
11570 * 001000 00010001101
11575 std::string
NMD::NOP_16_(uint64 instruction
)
11584 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11587 * 10987654321098765432109876543210
11588 * 001000 00010001101
11593 std::string
NMD::NOP_32_(uint64 instruction
)
11602 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11605 * 10987654321098765432109876543210
11606 * 001000 00010001101
11611 std::string
NMD::NOR(uint64 instruction
)
11613 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11614 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11615 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11617 std::string rd
= GPR(copy(rd_value
));
11618 std::string rs
= GPR(copy(rs_value
));
11619 std::string rt
= GPR(copy(rt_value
));
11621 return img::format("NOR %s, %s, %s", rd
, rs
, rt
);
11626 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11629 * 10987654321098765432109876543210
11630 * 001000 00010001101
11635 std::string
NMD::NOT_16_(uint64 instruction
)
11637 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11638 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11640 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
11641 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
11643 return img::format("NOT %s, %s", rt3
, rs3
);
11648 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11651 * 10987654321098765432109876543210
11652 * 001000 00010001101
11657 std::string
NMD::OR_16_(uint64 instruction
)
11659 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11660 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11662 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
11663 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
11665 return img::format("OR %s, %s", rs3
, rt3
);
11670 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11673 * 10987654321098765432109876543210
11674 * 001000 00010001101
11679 std::string
NMD::OR_32_(uint64 instruction
)
11681 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11682 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11683 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11685 std::string rd
= GPR(copy(rd_value
));
11686 std::string rs
= GPR(copy(rs_value
));
11687 std::string rt
= GPR(copy(rt_value
));
11689 return img::format("OR %s, %s, %s", rd
, rs
, rt
);
11694 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11697 * 10987654321098765432109876543210
11698 * 001000 00010001101
11703 std::string
NMD::ORI(uint64 instruction
)
11705 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11706 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11707 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
11709 std::string rt
= GPR(copy(rt_value
));
11710 std::string rs
= GPR(copy(rs_value
));
11711 std::string u
= IMMEDIATE(copy(u_value
));
11713 return img::format("ORI %s, %s, %s", rt
, rs
, u
);
11718 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11721 * 10987654321098765432109876543210
11722 * 001000 00010001101
11727 std::string
NMD::PACKRL_PH(uint64 instruction
)
11729 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11730 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11731 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11733 std::string rd
= GPR(copy(rd_value
));
11734 std::string rs
= GPR(copy(rs_value
));
11735 std::string rt
= GPR(copy(rt_value
));
11737 return img::format("PACKRL.PH %s, %s, %s", rd
, rs
, rt
);
11742 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11745 * 10987654321098765432109876543210
11746 * 001000 00010001101
11751 std::string
NMD::PAUSE(uint64 instruction
)
11760 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11763 * 10987654321098765432109876543210
11764 * 001000 00010001101
11769 std::string
NMD::PICK_PH(uint64 instruction
)
11771 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11772 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11773 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11775 std::string rd
= GPR(copy(rd_value
));
11776 std::string rs
= GPR(copy(rs_value
));
11777 std::string rt
= GPR(copy(rt_value
));
11779 return img::format("PICK.PH %s, %s, %s", rd
, rs
, rt
);
11784 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11787 * 10987654321098765432109876543210
11788 * 001000 00010001101
11793 std::string
NMD::PICK_QB(uint64 instruction
)
11795 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11796 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11797 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
11799 std::string rd
= GPR(copy(rd_value
));
11800 std::string rs
= GPR(copy(rs_value
));
11801 std::string rt
= GPR(copy(rt_value
));
11803 return img::format("PICK.QB %s, %s, %s", rd
, rs
, rt
);
11808 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11811 * 10987654321098765432109876543210
11812 * 001000 00010001101
11817 std::string
NMD::PRECEQ_W_PHL(uint64 instruction
)
11819 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11820 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11822 std::string rt
= GPR(copy(rt_value
));
11823 std::string rs
= GPR(copy(rs_value
));
11825 return img::format("PRECEQ.W.PHL %s, %s", rt
, rs
);
11830 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11833 * 10987654321098765432109876543210
11834 * 001000 00010001101
11839 std::string
NMD::PRECEQ_W_PHR(uint64 instruction
)
11841 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11842 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11844 std::string rt
= GPR(copy(rt_value
));
11845 std::string rs
= GPR(copy(rs_value
));
11847 return img::format("PRECEQ.W.PHR %s, %s", rt
, rs
);
11852 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11855 * 10987654321098765432109876543210
11856 * 001000 00010001101
11861 std::string
NMD::PRECEQU_PH_QBLA(uint64 instruction
)
11863 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11864 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11866 std::string rt
= GPR(copy(rt_value
));
11867 std::string rs
= GPR(copy(rs_value
));
11869 return img::format("PRECEQU.PH.QBLA %s, %s", rt
, rs
);
11874 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11877 * 10987654321098765432109876543210
11878 * 001000 00010001101
11883 std::string
NMD::PRECEQU_PH_QBL(uint64 instruction
)
11885 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11886 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11888 std::string rt
= GPR(copy(rt_value
));
11889 std::string rs
= GPR(copy(rs_value
));
11891 return img::format("PRECEQU.PH.QBL %s, %s", rt
, rs
);
11896 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11899 * 10987654321098765432109876543210
11900 * 001000 00010001101
11905 std::string
NMD::PRECEQU_PH_QBRA(uint64 instruction
)
11907 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11908 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11910 std::string rt
= GPR(copy(rt_value
));
11911 std::string rs
= GPR(copy(rs_value
));
11913 return img::format("PRECEQU.PH.QBRA %s, %s", rt
, rs
);
11918 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11921 * 10987654321098765432109876543210
11922 * 001000 00010001101
11927 std::string
NMD::PRECEQU_PH_QBR(uint64 instruction
)
11929 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11930 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11932 std::string rt
= GPR(copy(rt_value
));
11933 std::string rs
= GPR(copy(rs_value
));
11935 return img::format("PRECEQU.PH.QBR %s, %s", rt
, rs
);
11940 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11943 * 10987654321098765432109876543210
11944 * 001000 00010001101
11949 std::string
NMD::PRECEU_PH_QBLA(uint64 instruction
)
11951 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11952 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11954 std::string rt
= GPR(copy(rt_value
));
11955 std::string rs
= GPR(copy(rs_value
));
11957 return img::format("PRECEU.PH.QBLA %s, %s", rt
, rs
);
11962 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11965 * 10987654321098765432109876543210
11966 * 001000 00010001101
11971 std::string
NMD::PRECEU_PH_QBL(uint64 instruction
)
11973 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11974 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11976 std::string rt
= GPR(copy(rt_value
));
11977 std::string rs
= GPR(copy(rs_value
));
11979 return img::format("PRECEU.PH.QBL %s, %s", rt
, rs
);
11984 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11987 * 10987654321098765432109876543210
11988 * 001000 00010001101
11993 std::string
NMD::PRECEU_PH_QBRA(uint64 instruction
)
11995 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11996 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11998 std::string rt
= GPR(copy(rt_value
));
11999 std::string rs
= GPR(copy(rs_value
));
12001 return img::format("PRECEU.PH.QBRA %s, %s", rt
, rs
);
12006 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12009 * 10987654321098765432109876543210
12010 * 001000 00010001101
12015 std::string
NMD::PRECEU_PH_QBR(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
);
12020 std::string rt
= GPR(copy(rt_value
));
12021 std::string rs
= GPR(copy(rs_value
));
12023 return img::format("PRECEU.PH.QBR %s, %s", rt
, rs
);
12028 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12031 * 10987654321098765432109876543210
12032 * 001000 00010001101
12037 std::string
NMD::PRECR_QB_PH(uint64 instruction
)
12039 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12040 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12041 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12043 std::string rd
= GPR(copy(rd_value
));
12044 std::string rs
= GPR(copy(rs_value
));
12045 std::string rt
= GPR(copy(rt_value
));
12047 return img::format("PRECR.QB.PH %s, %s, %s", rd
, rs
, rt
);
12055 * 10987654321098765432109876543210
12056 * 001000 x1110000101
12061 std::string
NMD::PRECR_SRA_PH_W(uint64 instruction
)
12063 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12064 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12065 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12067 std::string rt
= GPR(copy(rt_value
));
12068 std::string rs
= GPR(copy(rs_value
));
12069 std::string sa
= IMMEDIATE(copy(sa_value
));
12071 return img::format("PRECR_SRA.PH.W %s, %s, %s", rt
, rs
, sa
);
12079 * 10987654321098765432109876543210
12080 * 001000 x1110000101
12085 std::string
NMD::PRECR_SRA_R_PH_W(uint64 instruction
)
12087 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12088 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12089 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12091 std::string rt
= GPR(copy(rt_value
));
12092 std::string rs
= GPR(copy(rs_value
));
12093 std::string sa
= IMMEDIATE(copy(sa_value
));
12095 return img::format("PRECR_SRA_R.PH.W %s, %s, %s", rt
, rs
, sa
);
12103 * 10987654321098765432109876543210
12104 * 001000 x1110000101
12109 std::string
NMD::PRECRQ_PH_W(uint64 instruction
)
12111 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12112 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12113 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12115 std::string rd
= GPR(copy(rd_value
));
12116 std::string rs
= GPR(copy(rs_value
));
12117 std::string rt
= GPR(copy(rt_value
));
12119 return img::format("PRECRQ.PH.W %s, %s, %s", rd
, rs
, rt
);
12127 * 10987654321098765432109876543210
12128 * 001000 x1110000101
12133 std::string
NMD::PRECRQ_QB_PH(uint64 instruction
)
12135 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12136 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12137 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12139 std::string rd
= GPR(copy(rd_value
));
12140 std::string rs
= GPR(copy(rs_value
));
12141 std::string rt
= GPR(copy(rt_value
));
12143 return img::format("PRECRQ.QB.PH %s, %s, %s", rd
, rs
, rt
);
12151 * 10987654321098765432109876543210
12152 * 001000 x1110000101
12157 std::string
NMD::PRECRQ_RS_PH_W(uint64 instruction
)
12159 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12160 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12161 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12163 std::string rd
= GPR(copy(rd_value
));
12164 std::string rs
= GPR(copy(rs_value
));
12165 std::string rt
= GPR(copy(rt_value
));
12167 return img::format("PRECRQ_RS.PH.W %s, %s, %s", rd
, rs
, rt
);
12175 * 10987654321098765432109876543210
12176 * 001000 x1110000101
12181 std::string
NMD::PRECRQU_S_QB_PH(uint64 instruction
)
12183 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12184 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12185 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12187 std::string rd
= GPR(copy(rd_value
));
12188 std::string rs
= GPR(copy(rs_value
));
12189 std::string rt
= GPR(copy(rt_value
));
12191 return img::format("PRECRQU_S.QB.PH %s, %s, %s", rd
, rs
, rt
);
12199 * 10987654321098765432109876543210
12200 * 001000 x1110000101
12205 std::string
NMD::PREF_S9_(uint64 instruction
)
12207 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12208 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12209 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12211 std::string hint
= IMMEDIATE(copy(hint_value
));
12212 std::string s
= IMMEDIATE(copy(s_value
));
12213 std::string rs
= GPR(copy(rs_value
));
12215 return img::format("PREF %s, %s(%s)", hint
, s
, rs
);
12223 * 10987654321098765432109876543210
12224 * 001000 x1110000101
12229 std::string
NMD::PREF_U12_(uint64 instruction
)
12231 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12232 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12233 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
12235 std::string hint
= IMMEDIATE(copy(hint_value
));
12236 std::string u
= IMMEDIATE(copy(u_value
));
12237 std::string rs
= GPR(copy(rs_value
));
12239 return img::format("PREF %s, %s(%s)", hint
, u
, rs
);
12247 * 10987654321098765432109876543210
12248 * 001000 x1110000101
12253 std::string
NMD::PREFE(uint64 instruction
)
12255 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12256 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12257 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12259 std::string hint
= IMMEDIATE(copy(hint_value
));
12260 std::string s
= IMMEDIATE(copy(s_value
));
12261 std::string rs
= GPR(copy(rs_value
));
12263 return img::format("PREFE %s, %s(%s)", hint
, s
, rs
);
12271 * 10987654321098765432109876543210
12272 * 001000 x1110000101
12277 std::string
NMD::PREPEND(uint64 instruction
)
12279 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12280 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12281 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12283 std::string rt
= GPR(copy(rt_value
));
12284 std::string rs
= GPR(copy(rs_value
));
12285 std::string sa
= IMMEDIATE(copy(sa_value
));
12287 return img::format("PREPEND %s, %s, %s", rt
, rs
, sa
);
12295 * 10987654321098765432109876543210
12296 * 001000 x1110000101
12301 std::string
NMD::RADDU_W_QB(uint64 instruction
)
12303 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12304 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12306 std::string rt
= GPR(copy(rt_value
));
12307 std::string rs
= GPR(copy(rs_value
));
12309 return img::format("RADDU.W.QB %s, %s", rt
, rs
);
12317 * 10987654321098765432109876543210
12318 * 001000 x1110000101
12323 std::string
NMD::RDDSP(uint64 instruction
)
12325 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12326 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
12328 std::string rt
= GPR(copy(rt_value
));
12329 std::string mask
= IMMEDIATE(copy(mask_value
));
12331 return img::format("RDDSP %s, %s", rt
, mask
);
12339 * 10987654321098765432109876543210
12340 * 001000 x1110000101
12345 std::string
NMD::RDHWR(uint64 instruction
)
12347 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12348 uint64 hs_value
= extract_hs_20_19_18_17_16(instruction
);
12349 uint64 sel_value
= extract_sel_13_12_11(instruction
);
12351 std::string rt
= GPR(copy(rt_value
));
12352 std::string hs
= CPR(copy(hs_value
));
12353 std::string sel
= IMMEDIATE(copy(sel_value
));
12355 return img::format("RDHWR %s, %s, %s", rt
, hs
, sel
);
12363 * 10987654321098765432109876543210
12364 * 001000 x1110000101
12369 std::string
NMD::RDPGPR(uint64 instruction
)
12371 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12372 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12374 std::string rt
= GPR(copy(rt_value
));
12375 std::string rs
= GPR(copy(rs_value
));
12377 return img::format("RDPGPR %s, %s", rt
, rs
);
12385 * 10987654321098765432109876543210
12386 * 001000 x1110000101
12391 std::string
NMD::RECIP_D(uint64 instruction
)
12393 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12394 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12396 std::string ft
= FPR(copy(ft_value
));
12397 std::string fs
= FPR(copy(fs_value
));
12399 return img::format("RECIP.D %s, %s", ft
, fs
);
12407 * 10987654321098765432109876543210
12408 * 001000 x1110000101
12413 std::string
NMD::RECIP_S(uint64 instruction
)
12415 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12416 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12418 std::string ft
= FPR(copy(ft_value
));
12419 std::string fs
= FPR(copy(fs_value
));
12421 return img::format("RECIP.S %s, %s", ft
, fs
);
12429 * 10987654321098765432109876543210
12430 * 001000 x1110000101
12435 std::string
NMD::REPL_PH(uint64 instruction
)
12437 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12438 int64 s_value
= extract_s__se9_20_19_18_17_16_15_14_13_12_11(instruction
);
12440 std::string rt
= GPR(copy(rt_value
));
12441 std::string s
= IMMEDIATE(copy(s_value
));
12443 return img::format("REPL.PH %s, %s", rt
, s
);
12451 * 10987654321098765432109876543210
12452 * 001000 x1110000101
12457 std::string
NMD::REPL_QB(uint64 instruction
)
12459 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12460 uint64 u_value
= extract_u_20_19_18_17_16_15_14_13(instruction
);
12462 std::string rt
= GPR(copy(rt_value
));
12463 std::string u
= IMMEDIATE(copy(u_value
));
12465 return img::format("REPL.QB %s, %s", rt
, u
);
12473 * 10987654321098765432109876543210
12474 * 001000 x1110000101
12479 std::string
NMD::REPLV_PH(uint64 instruction
)
12481 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12482 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12484 std::string rt
= GPR(copy(rt_value
));
12485 std::string rs
= GPR(copy(rs_value
));
12487 return img::format("REPLV.PH %s, %s", rt
, rs
);
12495 * 10987654321098765432109876543210
12496 * 001000 x1110000101
12501 std::string
NMD::REPLV_QB(uint64 instruction
)
12503 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12504 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12506 std::string rt
= GPR(copy(rt_value
));
12507 std::string rs
= GPR(copy(rs_value
));
12509 return img::format("REPLV.QB %s, %s", rt
, rs
);
12517 * 10987654321098765432109876543210
12518 * 001000 x1110000101
12523 std::string
NMD::RESTORE_32_(uint64 instruction
)
12525 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12526 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12527 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12528 uint64 gp_value
= extract_gp_2(instruction
);
12530 std::string u
= IMMEDIATE(copy(u_value
));
12531 return img::format("RESTORE %s%s", u
,
12532 save_restore_list(rt_value
, count_value
, gp_value
));
12540 * 10987654321098765432109876543210
12541 * 001000 x1110000101
12546 std::string
NMD::RESTORE_JRC_16_(uint64 instruction
)
12548 uint64 rt1_value
= extract_rtl_11(instruction
);
12549 uint64 u_value
= extract_u_7_6_5_4__s4(instruction
);
12550 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12552 std::string u
= IMMEDIATE(copy(u_value
));
12553 return img::format("RESTORE.JRC %s%s", u
,
12554 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12562 * 10987654321098765432109876543210
12563 * 001000 x1110000101
12568 std::string
NMD::RESTORE_JRC_32_(uint64 instruction
)
12570 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12571 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12572 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12573 uint64 gp_value
= extract_gp_2(instruction
);
12575 std::string u
= IMMEDIATE(copy(u_value
));
12576 return img::format("RESTORE.JRC %s%s", u
,
12577 save_restore_list(rt_value
, count_value
, gp_value
));
12585 * 10987654321098765432109876543210
12586 * 001000 x1110000101
12591 std::string
NMD::RESTOREF(uint64 instruction
)
12593 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12594 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12596 std::string u
= IMMEDIATE(copy(u_value
));
12597 std::string count
= IMMEDIATE(copy(count_value
));
12599 return img::format("RESTOREF %s, %s", u
, count
);
12607 * 10987654321098765432109876543210
12608 * 001000 x1110000101
12613 std::string
NMD::RINT_D(uint64 instruction
)
12615 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12616 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12618 std::string ft
= FPR(copy(ft_value
));
12619 std::string fs
= FPR(copy(fs_value
));
12621 return img::format("RINT.D %s, %s", ft
, fs
);
12629 * 10987654321098765432109876543210
12630 * 001000 x1110000101
12635 std::string
NMD::RINT_S(uint64 instruction
)
12637 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12638 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12640 std::string ft
= FPR(copy(ft_value
));
12641 std::string fs
= FPR(copy(fs_value
));
12643 return img::format("RINT.S %s, %s", ft
, fs
);
12651 * 10987654321098765432109876543210
12652 * 001000 x1110000101
12657 std::string
NMD::ROTR(uint64 instruction
)
12659 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12661 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12663 std::string rt
= GPR(copy(rt_value
));
12664 std::string rs
= GPR(copy(rs_value
));
12665 std::string shift
= IMMEDIATE(copy(shift_value
));
12667 return img::format("ROTR %s, %s, %s", rt
, rs
, shift
);
12675 * 10987654321098765432109876543210
12676 * 001000 x1110000101
12681 std::string
NMD::ROTRV(uint64 instruction
)
12683 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12684 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12685 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
12687 std::string rd
= GPR(copy(rd_value
));
12688 std::string rs
= GPR(copy(rs_value
));
12689 std::string rt
= GPR(copy(rt_value
));
12691 return img::format("ROTRV %s, %s, %s", rd
, rs
, rt
);
12699 * 10987654321098765432109876543210
12700 * 001000 x1110000101
12705 std::string
NMD::ROTX(uint64 instruction
)
12707 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12708 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12709 uint64 shiftx_value
= extract_shiftx_10_9_8_7__s1(instruction
);
12710 uint64 stripe_value
= extract_stripe_6(instruction
);
12711 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12713 std::string rt
= GPR(copy(rt_value
));
12714 std::string rs
= GPR(copy(rs_value
));
12715 std::string shift
= IMMEDIATE(copy(shift_value
));
12716 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
12717 std::string stripe
= IMMEDIATE(copy(stripe_value
));
12719 return img::format("ROTX %s, %s, %s, %s, %s",
12720 rt
, rs
, shift
, shiftx
, stripe
);
12728 * 10987654321098765432109876543210
12729 * 001000 x1110000101
12734 std::string
NMD::ROUND_L_D(uint64 instruction
)
12736 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12737 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12739 std::string ft
= FPR(copy(ft_value
));
12740 std::string fs
= FPR(copy(fs_value
));
12742 return img::format("ROUND.L.D %s, %s", ft
, fs
);
12750 * 10987654321098765432109876543210
12751 * 001000 x1110000101
12756 std::string
NMD::ROUND_L_S(uint64 instruction
)
12758 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12759 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12761 std::string ft
= FPR(copy(ft_value
));
12762 std::string fs
= FPR(copy(fs_value
));
12764 return img::format("ROUND.L.S %s, %s", ft
, fs
);
12772 * 10987654321098765432109876543210
12773 * 001000 x1110000101
12778 std::string
NMD::ROUND_W_D(uint64 instruction
)
12780 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12781 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12783 std::string ft
= FPR(copy(ft_value
));
12784 std::string fs
= FPR(copy(fs_value
));
12786 return img::format("ROUND.W.D %s, %s", ft
, fs
);
12794 * 10987654321098765432109876543210
12795 * 001000 x1110000101
12800 std::string
NMD::ROUND_W_S(uint64 instruction
)
12802 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12803 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12805 std::string ft
= FPR(copy(ft_value
));
12806 std::string fs
= FPR(copy(fs_value
));
12808 return img::format("ROUND.W.S %s, %s", ft
, fs
);
12816 * 10987654321098765432109876543210
12817 * 001000 x1110000101
12822 std::string
NMD::RSQRT_D(uint64 instruction
)
12824 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12825 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12827 std::string ft
= FPR(copy(ft_value
));
12828 std::string fs
= FPR(copy(fs_value
));
12830 return img::format("RSQRT.D %s, %s", ft
, fs
);
12838 * 10987654321098765432109876543210
12839 * 001000 x1110000101
12844 std::string
NMD::RSQRT_S(uint64 instruction
)
12846 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
12847 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
12849 std::string ft
= FPR(copy(ft_value
));
12850 std::string fs
= FPR(copy(fs_value
));
12852 return img::format("RSQRT.S %s, %s", ft
, fs
);
12860 * 10987654321098765432109876543210
12861 * 001000 01001001101
12866 std::string
NMD::SAVE_16_(uint64 instruction
)
12868 uint64 rt1_value
= extract_rtl_11(instruction
);
12869 uint64 u_value
= extract_u_7_6_5_4__s4(instruction
);
12870 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12872 std::string u
= IMMEDIATE(copy(u_value
));
12873 return img::format("SAVE %s%s", u
,
12874 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12882 * 10987654321098765432109876543210
12883 * 001000 01001001101
12888 std::string
NMD::SAVE_32_(uint64 instruction
)
12890 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12891 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12892 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12893 uint64 gp_value
= extract_gp_2(instruction
);
12895 std::string u
= IMMEDIATE(copy(u_value
));
12896 return img::format("SAVE %s%s", u
,
12897 save_restore_list(rt_value
, count_value
, gp_value
));
12905 * 10987654321098765432109876543210
12906 * 001000 01001001101
12911 std::string
NMD::SAVEF(uint64 instruction
)
12913 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12914 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3__s3(instruction
);
12916 std::string u
= IMMEDIATE(copy(u_value
));
12917 std::string count
= IMMEDIATE(copy(count_value
));
12919 return img::format("SAVEF %s, %s", u
, count
);
12927 * 10987654321098765432109876543210
12928 * 001000 01001001101
12933 std::string
NMD::SB_16_(uint64 instruction
)
12935 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
12936 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
12937 uint64 u_value
= extract_u_1_0(instruction
);
12939 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
12940 std::string u
= IMMEDIATE(copy(u_value
));
12941 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
12943 return img::format("SB %s, %s(%s)", rtz3
, u
, rs3
);
12951 * 10987654321098765432109876543210
12952 * 001000 01001001101
12957 std::string
NMD::SB_GP_(uint64 instruction
)
12959 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12960 uint64 u_value
= extract_u_17_to_0(instruction
);
12962 std::string rt
= GPR(copy(rt_value
));
12963 std::string u
= IMMEDIATE(copy(u_value
));
12965 return img::format("SB %s, %s($%d)", rt
, u
, 28);
12973 * 10987654321098765432109876543210
12974 * 001000 01001001101
12979 std::string
NMD::SB_S9_(uint64 instruction
)
12981 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12982 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12983 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
12985 std::string rt
= GPR(copy(rt_value
));
12986 std::string s
= IMMEDIATE(copy(s_value
));
12987 std::string rs
= GPR(copy(rs_value
));
12989 return img::format("SB %s, %s(%s)", rt
, s
, rs
);
12997 * 10987654321098765432109876543210
12998 * 001000 01001001101
13003 std::string
NMD::SB_U12_(uint64 instruction
)
13005 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13006 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13007 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13009 std::string rt
= GPR(copy(rt_value
));
13010 std::string u
= IMMEDIATE(copy(u_value
));
13011 std::string rs
= GPR(copy(rs_value
));
13013 return img::format("SB %s, %s(%s)", rt
, u
, rs
);
13021 * 10987654321098765432109876543210
13022 * 001000 01001001101
13027 std::string
NMD::SBE(uint64 instruction
)
13029 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13030 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13031 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13033 std::string rt
= GPR(copy(rt_value
));
13034 std::string s
= IMMEDIATE(copy(s_value
));
13035 std::string rs
= GPR(copy(rs_value
));
13037 return img::format("SBE %s, %s(%s)", rt
, s
, rs
);
13045 * 10987654321098765432109876543210
13046 * 001000 01001001101
13051 std::string
NMD::SBX(uint64 instruction
)
13053 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13054 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13055 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13057 std::string rd
= GPR(copy(rd_value
));
13058 std::string rs
= GPR(copy(rs_value
));
13059 std::string rt
= GPR(copy(rt_value
));
13061 return img::format("SBX %s, %s(%s)", rd
, rs
, rt
);
13069 * 10987654321098765432109876543210
13070 * 001000 01001001101
13075 std::string
NMD::SC(uint64 instruction
)
13077 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13078 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13079 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
13081 std::string rt
= GPR(copy(rt_value
));
13082 std::string s
= IMMEDIATE(copy(s_value
));
13083 std::string rs
= GPR(copy(rs_value
));
13085 return img::format("SC %s, %s(%s)", rt
, s
, rs
);
13093 * 10987654321098765432109876543210
13094 * 001000 01001001101
13099 std::string
NMD::SCD(uint64 instruction
)
13101 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13102 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13103 int64 s_value
= extract_s__se8_15_7_6_5_4_3_s3(instruction
);
13105 std::string rt
= GPR(copy(rt_value
));
13106 std::string s
= IMMEDIATE(copy(s_value
));
13107 std::string rs
= GPR(copy(rs_value
));
13109 return img::format("SCD %s, %s(%s)", rt
, s
, rs
);
13117 * 10987654321098765432109876543210
13118 * 001000 01001001101
13123 std::string
NMD::SCDP(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 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13129 std::string rt
= GPR(copy(rt_value
));
13130 std::string ru
= GPR(copy(ru_value
));
13131 std::string rs
= GPR(copy(rs_value
));
13133 return img::format("SCDP %s, %s, (%s)", rt
, ru
, rs
);
13141 * 10987654321098765432109876543210
13142 * 001000 01001001101
13147 std::string
NMD::SCE(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 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_s2(instruction
);
13153 std::string rt
= GPR(copy(rt_value
));
13154 std::string s
= IMMEDIATE(copy(s_value
));
13155 std::string rs
= GPR(copy(rs_value
));
13157 return img::format("SCE %s, %s(%s)", rt
, s
, rs
);
13165 * 10987654321098765432109876543210
13166 * 001000 01001001101
13171 std::string
NMD::SCWP(uint64 instruction
)
13173 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13174 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13175 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13177 std::string rt
= GPR(copy(rt_value
));
13178 std::string ru
= GPR(copy(ru_value
));
13179 std::string rs
= GPR(copy(rs_value
));
13181 return img::format("SCWP %s, %s, (%s)", rt
, ru
, rs
);
13189 * 10987654321098765432109876543210
13190 * 001000 01001001101
13195 std::string
NMD::SCWPE(uint64 instruction
)
13197 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13198 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13199 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13201 std::string rt
= GPR(copy(rt_value
));
13202 std::string ru
= GPR(copy(ru_value
));
13203 std::string rs
= GPR(copy(rs_value
));
13205 return img::format("SCWPE %s, %s, (%s)", rt
, ru
, rs
);
13213 * 10987654321098765432109876543210
13214 * 001000 01001001101
13219 std::string
NMD::SD_GP_(uint64 instruction
)
13221 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13222 uint64 u_value
= extract_u_20_to_3__s3(instruction
);
13224 std::string rt
= GPR(copy(rt_value
));
13225 std::string u
= IMMEDIATE(copy(u_value
));
13227 return img::format("SD %s, %s($%d)", rt
, u
, 28);
13235 * 10987654321098765432109876543210
13236 * 001000 01001001101
13241 std::string
NMD::SD_S9_(uint64 instruction
)
13243 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13244 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13245 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13247 std::string rt
= GPR(copy(rt_value
));
13248 std::string s
= IMMEDIATE(copy(s_value
));
13249 std::string rs
= GPR(copy(rs_value
));
13251 return img::format("SD %s, %s(%s)", rt
, s
, rs
);
13259 * 10987654321098765432109876543210
13260 * 001000 01001001101
13265 std::string
NMD::SD_U12_(uint64 instruction
)
13267 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13268 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13269 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13271 std::string rt
= GPR(copy(rt_value
));
13272 std::string u
= IMMEDIATE(copy(u_value
));
13273 std::string rs
= GPR(copy(rs_value
));
13275 return img::format("SD %s, %s(%s)", rt
, u
, rs
);
13283 * 10987654321098765432109876543210
13284 * 001000 01001001101
13289 std::string
NMD::SDBBP_16_(uint64 instruction
)
13291 uint64 code_value
= extract_code_2_1_0(instruction
);
13293 std::string code
= IMMEDIATE(copy(code_value
));
13295 return img::format("SDBBP %s", code
);
13303 * 10987654321098765432109876543210
13304 * 001000 01001001101
13309 std::string
NMD::SDBBP_32_(uint64 instruction
)
13311 uint64 code_value
= extract_code_18_to_0(instruction
);
13313 std::string code
= IMMEDIATE(copy(code_value
));
13315 return img::format("SDBBP %s", code
);
13323 * 10987654321098765432109876543210
13324 * 001000 01001001101
13329 std::string
NMD::SDC1_GP_(uint64 instruction
)
13331 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13332 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
13334 std::string ft
= FPR(copy(ft_value
));
13335 std::string u
= IMMEDIATE(copy(u_value
));
13337 return img::format("SDC1 %s, %s($%d)", ft
, u
, 28);
13345 * 10987654321098765432109876543210
13346 * 001000 01001001101
13351 std::string
NMD::SDC1_S9_(uint64 instruction
)
13353 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13354 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13355 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13357 std::string ft
= FPR(copy(ft_value
));
13358 std::string s
= IMMEDIATE(copy(s_value
));
13359 std::string rs
= GPR(copy(rs_value
));
13361 return img::format("SDC1 %s, %s(%s)", ft
, s
, rs
);
13369 * 10987654321098765432109876543210
13370 * 001000 01001001101
13375 std::string
NMD::SDC1_U12_(uint64 instruction
)
13377 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13378 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13379 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13381 std::string ft
= FPR(copy(ft_value
));
13382 std::string u
= IMMEDIATE(copy(u_value
));
13383 std::string rs
= GPR(copy(rs_value
));
13385 return img::format("SDC1 %s, %s(%s)", ft
, u
, rs
);
13393 * 10987654321098765432109876543210
13394 * 001000 01001001101
13399 std::string
NMD::SDC1X(uint64 instruction
)
13401 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13402 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13403 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13405 std::string ft
= FPR(copy(ft_value
));
13406 std::string rs
= GPR(copy(rs_value
));
13407 std::string rt
= GPR(copy(rt_value
));
13409 return img::format("SDC1X %s, %s(%s)", ft
, rs
, rt
);
13417 * 10987654321098765432109876543210
13418 * 001000 01001001101
13423 std::string
NMD::SDC1XS(uint64 instruction
)
13425 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13426 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13427 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13429 std::string ft
= FPR(copy(ft_value
));
13430 std::string rs
= GPR(copy(rs_value
));
13431 std::string rt
= GPR(copy(rt_value
));
13433 return img::format("SDC1XS %s, %s(%s)", ft
, rs
, rt
);
13441 * 10987654321098765432109876543210
13442 * 001000 01001001101
13447 std::string
NMD::SDC2(uint64 instruction
)
13449 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
13450 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13451 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13453 std::string cs
= CPR(copy(cs_value
));
13454 std::string s
= IMMEDIATE(copy(s_value
));
13455 std::string rs
= GPR(copy(rs_value
));
13457 return img::format("SDC2 %s, %s(%s)", cs
, s
, rs
);
13465 * 10987654321098765432109876543210
13466 * 001000 01001001101
13471 std::string
NMD::SDM(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
);
13475 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13476 uint64 count3_value
= extract_count3_14_13_12(instruction
);
13478 std::string rt
= GPR(copy(rt_value
));
13479 std::string s
= IMMEDIATE(copy(s_value
));
13480 std::string rs
= GPR(copy(rs_value
));
13481 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
13483 return img::format("SDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
13491 * 10987654321098765432109876543210
13492 * 001000 01001001101
13497 std::string
NMD::SDPC_48_(uint64 instruction
)
13499 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
13500 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
13502 std::string rt
= GPR(copy(rt_value
));
13503 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
13505 return img::format("SDPC %s, %s", rt
, s
);
13513 * 10987654321098765432109876543210
13514 * 001000 01001001101
13519 std::string
NMD::SDXS(uint64 instruction
)
13521 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13522 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13523 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13525 std::string rd
= GPR(copy(rd_value
));
13526 std::string rs
= GPR(copy(rs_value
));
13527 std::string rt
= GPR(copy(rt_value
));
13529 return img::format("SDXS %s, %s(%s)", rd
, rs
, rt
);
13537 * 10987654321098765432109876543210
13538 * 001000 01001001101
13543 std::string
NMD::SDX(uint64 instruction
)
13545 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13546 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13547 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
13549 std::string rd
= GPR(copy(rd_value
));
13550 std::string rs
= GPR(copy(rs_value
));
13551 std::string rt
= GPR(copy(rt_value
));
13553 return img::format("SDX %s, %s(%s)", rd
, rs
, rt
);
13561 * 10987654321098765432109876543210
13562 * 001000 01001001101
13567 std::string
NMD::SEB(uint64 instruction
)
13569 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13570 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13572 std::string rt
= GPR(copy(rt_value
));
13573 std::string rs
= GPR(copy(rs_value
));
13575 return img::format("SEB %s, %s", rt
, rs
);
13583 * 10987654321098765432109876543210
13584 * 001000 01001001101
13589 std::string
NMD::SEH(uint64 instruction
)
13591 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13592 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13594 std::string rt
= GPR(copy(rt_value
));
13595 std::string rs
= GPR(copy(rs_value
));
13597 return img::format("SEH %s, %s", rt
, rs
);
13605 * 10987654321098765432109876543210
13606 * 001000 01001001101
13611 std::string
NMD::SEL_D(uint64 instruction
)
13613 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13614 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13615 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13617 std::string fd
= FPR(copy(fd_value
));
13618 std::string fs
= FPR(copy(fs_value
));
13619 std::string ft
= FPR(copy(ft_value
));
13621 return img::format("SEL.D %s, %s, %s", fd
, fs
, ft
);
13629 * 10987654321098765432109876543210
13630 * 001000 01001001101
13635 std::string
NMD::SEL_S(uint64 instruction
)
13637 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13638 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13639 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13641 std::string fd
= FPR(copy(fd_value
));
13642 std::string fs
= FPR(copy(fs_value
));
13643 std::string ft
= FPR(copy(ft_value
));
13645 return img::format("SEL.S %s, %s, %s", fd
, fs
, ft
);
13653 * 10987654321098765432109876543210
13654 * 001000 01001001101
13659 std::string
NMD::SELEQZ_D(uint64 instruction
)
13661 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13662 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13663 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13665 std::string fd
= FPR(copy(fd_value
));
13666 std::string fs
= FPR(copy(fs_value
));
13667 std::string ft
= FPR(copy(ft_value
));
13669 return img::format("SELEQZ.D %s, %s, %s", fd
, fs
, ft
);
13677 * 10987654321098765432109876543210
13678 * 001000 01001001101
13683 std::string
NMD::SELEQZ_S(uint64 instruction
)
13685 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13686 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13687 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13689 std::string fd
= FPR(copy(fd_value
));
13690 std::string fs
= FPR(copy(fs_value
));
13691 std::string ft
= FPR(copy(ft_value
));
13693 return img::format("SELEQZ.S %s, %s, %s", fd
, fs
, ft
);
13701 * 10987654321098765432109876543210
13702 * 001000 01001001101
13707 std::string
NMD::SELNEZ_D(uint64 instruction
)
13709 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13710 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13711 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13713 std::string fd
= FPR(copy(fd_value
));
13714 std::string fs
= FPR(copy(fs_value
));
13715 std::string ft
= FPR(copy(ft_value
));
13717 return img::format("SELNEZ.D %s, %s, %s", fd
, fs
, ft
);
13725 * 10987654321098765432109876543210
13726 * 001000 01001001101
13731 std::string
NMD::SELNEZ_S(uint64 instruction
)
13733 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
13734 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
13735 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
13737 std::string fd
= FPR(copy(fd_value
));
13738 std::string fs
= FPR(copy(fs_value
));
13739 std::string ft
= FPR(copy(ft_value
));
13741 return img::format("SELNEZ.S %s, %s, %s", fd
, fs
, ft
);
13749 * 10987654321098765432109876543210
13750 * 001000 01001001101
13755 std::string
NMD::SEQI(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 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13761 std::string rt
= GPR(copy(rt_value
));
13762 std::string rs
= GPR(copy(rs_value
));
13763 std::string u
= IMMEDIATE(copy(u_value
));
13765 return img::format("SEQI %s, %s, %s", rt
, rs
, u
);
13773 * 10987654321098765432109876543210
13774 * 001000 01001001101
13779 std::string
NMD::SH_16_(uint64 instruction
)
13781 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
13782 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
13783 uint64 u_value
= extract_u_2_1__s1(instruction
);
13785 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
13786 std::string u
= IMMEDIATE(copy(u_value
));
13787 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
13789 return img::format("SH %s, %s(%s)", rtz3
, u
, rs3
);
13797 * 10987654321098765432109876543210
13798 * 001000 01001001101
13803 std::string
NMD::SH_GP_(uint64 instruction
)
13805 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13806 uint64 u_value
= extract_u_17_to_1__s1(instruction
);
13808 std::string rt
= GPR(copy(rt_value
));
13809 std::string u
= IMMEDIATE(copy(u_value
));
13811 return img::format("SH %s, %s($%d)", rt
, u
, 28);
13819 * 10987654321098765432109876543210
13820 * 001000 01001001101
13825 std::string
NMD::SH_S9_(uint64 instruction
)
13827 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13828 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13829 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13831 std::string rt
= GPR(copy(rt_value
));
13832 std::string s
= IMMEDIATE(copy(s_value
));
13833 std::string rs
= GPR(copy(rs_value
));
13835 return img::format("SH %s, %s(%s)", rt
, s
, rs
);
13843 * 10987654321098765432109876543210
13844 * 001000 01001001101
13849 std::string
NMD::SH_U12_(uint64 instruction
)
13851 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13852 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13853 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13855 std::string rt
= GPR(copy(rt_value
));
13856 std::string u
= IMMEDIATE(copy(u_value
));
13857 std::string rs
= GPR(copy(rs_value
));
13859 return img::format("SH %s, %s(%s)", rt
, u
, rs
);
13867 * 10987654321098765432109876543210
13868 * 001000 01001001101
13873 std::string
NMD::SHE(uint64 instruction
)
13875 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13876 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13877 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
13879 std::string rt
= GPR(copy(rt_value
));
13880 std::string s
= IMMEDIATE(copy(s_value
));
13881 std::string rs
= GPR(copy(rs_value
));
13883 return img::format("SHE %s, %s(%s)", rt
, s
, rs
);
13888 * SHILO ac, shift - Shift an Accumulator Value Leaving the Result in the Same
13892 * 10987654321098765432109876543210
13893 * 001000xxxx xxxx0000011101
13897 std::string
NMD::SHILO(uint64 instruction
)
13899 int64 shift_value
= extract_shift__se5_21_20_19_18_17_16(instruction
);
13900 uint64 ac_value
= extract_ac_13_12(instruction
);
13902 std::string shift
= IMMEDIATE(copy(shift_value
));
13903 std::string ac
= AC(copy(ac_value
));
13905 return img::format("SHILO %s, %s", ac
, shift
);
13910 * SHILOV ac, rs - Variable Shift of Accumulator Value Leaving the Result in
13911 * the Same Accumulator
13914 * 10987654321098765432109876543210
13915 * 001000xxxxx 01001001111111
13919 std::string
NMD::SHILOV(uint64 instruction
)
13921 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13922 uint64 ac_value
= extract_ac_13_12(instruction
);
13924 std::string rs
= GPR(copy(rs_value
));
13925 std::string ac
= AC(copy(ac_value
));
13927 return img::format("SHILOV %s, %s", ac
, rs
);
13932 * SHLL.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords
13935 * 10987654321098765432109876543210
13936 * 001000 001110110101
13941 std::string
NMD::SHLL_PH(uint64 instruction
)
13943 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13944 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13945 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
13947 std::string rt
= GPR(copy(rt_value
));
13948 std::string rs
= GPR(copy(rs_value
));
13949 std::string sa
= IMMEDIATE(copy(sa_value
));
13951 return img::format("SHLL.PH %s, %s, %s", rt
, rs
, sa
);
13956 * SHLL.QB rt, rs, sa - Shift Left Logical Vector Quad Bytes
13959 * 10987654321098765432109876543210
13960 * 001000 0100001111111
13965 std::string
NMD::SHLL_QB(uint64 instruction
)
13967 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13968 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13969 uint64 sa_value
= extract_sa_15_14_13(instruction
);
13971 std::string rt
= GPR(copy(rt_value
));
13972 std::string rs
= GPR(copy(rs_value
));
13973 std::string sa
= IMMEDIATE(copy(sa_value
));
13975 return img::format("SHLL.QB %s, %s, %s", rt
, rs
, sa
);
13980 * SHLL_S.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords (saturated)
13983 * 10987654321098765432109876543210
13984 * 001000 001110110101
13989 std::string
NMD::SHLL_S_PH(uint64 instruction
)
13991 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13992 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13993 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
13995 std::string rt
= GPR(copy(rt_value
));
13996 std::string rs
= GPR(copy(rs_value
));
13997 std::string sa
= IMMEDIATE(copy(sa_value
));
13999 return img::format("SHLL_S.PH %s, %s, %s", rt
, rs
, sa
);
14007 * 10987654321098765432109876543210
14008 * 001000 01001001101
14013 std::string
NMD::SHLL_S_W(uint64 instruction
)
14015 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14016 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14017 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
14019 std::string rt
= GPR(copy(rt_value
));
14020 std::string rs
= GPR(copy(rs_value
));
14021 std::string sa
= IMMEDIATE(copy(sa_value
));
14023 return img::format("SHLL_S.W %s, %s, %s", rt
, rs
, sa
);
14031 * 10987654321098765432109876543210
14032 * 001000 01001001101
14037 std::string
NMD::SHLLV_PH(uint64 instruction
)
14039 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14040 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14041 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14043 std::string rd
= GPR(copy(rd_value
));
14044 std::string rt
= GPR(copy(rt_value
));
14045 std::string rs
= GPR(copy(rs_value
));
14047 return img::format("SHLLV.PH %s, %s, %s", rd
, rt
, rs
);
14055 * 10987654321098765432109876543210
14056 * 001000 01001001101
14061 std::string
NMD::SHLLV_QB(uint64 instruction
)
14063 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14064 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14065 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14067 std::string rd
= GPR(copy(rd_value
));
14068 std::string rt
= GPR(copy(rt_value
));
14069 std::string rs
= GPR(copy(rs_value
));
14071 return img::format("SHLLV.QB %s, %s, %s", rd
, rt
, rs
);
14079 * 10987654321098765432109876543210
14080 * 001000 01001001101
14085 std::string
NMD::SHLLV_S_PH(uint64 instruction
)
14087 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14088 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14089 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14091 std::string rd
= GPR(copy(rd_value
));
14092 std::string rt
= GPR(copy(rt_value
));
14093 std::string rs
= GPR(copy(rs_value
));
14095 return img::format("SHLLV_S.PH %s, %s, %s", rd
, rt
, rs
);
14103 * 10987654321098765432109876543210
14104 * 001000 01001001101
14109 std::string
NMD::SHLLV_S_W(uint64 instruction
)
14111 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14112 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14113 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14115 std::string rd
= GPR(copy(rd_value
));
14116 std::string rt
= GPR(copy(rt_value
));
14117 std::string rs
= GPR(copy(rs_value
));
14119 return img::format("SHLLV_S.W %s, %s, %s", rd
, rt
, rs
);
14127 * 10987654321098765432109876543210
14128 * 001000 01001001101
14133 std::string
NMD::SHRA_PH(uint64 instruction
)
14135 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14136 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14137 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14139 std::string rt
= GPR(copy(rt_value
));
14140 std::string rs
= GPR(copy(rs_value
));
14141 std::string sa
= IMMEDIATE(copy(sa_value
));
14143 return img::format("SHRA.PH %s, %s, %s", rt
, rs
, sa
);
14151 * 10987654321098765432109876543210
14152 * 001000 01001001101
14157 std::string
NMD::SHRA_QB(uint64 instruction
)
14159 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14160 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14161 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14163 std::string rt
= GPR(copy(rt_value
));
14164 std::string rs
= GPR(copy(rs_value
));
14165 std::string sa
= IMMEDIATE(copy(sa_value
));
14167 return img::format("SHRA.QB %s, %s, %s", rt
, rs
, sa
);
14175 * 10987654321098765432109876543210
14176 * 001000 01001001101
14181 std::string
NMD::SHRA_R_PH(uint64 instruction
)
14183 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14184 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14185 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14187 std::string rt
= GPR(copy(rt_value
));
14188 std::string rs
= GPR(copy(rs_value
));
14189 std::string sa
= IMMEDIATE(copy(sa_value
));
14191 return img::format("SHRA_R.PH %s, %s, %s", rt
, rs
, sa
);
14199 * 10987654321098765432109876543210
14200 * 001000 01001001101
14205 std::string
NMD::SHRA_R_QB(uint64 instruction
)
14207 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14208 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14209 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14211 std::string rt
= GPR(copy(rt_value
));
14212 std::string rs
= GPR(copy(rs_value
));
14213 std::string sa
= IMMEDIATE(copy(sa_value
));
14215 return img::format("SHRA_R.QB %s, %s, %s", rt
, rs
, sa
);
14223 * 10987654321098765432109876543210
14224 * 001000 01001001101
14229 std::string
NMD::SHRA_R_W(uint64 instruction
)
14231 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14232 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14233 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
14235 std::string rt
= GPR(copy(rt_value
));
14236 std::string rs
= GPR(copy(rs_value
));
14237 std::string sa
= IMMEDIATE(copy(sa_value
));
14239 return img::format("SHRA_R.W %s, %s, %s", rt
, rs
, sa
);
14247 * 10987654321098765432109876543210
14248 * 001000 01001001101
14253 std::string
NMD::SHRAV_PH(uint64 instruction
)
14255 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14256 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14257 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14259 std::string rd
= GPR(copy(rd_value
));
14260 std::string rt
= GPR(copy(rt_value
));
14261 std::string rs
= GPR(copy(rs_value
));
14263 return img::format("SHRAV.PH %s, %s, %s", rd
, rt
, rs
);
14271 * 10987654321098765432109876543210
14272 * 001000 01001001101
14277 std::string
NMD::SHRAV_QB(uint64 instruction
)
14279 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14280 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14281 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14283 std::string rd
= GPR(copy(rd_value
));
14284 std::string rt
= GPR(copy(rt_value
));
14285 std::string rs
= GPR(copy(rs_value
));
14287 return img::format("SHRAV.QB %s, %s, %s", rd
, rt
, rs
);
14295 * 10987654321098765432109876543210
14296 * 001000 01001001101
14301 std::string
NMD::SHRAV_R_PH(uint64 instruction
)
14303 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14304 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14305 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14307 std::string rd
= GPR(copy(rd_value
));
14308 std::string rt
= GPR(copy(rt_value
));
14309 std::string rs
= GPR(copy(rs_value
));
14311 return img::format("SHRAV_R.PH %s, %s, %s", rd
, rt
, rs
);
14319 * 10987654321098765432109876543210
14320 * 001000 01001001101
14325 std::string
NMD::SHRAV_R_QB(uint64 instruction
)
14327 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14328 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14329 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14331 std::string rd
= GPR(copy(rd_value
));
14332 std::string rt
= GPR(copy(rt_value
));
14333 std::string rs
= GPR(copy(rs_value
));
14335 return img::format("SHRAV_R.QB %s, %s, %s", rd
, rt
, rs
);
14343 * 10987654321098765432109876543210
14344 * 001000 01001001101
14349 std::string
NMD::SHRAV_R_W(uint64 instruction
)
14351 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14352 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14353 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14355 std::string rd
= GPR(copy(rd_value
));
14356 std::string rt
= GPR(copy(rt_value
));
14357 std::string rs
= GPR(copy(rs_value
));
14359 return img::format("SHRAV_R.W %s, %s, %s", rd
, rt
, rs
);
14367 * 10987654321098765432109876543210
14368 * 001000 01001001101
14373 std::string
NMD::SHRL_PH(uint64 instruction
)
14375 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14376 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14377 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14379 std::string rt
= GPR(copy(rt_value
));
14380 std::string rs
= GPR(copy(rs_value
));
14381 std::string sa
= IMMEDIATE(copy(sa_value
));
14383 return img::format("SHRL.PH %s, %s, %s", rt
, rs
, sa
);
14391 * 10987654321098765432109876543210
14392 * 001000 01001001101
14397 std::string
NMD::SHRL_QB(uint64 instruction
)
14399 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14400 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14401 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14403 std::string rt
= GPR(copy(rt_value
));
14404 std::string rs
= GPR(copy(rs_value
));
14405 std::string sa
= IMMEDIATE(copy(sa_value
));
14407 return img::format("SHRL.QB %s, %s, %s", rt
, rs
, sa
);
14415 * 10987654321098765432109876543210
14416 * 001000 01001001101
14421 std::string
NMD::SHRLV_PH(uint64 instruction
)
14423 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14424 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14425 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14427 std::string rd
= GPR(copy(rd_value
));
14428 std::string rt
= GPR(copy(rt_value
));
14429 std::string rs
= GPR(copy(rs_value
));
14431 return img::format("SHRLV.PH %s, %s, %s", rd
, rt
, rs
);
14439 * 10987654321098765432109876543210
14440 * 001000 01001001101
14445 std::string
NMD::SHRLV_QB(uint64 instruction
)
14447 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14448 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14449 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14451 std::string rd
= GPR(copy(rd_value
));
14452 std::string rt
= GPR(copy(rt_value
));
14453 std::string rs
= GPR(copy(rs_value
));
14455 return img::format("SHRLV.QB %s, %s, %s", rd
, rt
, rs
);
14463 * 10987654321098765432109876543210
14464 * 001000 01001001101
14469 std::string
NMD::SHX(uint64 instruction
)
14471 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14472 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14473 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14475 std::string rd
= GPR(copy(rd_value
));
14476 std::string rs
= GPR(copy(rs_value
));
14477 std::string rt
= GPR(copy(rt_value
));
14479 return img::format("SHX %s, %s(%s)", rd
, rs
, rt
);
14487 * 10987654321098765432109876543210
14488 * 001000 01001001101
14493 std::string
NMD::SHXS(uint64 instruction
)
14495 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14496 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14497 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14499 std::string rd
= GPR(copy(rd_value
));
14500 std::string rs
= GPR(copy(rs_value
));
14501 std::string rt
= GPR(copy(rt_value
));
14503 return img::format("SHXS %s, %s(%s)", rd
, rs
, rt
);
14511 * 10987654321098765432109876543210
14512 * 001000 01001001101
14517 std::string
NMD::SIGRIE(uint64 instruction
)
14519 uint64 code_value
= extract_code_18_to_0(instruction
);
14521 std::string code
= IMMEDIATE(copy(code_value
));
14523 return img::format("SIGRIE %s", code
);
14531 * 10987654321098765432109876543210
14532 * 001000 01001001101
14537 std::string
NMD::SLL_16_(uint64 instruction
)
14539 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14540 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14541 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14543 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
14544 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
14545 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14547 return img::format("SLL %s, %s, %s", rt3
, rs3
, shift3
);
14555 * 10987654321098765432109876543210
14556 * 001000 01001001101
14561 std::string
NMD::SLL_32_(uint64 instruction
)
14563 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14565 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14567 std::string rt
= GPR(copy(rt_value
));
14568 std::string rs
= GPR(copy(rs_value
));
14569 std::string shift
= IMMEDIATE(copy(shift_value
));
14571 return img::format("SLL %s, %s, %s", rt
, rs
, shift
);
14579 * 10987654321098765432109876543210
14580 * 001000 01001001101
14585 std::string
NMD::SLLV(uint64 instruction
)
14587 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14589 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14591 std::string rd
= GPR(copy(rd_value
));
14592 std::string rs
= GPR(copy(rs_value
));
14593 std::string rt
= GPR(copy(rt_value
));
14595 return img::format("SLLV %s, %s, %s", rd
, rs
, rt
);
14603 * 10987654321098765432109876543210
14604 * 001000 01001001101
14609 std::string
NMD::SLT(uint64 instruction
)
14611 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14612 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14613 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14615 std::string rd
= GPR(copy(rd_value
));
14616 std::string rs
= GPR(copy(rs_value
));
14617 std::string rt
= GPR(copy(rt_value
));
14619 return img::format("SLT %s, %s, %s", rd
, rs
, rt
);
14627 * 10987654321098765432109876543210
14628 * 001000 01001001101
14633 std::string
NMD::SLTI(uint64 instruction
)
14635 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14636 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14637 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14639 std::string rt
= GPR(copy(rt_value
));
14640 std::string rs
= GPR(copy(rs_value
));
14641 std::string u
= IMMEDIATE(copy(u_value
));
14643 return img::format("SLTI %s, %s, %s", rt
, rs
, u
);
14651 * 10987654321098765432109876543210
14652 * 001000 01001001101
14657 std::string
NMD::SLTIU(uint64 instruction
)
14659 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14661 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14663 std::string rt
= GPR(copy(rt_value
));
14664 std::string rs
= GPR(copy(rs_value
));
14665 std::string u
= IMMEDIATE(copy(u_value
));
14667 return img::format("SLTIU %s, %s, %s", rt
, rs
, u
);
14675 * 10987654321098765432109876543210
14676 * 001000 01001001101
14681 std::string
NMD::SLTU(uint64 instruction
)
14683 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14684 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14685 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14687 std::string rd
= GPR(copy(rd_value
));
14688 std::string rs
= GPR(copy(rs_value
));
14689 std::string rt
= GPR(copy(rt_value
));
14691 return img::format("SLTU %s, %s, %s", rd
, rs
, rt
);
14699 * 10987654321098765432109876543210
14700 * 001000 01001001101
14705 std::string
NMD::SOV(uint64 instruction
)
14707 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14708 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14709 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14711 std::string rd
= GPR(copy(rd_value
));
14712 std::string rs
= GPR(copy(rs_value
));
14713 std::string rt
= GPR(copy(rt_value
));
14715 return img::format("SOV %s, %s, %s", rd
, rs
, rt
);
14723 * 10987654321098765432109876543210
14724 * 001000 01001001101
14729 std::string
NMD::SPECIAL2(uint64 instruction
)
14731 uint64 op_value
= extract_op_25_to_3(instruction
);
14733 std::string op
= IMMEDIATE(copy(op_value
));
14735 return img::format("SPECIAL2 %s", op
);
14743 * 10987654321098765432109876543210
14744 * 001000 01001001101
14749 std::string
NMD::SQRT_D(uint64 instruction
)
14751 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14752 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14754 std::string ft
= FPR(copy(ft_value
));
14755 std::string fs
= FPR(copy(fs_value
));
14757 return img::format("SQRT.D %s, %s", ft
, fs
);
14765 * 10987654321098765432109876543210
14766 * 001000 01001001101
14771 std::string
NMD::SQRT_S(uint64 instruction
)
14773 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14774 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14776 std::string ft
= FPR(copy(ft_value
));
14777 std::string fs
= FPR(copy(fs_value
));
14779 return img::format("SQRT.S %s, %s", ft
, fs
);
14784 * SRA rd, rt, sa - Shift Word Right Arithmetic
14787 * 10987654321098765432109876543210
14788 * 00000000000 000011
14793 std::string
NMD::SRA(uint64 instruction
)
14795 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14796 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14797 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14799 std::string rt
= GPR(copy(rt_value
));
14800 std::string rs
= GPR(copy(rs_value
));
14801 std::string shift
= IMMEDIATE(copy(shift_value
));
14803 return img::format("SRA %s, %s, %s", rt
, rs
, shift
);
14808 * SRAV rd, rt, rs - Shift Word Right Arithmetic Variable
14811 * 10987654321098765432109876543210
14812 * 001000 00000000111
14817 std::string
NMD::SRAV(uint64 instruction
)
14819 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14820 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14821 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14823 std::string rd
= GPR(copy(rd_value
));
14824 std::string rs
= GPR(copy(rs_value
));
14825 std::string rt
= GPR(copy(rt_value
));
14827 return img::format("SRAV %s, %s, %s", rd
, rs
, rt
);
14835 * 10987654321098765432109876543210
14836 * 001000 00000000111
14841 std::string
NMD::SRL_16_(uint64 instruction
)
14843 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14844 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14845 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14847 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
14848 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
14849 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14851 return img::format("SRL %s, %s, %s", rt3
, rs3
, shift3
);
14859 * 10987654321098765432109876543210
14860 * 001000 01001001101
14865 std::string
NMD::SRL_32_(uint64 instruction
)
14867 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14868 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14869 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14871 std::string rt
= GPR(copy(rt_value
));
14872 std::string rs
= GPR(copy(rs_value
));
14873 std::string shift
= IMMEDIATE(copy(shift_value
));
14875 return img::format("SRL %s, %s, %s", rt
, rs
, shift
);
14883 * 10987654321098765432109876543210
14884 * 001000 01001001101
14889 std::string
NMD::SRLV(uint64 instruction
)
14891 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14892 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14893 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14895 std::string rd
= GPR(copy(rd_value
));
14896 std::string rs
= GPR(copy(rs_value
));
14897 std::string rt
= GPR(copy(rt_value
));
14899 return img::format("SRLV %s, %s, %s", rd
, rs
, rt
);
14907 * 10987654321098765432109876543210
14908 * 001000 01001001101
14913 std::string
NMD::SUB(uint64 instruction
)
14915 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14916 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14917 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14919 std::string rd
= GPR(copy(rd_value
));
14920 std::string rs
= GPR(copy(rs_value
));
14921 std::string rt
= GPR(copy(rt_value
));
14923 return img::format("SUB %s, %s, %s", rd
, rs
, rt
);
14931 * 10987654321098765432109876543210
14932 * 001000 01001001101
14937 std::string
NMD::SUB_D(uint64 instruction
)
14939 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14940 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14941 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
14943 std::string fd
= FPR(copy(fd_value
));
14944 std::string fs
= FPR(copy(fs_value
));
14945 std::string ft
= FPR(copy(ft_value
));
14947 return img::format("SUB.D %s, %s, %s", fd
, fs
, ft
);
14955 * 10987654321098765432109876543210
14956 * 001000 01001001101
14961 std::string
NMD::SUB_S(uint64 instruction
)
14963 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
14964 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
14965 uint64 fd_value
= extract_fd_15_14_13_12_11(instruction
);
14967 std::string fd
= FPR(copy(fd_value
));
14968 std::string fs
= FPR(copy(fs_value
));
14969 std::string ft
= FPR(copy(ft_value
));
14971 return img::format("SUB.S %s, %s, %s", fd
, fs
, ft
);
14979 * 10987654321098765432109876543210
14980 * 001000 01001001101
14985 std::string
NMD::SUBQ_PH(uint64 instruction
)
14987 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14988 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14989 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
14991 std::string rd
= GPR(copy(rd_value
));
14992 std::string rs
= GPR(copy(rs_value
));
14993 std::string rt
= GPR(copy(rt_value
));
14995 return img::format("SUBQ.PH %s, %s, %s", rd
, rs
, rt
);
15000 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15004 * 10987654321098765432109876543210
15005 * 001000 01001001101
15010 std::string
NMD::SUBQ_S_PH(uint64 instruction
)
15012 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15013 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15014 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15016 std::string rd
= GPR(copy(rd_value
));
15017 std::string rs
= GPR(copy(rs_value
));
15018 std::string rt
= GPR(copy(rt_value
));
15020 return img::format("SUBQ_S.PH %s, %s, %s", rd
, rs
, rt
);
15025 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15029 * 10987654321098765432109876543210
15030 * 001000 01001001101
15035 std::string
NMD::SUBQ_S_W(uint64 instruction
)
15037 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15038 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15039 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15041 std::string rd
= GPR(copy(rd_value
));
15042 std::string rs
= GPR(copy(rs_value
));
15043 std::string rt
= GPR(copy(rt_value
));
15045 return img::format("SUBQ_S.W %s, %s, %s", rd
, rs
, rt
);
15050 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15054 * 10987654321098765432109876543210
15055 * 001000 01001001101
15060 std::string
NMD::SUBQH_PH(uint64 instruction
)
15062 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15063 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15064 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15066 std::string rd
= GPR(copy(rd_value
));
15067 std::string rs
= GPR(copy(rs_value
));
15068 std::string rt
= GPR(copy(rt_value
));
15070 return img::format("SUBQH.PH %s, %s, %s", rd
, rs
, rt
);
15075 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15079 * 10987654321098765432109876543210
15080 * 001000 01001001101
15085 std::string
NMD::SUBQH_R_PH(uint64 instruction
)
15087 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15088 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15089 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15091 std::string rd
= GPR(copy(rd_value
));
15092 std::string rs
= GPR(copy(rs_value
));
15093 std::string rt
= GPR(copy(rt_value
));
15095 return img::format("SUBQH_R.PH %s, %s, %s", rd
, rs
, rt
);
15100 * SUBQH_R.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15101 * to Halve Results (rounding)
15104 * 10987654321098765432109876543210
15105 * 001000 11001001101
15110 std::string
NMD::SUBQH_R_W(uint64 instruction
)
15112 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15113 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15114 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15116 std::string rd
= GPR(copy(rd_value
));
15117 std::string rs
= GPR(copy(rs_value
));
15118 std::string rt
= GPR(copy(rt_value
));
15120 return img::format("SUBQH_R.W %s, %s, %s", rd
, rs
, rt
);
15125 * SUBQH.W rd, rs, rt - Subtract Fractional Words And Shift Right to Halve
15129 * 10987654321098765432109876543210
15130 * 001000 01010001101
15135 std::string
NMD::SUBQH_W(uint64 instruction
)
15137 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15138 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15139 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15141 std::string rd
= GPR(copy(rd_value
));
15142 std::string rs
= GPR(copy(rs_value
));
15143 std::string rt
= GPR(copy(rt_value
));
15145 return img::format("SUBQH.W %s, %s, %s", rd
, rs
, rt
);
15150 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15153 * 10987654321098765432109876543210
15154 * 001000 00010001101
15159 std::string
NMD::SUBU_16_(uint64 instruction
)
15161 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
15162 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15163 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
15165 std::string rd3
= GPR(decode_gpr_gpr3(rd3_value
));
15166 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
15167 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
15169 return img::format("SUBU %s, %s, %s", rd3
, rs3
, rt3
);
15174 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15177 * 10987654321098765432109876543210
15178 * 001000 00010001101
15183 std::string
NMD::SUBU_32_(uint64 instruction
)
15185 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15186 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15187 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15189 std::string rd
= GPR(copy(rd_value
));
15190 std::string rs
= GPR(copy(rs_value
));
15191 std::string rt
= GPR(copy(rt_value
));
15193 return img::format("SUBU %s, %s, %s", rd
, rs
, rt
);
15198 * SUBU.PH rd, rs, rt - Subtract Unsigned Integer Halfwords
15201 * 10987654321098765432109876543210
15202 * 001000 01100001101
15207 std::string
NMD::SUBU_PH(uint64 instruction
)
15209 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15210 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15211 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15213 std::string rd
= GPR(copy(rd_value
));
15214 std::string rs
= GPR(copy(rs_value
));
15215 std::string rt
= GPR(copy(rt_value
));
15217 return img::format("SUBU.PH %s, %s, %s", rd
, rs
, rt
);
15222 * SUBU.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector
15225 * 10987654321098765432109876543210
15226 * 001000 01011001101
15231 std::string
NMD::SUBU_QB(uint64 instruction
)
15233 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15234 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15235 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15237 std::string rd
= GPR(copy(rd_value
));
15238 std::string rs
= GPR(copy(rs_value
));
15239 std::string rt
= GPR(copy(rt_value
));
15241 return img::format("SUBU.QB %s, %s, %s", rd
, rs
, rt
);
15246 * SUBU_S.PH rd, rs, rt - Subtract Unsigned Integer Halfwords (saturating)
15249 * 10987654321098765432109876543210
15250 * 001000 11100001101
15255 std::string
NMD::SUBU_S_PH(uint64 instruction
)
15257 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15258 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15259 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15261 std::string rd
= GPR(copy(rd_value
));
15262 std::string rs
= GPR(copy(rs_value
));
15263 std::string rt
= GPR(copy(rt_value
));
15265 return img::format("SUBU_S.PH %s, %s, %s", rd
, rs
, rt
);
15270 * SUBU_S.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector (saturating)
15273 * 10987654321098765432109876543210
15274 * 001000 11011001101
15279 std::string
NMD::SUBU_S_QB(uint64 instruction
)
15281 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15282 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15283 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15285 std::string rd
= GPR(copy(rd_value
));
15286 std::string rs
= GPR(copy(rs_value
));
15287 std::string rt
= GPR(copy(rt_value
));
15289 return img::format("SUBU_S.QB %s, %s, %s", rd
, rs
, rt
);
15294 * SUBUH.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15298 * 10987654321098765432109876543210
15299 * 001000 01101001101
15304 std::string
NMD::SUBUH_QB(uint64 instruction
)
15306 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15307 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15308 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15310 std::string rd
= GPR(copy(rd_value
));
15311 std::string rs
= GPR(copy(rs_value
));
15312 std::string rt
= GPR(copy(rt_value
));
15314 return img::format("SUBUH.QB %s, %s, %s", rd
, rs
, rt
);
15319 * SUBUH_R.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15320 * Results (rounding)
15323 * 10987654321098765432109876543210
15324 * 001000 11101001101
15329 std::string
NMD::SUBUH_R_QB(uint64 instruction
)
15331 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15332 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15333 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15335 std::string rd
= GPR(copy(rd_value
));
15336 std::string rs
= GPR(copy(rs_value
));
15337 std::string rt
= GPR(copy(rt_value
));
15339 return img::format("SUBUH_R.QB %s, %s, %s", rd
, rs
, rt
);
15344 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15347 * 10987654321098765432109876543210
15348 * 001000 00010001101
15353 std::string
NMD::SW_16_(uint64 instruction
)
15355 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15356 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15357 uint64 u_value
= extract_u_3_2_1_0__s2(instruction
);
15359 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
15360 std::string u
= IMMEDIATE(copy(u_value
));
15361 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
15363 return img::format("SW %s, %s(%s)", rtz3
, u
, rs3
);
15368 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15371 * 10987654321098765432109876543210
15372 * 001000 00010001101
15377 std::string
NMD::SW_4X4_(uint64 instruction
)
15379 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
15380 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
15381 uint64 u_value
= extract_u_3_8__s2(instruction
);
15383 std::string rtz4
= GPR(decode_gpr_gpr4_zero(rtz4_value
));
15384 std::string u
= IMMEDIATE(copy(u_value
));
15385 std::string rs4
= GPR(decode_gpr_gpr4(rs4_value
));
15387 return img::format("SW %s, %s(%s)", rtz4
, u
, rs4
);
15392 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15395 * 10987654321098765432109876543210
15396 * 001000 00010001101
15401 std::string
NMD::SW_GP16_(uint64 instruction
)
15403 uint64 u_value
= extract_u_6_5_4_3_2_1_0__s2(instruction
);
15404 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15406 std::string rtz3
= GPR(decode_gpr_gpr3_src_store(rtz3_value
));
15407 std::string u
= IMMEDIATE(copy(u_value
));
15409 return img::format("SW %s, %s($%d)", rtz3
, u
, 28);
15414 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15417 * 10987654321098765432109876543210
15418 * 001000 00010001101
15423 std::string
NMD::SW_GP_(uint64 instruction
)
15425 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15426 uint64 u_value
= extract_u_20_to_2__s2(instruction
);
15428 std::string rt
= GPR(copy(rt_value
));
15429 std::string u
= IMMEDIATE(copy(u_value
));
15431 return img::format("SW %s, %s($%d)", rt
, u
, 28);
15436 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15439 * 10987654321098765432109876543210
15440 * 001000 00010001101
15445 std::string
NMD::SW_S9_(uint64 instruction
)
15447 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15448 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15449 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15451 std::string rt
= GPR(copy(rt_value
));
15452 std::string s
= IMMEDIATE(copy(s_value
));
15453 std::string rs
= GPR(copy(rs_value
));
15455 return img::format("SW %s, %s(%s)", rt
, s
, rs
);
15460 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15463 * 10987654321098765432109876543210
15464 * 001000 00010001101
15469 std::string
NMD::SW_SP_(uint64 instruction
)
15471 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
15472 uint64 u_value
= extract_u_4_3_2_1_0__s2(instruction
);
15474 std::string rt
= GPR(copy(rt_value
));
15475 std::string u
= IMMEDIATE(copy(u_value
));
15477 return img::format("SW %s, %s($%d)", rt
, u
, 29);
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::SW_U12_(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 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15497 std::string rt
= GPR(copy(rt_value
));
15498 std::string u
= IMMEDIATE(copy(u_value
));
15499 std::string rs
= GPR(copy(rs_value
));
15501 return img::format("SW %s, %s(%s)", rt
, u
, rs
);
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::SWC1_GP_(uint64 instruction
)
15517 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15518 uint64 u_value
= extract_u_17_to_2__s2(instruction
);
15520 std::string ft
= FPR(copy(ft_value
));
15521 std::string u
= IMMEDIATE(copy(u_value
));
15523 return img::format("SWC1 %s, %s($%d)", ft
, u
, 28);
15528 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15531 * 10987654321098765432109876543210
15532 * 001000 00010001101
15537 std::string
NMD::SWC1_S9_(uint64 instruction
)
15539 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15540 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15541 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15543 std::string ft
= FPR(copy(ft_value
));
15544 std::string s
= IMMEDIATE(copy(s_value
));
15545 std::string rs
= GPR(copy(rs_value
));
15547 return img::format("SWC1 %s, %s(%s)", ft
, s
, rs
);
15552 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15555 * 10987654321098765432109876543210
15556 * 001000 00010001101
15561 std::string
NMD::SWC1_U12_(uint64 instruction
)
15563 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
15564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15565 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15567 std::string ft
= FPR(copy(ft_value
));
15568 std::string u
= IMMEDIATE(copy(u_value
));
15569 std::string rs
= GPR(copy(rs_value
));
15571 return img::format("SWC1 %s, %s(%s)", ft
, u
, rs
);
15576 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15579 * 10987654321098765432109876543210
15580 * 001000 00010001101
15585 std::string
NMD::SWC1X(uint64 instruction
)
15587 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15589 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15591 std::string ft
= FPR(copy(ft_value
));
15592 std::string rs
= GPR(copy(rs_value
));
15593 std::string rt
= GPR(copy(rt_value
));
15595 return img::format("SWC1X %s, %s(%s)", ft
, rs
, rt
);
15600 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15603 * 10987654321098765432109876543210
15604 * 001000 00010001101
15609 std::string
NMD::SWC1XS(uint64 instruction
)
15611 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15612 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15613 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15615 std::string ft
= FPR(copy(ft_value
));
15616 std::string rs
= GPR(copy(rs_value
));
15617 std::string rt
= GPR(copy(rt_value
));
15619 return img::format("SWC1XS %s, %s(%s)", ft
, rs
, rt
);
15624 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15627 * 10987654321098765432109876543210
15628 * 001000 00010001101
15633 std::string
NMD::SWC2(uint64 instruction
)
15635 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
15636 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15637 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15639 std::string cs
= CPR(copy(cs_value
));
15640 std::string s
= IMMEDIATE(copy(s_value
));
15641 std::string rs
= GPR(copy(rs_value
));
15643 return img::format("SWC2 %s, %s(%s)", cs
, s
, rs
);
15648 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15651 * 10987654321098765432109876543210
15652 * 001000 00010001101
15657 std::string
NMD::SWE(uint64 instruction
)
15659 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15661 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15663 std::string rt
= GPR(copy(rt_value
));
15664 std::string s
= IMMEDIATE(copy(s_value
));
15665 std::string rs
= GPR(copy(rs_value
));
15667 return img::format("SWE %s, %s(%s)", rt
, s
, rs
);
15672 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15675 * 10987654321098765432109876543210
15676 * 001000 00010001101
15681 std::string
NMD::SWM(uint64 instruction
)
15683 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15684 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15685 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15686 uint64 count3_value
= extract_count3_14_13_12(instruction
);
15688 std::string rt
= GPR(copy(rt_value
));
15689 std::string s
= IMMEDIATE(copy(s_value
));
15690 std::string rs
= GPR(copy(rs_value
));
15691 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
15693 return img::format("SWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
15698 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15701 * 10987654321098765432109876543210
15702 * 001000 00010001101
15707 std::string
NMD::SWPC_48_(uint64 instruction
)
15709 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
15710 int64 s_value
= extract_s__se31_15_to_0_31_to_16(instruction
);
15712 std::string rt
= GPR(copy(rt_value
));
15713 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
15715 return img::format("SWPC %s, %s", rt
, s
);
15720 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15723 * 10987654321098765432109876543210
15724 * 001000 00010001101
15729 std::string
NMD::SWX(uint64 instruction
)
15731 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15732 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15733 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15735 std::string rd
= GPR(copy(rd_value
));
15736 std::string rs
= GPR(copy(rs_value
));
15737 std::string rt
= GPR(copy(rt_value
));
15739 return img::format("SWX %s, %s(%s)", rd
, rs
, rt
);
15744 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15747 * 10987654321098765432109876543210
15748 * 001000 00010001101
15753 std::string
NMD::SWXS(uint64 instruction
)
15755 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15756 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15757 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
15759 std::string rd
= GPR(copy(rd_value
));
15760 std::string rs
= GPR(copy(rs_value
));
15761 std::string rt
= GPR(copy(rt_value
));
15763 return img::format("SWXS %s, %s(%s)", rd
, rs
, rt
);
15768 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15771 * 10987654321098765432109876543210
15772 * 001000 00010001101
15777 std::string
NMD::SYNC(uint64 instruction
)
15779 uint64 stype_value
= extract_stype_20_19_18_17_16(instruction
);
15781 std::string stype
= IMMEDIATE(copy(stype_value
));
15783 return img::format("SYNC %s", stype
);
15788 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15791 * 10987654321098765432109876543210
15792 * 001000 00010001101
15797 std::string
NMD::SYNCI(uint64 instruction
)
15799 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15800 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15802 std::string s
= IMMEDIATE(copy(s_value
));
15803 std::string rs
= GPR(copy(rs_value
));
15805 return img::format("SYNCI %s(%s)", s
, rs
);
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::SYNCIE(uint64 instruction
)
15821 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15822 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
15824 std::string s
= IMMEDIATE(copy(s_value
));
15825 std::string rs
= GPR(copy(rs_value
));
15827 return img::format("SYNCIE %s(%s)", s
, rs
);
15832 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15835 * 10987654321098765432109876543210
15836 * 001000 00010001101
15841 std::string
NMD::SYSCALL_16_(uint64 instruction
)
15843 uint64 code_value
= extract_code_1_0(instruction
);
15845 std::string code
= IMMEDIATE(copy(code_value
));
15847 return img::format("SYSCALL %s", code
);
15852 * SYSCALL code - System Call. Cause a System Call Exception
15855 * 10987654321098765432109876543210
15857 * code ------------------
15859 std::string
NMD::SYSCALL_32_(uint64 instruction
)
15861 uint64 code_value
= extract_code_17_to_0(instruction
);
15863 std::string code
= IMMEDIATE(copy(code_value
));
15865 return img::format("SYSCALL %s", code
);
15870 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15873 * 10987654321098765432109876543210
15874 * 001000 00010001101
15879 std::string
NMD::TEQ(uint64 instruction
)
15881 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15882 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15884 std::string rs
= GPR(copy(rs_value
));
15885 std::string rt
= GPR(copy(rt_value
));
15887 return img::format("TEQ %s, %s", rs
, rt
);
15892 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15895 * 10987654321098765432109876543210
15896 * 001000 00010001101
15901 std::string
NMD::TLBGINV(uint64 instruction
)
15910 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15913 * 10987654321098765432109876543210
15914 * 001000 00010001101
15919 std::string
NMD::TLBGINVF(uint64 instruction
)
15923 return "TLBGINVF ";
15928 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15931 * 10987654321098765432109876543210
15932 * 001000 00010001101
15937 std::string
NMD::TLBGP(uint64 instruction
)
15946 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15949 * 10987654321098765432109876543210
15950 * 001000 00010001101
15955 std::string
NMD::TLBGR(uint64 instruction
)
15964 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15967 * 10987654321098765432109876543210
15968 * 001000 00010001101
15973 std::string
NMD::TLBGWI(uint64 instruction
)
15982 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15985 * 10987654321098765432109876543210
15986 * 001000 00010001101
15991 std::string
NMD::TLBGWR(uint64 instruction
)
16000 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16003 * 10987654321098765432109876543210
16004 * 001000 00010001101
16009 std::string
NMD::TLBINV(uint64 instruction
)
16018 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16021 * 10987654321098765432109876543210
16022 * 001000 00010001101
16027 std::string
NMD::TLBINVF(uint64 instruction
)
16036 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16039 * 10987654321098765432109876543210
16040 * 001000 00010001101
16045 std::string
NMD::TLBP(uint64 instruction
)
16054 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16057 * 10987654321098765432109876543210
16058 * 001000 00010001101
16063 std::string
NMD::TLBR(uint64 instruction
)
16072 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16075 * 10987654321098765432109876543210
16076 * 001000 00010001101
16081 std::string
NMD::TLBWI(uint64 instruction
)
16090 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16093 * 10987654321098765432109876543210
16094 * 001000 00010001101
16099 std::string
NMD::TLBWR(uint64 instruction
)
16108 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16111 * 10987654321098765432109876543210
16112 * 001000 00010001101
16117 std::string
NMD::TNE(uint64 instruction
)
16119 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16120 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16122 std::string rs
= GPR(copy(rs_value
));
16123 std::string rt
= GPR(copy(rt_value
));
16125 return img::format("TNE %s, %s", rs
, rt
);
16130 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16133 * 10987654321098765432109876543210
16134 * 001000 00010001101
16139 std::string
NMD::TRUNC_L_D(uint64 instruction
)
16141 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16142 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16144 std::string ft
= FPR(copy(ft_value
));
16145 std::string fs
= FPR(copy(fs_value
));
16147 return img::format("TRUNC.L.D %s, %s", ft
, fs
);
16152 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16155 * 10987654321098765432109876543210
16156 * 001000 00010001101
16161 std::string
NMD::TRUNC_L_S(uint64 instruction
)
16163 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16164 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16166 std::string ft
= FPR(copy(ft_value
));
16167 std::string fs
= FPR(copy(fs_value
));
16169 return img::format("TRUNC.L.S %s, %s", ft
, fs
);
16174 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16177 * 10987654321098765432109876543210
16178 * 001000 00010001101
16183 std::string
NMD::TRUNC_W_D(uint64 instruction
)
16185 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16186 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16188 std::string ft
= FPR(copy(ft_value
));
16189 std::string fs
= FPR(copy(fs_value
));
16191 return img::format("TRUNC.W.D %s, %s", ft
, fs
);
16196 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16199 * 10987654321098765432109876543210
16200 * 001000 00010001101
16205 std::string
NMD::TRUNC_W_S(uint64 instruction
)
16207 uint64 ft_value
= extract_ft_25_24_23_22_21(instruction
);
16208 uint64 fs_value
= extract_fs_20_19_18_17_16(instruction
);
16210 std::string ft
= FPR(copy(ft_value
));
16211 std::string fs
= FPR(copy(fs_value
));
16213 return img::format("TRUNC.W.S %s, %s", ft
, fs
);
16218 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16221 * 10987654321098765432109876543210
16222 * 001000 00010001101
16227 std::string
NMD::UALDM(uint64 instruction
)
16229 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16230 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16231 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16232 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16234 std::string rt
= GPR(copy(rt_value
));
16235 std::string s
= IMMEDIATE(copy(s_value
));
16236 std::string rs
= GPR(copy(rs_value
));
16237 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16239 return img::format("UALDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16244 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16247 * 10987654321098765432109876543210
16248 * 001000 00010001101
16253 std::string
NMD::UALH(uint64 instruction
)
16255 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16256 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16257 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16259 std::string rt
= GPR(copy(rt_value
));
16260 std::string s
= IMMEDIATE(copy(s_value
));
16261 std::string rs
= GPR(copy(rs_value
));
16263 return img::format("UALH %s, %s(%s)", rt
, s
, rs
);
16268 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16271 * 10987654321098765432109876543210
16272 * 001000 00010001101
16277 std::string
NMD::UALWM(uint64 instruction
)
16279 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16280 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16281 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16282 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16284 std::string rt
= GPR(copy(rt_value
));
16285 std::string s
= IMMEDIATE(copy(s_value
));
16286 std::string rs
= GPR(copy(rs_value
));
16287 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16289 return img::format("UALWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16294 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16297 * 10987654321098765432109876543210
16298 * 001000 00010001101
16303 std::string
NMD::UASDM(uint64 instruction
)
16305 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16306 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16307 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16308 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16310 std::string rt
= GPR(copy(rt_value
));
16311 std::string s
= IMMEDIATE(copy(s_value
));
16312 std::string rs
= GPR(copy(rs_value
));
16313 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16315 return img::format("UASDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16320 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16323 * 10987654321098765432109876543210
16324 * 001000 00010001101
16329 std::string
NMD::UASH(uint64 instruction
)
16331 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16332 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16333 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16335 std::string rt
= GPR(copy(rt_value
));
16336 std::string s
= IMMEDIATE(copy(s_value
));
16337 std::string rs
= GPR(copy(rs_value
));
16339 return img::format("UASH %s, %s(%s)", rt
, s
, rs
);
16344 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16347 * 10987654321098765432109876543210
16348 * 001000 00010001101
16353 std::string
NMD::UASWM(uint64 instruction
)
16355 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16356 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16357 int64 s_value
= extract_s__se8_15_7_6_5_4_3_2_1_0(instruction
);
16358 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16360 std::string rt
= GPR(copy(rt_value
));
16361 std::string s
= IMMEDIATE(copy(s_value
));
16362 std::string rs
= GPR(copy(rs_value
));
16363 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16365 return img::format("UASWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16370 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16373 * 10987654321098765432109876543210
16374 * 001000 00010001101
16379 std::string
NMD::UDI(uint64 instruction
)
16381 uint64 op_value
= extract_op_25_to_3(instruction
);
16383 std::string op
= IMMEDIATE(copy(op_value
));
16385 return img::format("UDI %s", op
);
16390 * WAIT code - Enter Wait State
16393 * 10987654321098765432109876543210
16394 * 001000 1100001101111111
16397 std::string
NMD::WAIT(uint64 instruction
)
16399 uint64 code_value
= extract_code_25_24_23_22_21_20_19_18_17_16(instruction
);
16401 std::string code
= IMMEDIATE(copy(code_value
));
16403 return img::format("WAIT %s", code
);
16408 * WRDSP rt, mask - Write Fields to DSPControl Register from a GPR
16411 * 10987654321098765432109876543210
16412 * 001000 01011001111111
16416 std::string
NMD::WRDSP(uint64 instruction
)
16418 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16419 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
16421 std::string rt
= GPR(copy(rt_value
));
16422 std::string mask
= IMMEDIATE(copy(mask_value
));
16424 return img::format("WRDSP %s, %s", rt
, mask
);
16429 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16432 * 10987654321098765432109876543210
16433 * 001000 00010001101
16438 std::string
NMD::WRPGPR(uint64 instruction
)
16440 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16441 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16443 std::string rt
= GPR(copy(rt_value
));
16444 std::string rs
= GPR(copy(rs_value
));
16446 return img::format("WRPGPR %s, %s", rt
, rs
);
16451 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16454 * 10987654321098765432109876543210
16455 * 001000 00010001101
16460 std::string
NMD::XOR_16_(uint64 instruction
)
16462 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
16463 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
16465 std::string rs3
= GPR(decode_gpr_gpr3(rs3_value
));
16466 std::string rt3
= GPR(decode_gpr_gpr3(rt3_value
));
16468 return img::format("XOR %s, %s", rs3
, rt3
);
16473 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16476 * 10987654321098765432109876543210
16477 * 001000 00010001101
16482 std::string
NMD::XOR_32_(uint64 instruction
)
16484 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16485 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16486 uint64 rd_value
= extract_rd_15_14_13_12_11(instruction
);
16488 std::string rd
= GPR(copy(rd_value
));
16489 std::string rs
= GPR(copy(rs_value
));
16490 std::string rt
= GPR(copy(rt_value
));
16492 return img::format("XOR %s, %s, %s", rd
, rs
, rt
);
16497 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16500 * 10987654321098765432109876543210
16501 * 001000 00010001101
16506 std::string
NMD::XORI(uint64 instruction
)
16508 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16509 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16510 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
16512 std::string rt
= GPR(copy(rt_value
));
16513 std::string rs
= GPR(copy(rs_value
));
16514 std::string u
= IMMEDIATE(copy(u_value
));
16516 return img::format("XORI %s, %s, %s", rt
, rs
, u
);
16524 * 10987654321098765432109876543210
16525 * 001000 00010001101
16529 std::string
NMD::YIELD(uint64 instruction
)
16531 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16532 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16534 std::string rt
= GPR(copy(rt_value
));
16535 std::string rs
= GPR(copy(rs_value
));
16537 return img::format("YIELD %s, %s", rt
, rs
);
16542 NMD::Pool
NMD::P_SYSCALL
[2] = {
16543 { instruction
, 0 , 0 , 32,
16544 0xfffc0000, 0x00080000, &NMD::SYSCALL_32_
, 0,
16545 0x0 }, /* SYSCALL[32] */
16546 { instruction
, 0 , 0 , 32,
16547 0xfffc0000, 0x000c0000, &NMD::HYPCALL
, 0,
16548 CP0_
| VZ_
}, /* HYPCALL */
16552 NMD::Pool
NMD::P_RI
[4] = {
16553 { instruction
, 0 , 0 , 32,
16554 0xfff80000, 0x00000000, &NMD::SIGRIE
, 0,
16555 0x0 }, /* SIGRIE */
16556 { pool
, P_SYSCALL
, 2 , 32,
16557 0xfff80000, 0x00080000, 0 , 0,
16558 0x0 }, /* P.SYSCALL */
16559 { instruction
, 0 , 0 , 32,
16560 0xfff80000, 0x00100000, &NMD::BREAK_32_
, 0,
16561 0x0 }, /* BREAK[32] */
16562 { instruction
, 0 , 0 , 32,
16563 0xfff80000, 0x00180000, &NMD::SDBBP_32_
, 0,
16564 EJTAG_
}, /* SDBBP[32] */
16568 NMD::Pool
NMD::P_ADDIU
[2] = {
16569 { pool
, P_RI
, 4 , 32,
16570 0xffe00000, 0x00000000, 0 , 0,
16572 { instruction
, 0 , 0 , 32,
16573 0xfc000000, 0x00000000, &NMD::ADDIU_32_
, &NMD::ADDIU_32__cond
,
16574 0x0 }, /* ADDIU[32] */
16578 NMD::Pool
NMD::P_TRAP
[2] = {
16579 { instruction
, 0 , 0 , 32,
16580 0xfc0007ff, 0x20000000, &NMD::TEQ
, 0,
16582 { instruction
, 0 , 0 , 32,
16583 0xfc0007ff, 0x20000400, &NMD::TNE
, 0,
16588 NMD::Pool
NMD::P_CMOVE
[2] = {
16589 { instruction
, 0 , 0 , 32,
16590 0xfc0007ff, 0x20000210, &NMD::MOVZ
, 0,
16592 { instruction
, 0 , 0 , 32,
16593 0xfc0007ff, 0x20000610, &NMD::MOVN
, 0,
16598 NMD::Pool
NMD::P_D_MT_VPE
[2] = {
16599 { instruction
, 0 , 0 , 32,
16600 0xfc1f3fff, 0x20010ab0, &NMD::DMT
, 0,
16602 { instruction
, 0 , 0 , 32,
16603 0xfc1f3fff, 0x20000ab0, &NMD::DVPE
, 0,
16608 NMD::Pool
NMD::P_E_MT_VPE
[2] = {
16609 { instruction
, 0 , 0 , 32,
16610 0xfc1f3fff, 0x20010eb0, &NMD::EMT
, 0,
16612 { instruction
, 0 , 0 , 32,
16613 0xfc1f3fff, 0x20000eb0, &NMD::EVPE
, 0,
16618 NMD::Pool
NMD::_P_MT_VPE
[2] = {
16619 { pool
, P_D_MT_VPE
, 2 , 32,
16620 0xfc003fff, 0x20000ab0, 0 , 0,
16621 0x0 }, /* P.D_MT_VPE */
16622 { pool
, P_E_MT_VPE
, 2 , 32,
16623 0xfc003fff, 0x20000eb0, 0 , 0,
16624 0x0 }, /* P.E_MT_VPE */
16628 NMD::Pool
NMD::P_MT_VPE
[8] = {
16629 { reserved_block
, 0 , 0 , 32,
16630 0xfc003bff, 0x200002b0, 0 , 0,
16631 0x0 }, /* P.MT_VPE~*(0) */
16632 { pool
, _P_MT_VPE
, 2 , 32,
16633 0xfc003bff, 0x20000ab0, 0 , 0,
16634 0x0 }, /* _P.MT_VPE */
16635 { reserved_block
, 0 , 0 , 32,
16636 0xfc003bff, 0x200012b0, 0 , 0,
16637 0x0 }, /* P.MT_VPE~*(2) */
16638 { reserved_block
, 0 , 0 , 32,
16639 0xfc003bff, 0x20001ab0, 0 , 0,
16640 0x0 }, /* P.MT_VPE~*(3) */
16641 { reserved_block
, 0 , 0 , 32,
16642 0xfc003bff, 0x200022b0, 0 , 0,
16643 0x0 }, /* P.MT_VPE~*(4) */
16644 { reserved_block
, 0 , 0 , 32,
16645 0xfc003bff, 0x20002ab0, 0 , 0,
16646 0x0 }, /* P.MT_VPE~*(5) */
16647 { reserved_block
, 0 , 0 , 32,
16648 0xfc003bff, 0x200032b0, 0 , 0,
16649 0x0 }, /* P.MT_VPE~*(6) */
16650 { reserved_block
, 0 , 0 , 32,
16651 0xfc003bff, 0x20003ab0, 0 , 0,
16652 0x0 }, /* P.MT_VPE~*(7) */
16656 NMD::Pool
NMD::P_DVP
[2] = {
16657 { instruction
, 0 , 0 , 32,
16658 0xfc00ffff, 0x20000390, &NMD::DVP
, 0,
16660 { instruction
, 0 , 0 , 32,
16661 0xfc00ffff, 0x20000790, &NMD::EVP
, 0,
16666 NMD::Pool
NMD::P_SLTU
[2] = {
16667 { pool
, P_DVP
, 2 , 32,
16668 0xfc00fbff, 0x20000390, 0 , 0,
16670 { instruction
, 0 , 0 , 32,
16671 0xfc0003ff, 0x20000390, &NMD::SLTU
, &NMD::SLTU_cond
,
16676 NMD::Pool
NMD::_POOL32A0
[128] = {
16677 { pool
, P_TRAP
, 2 , 32,
16678 0xfc0003ff, 0x20000000, 0 , 0,
16679 0x0 }, /* P.TRAP */
16680 { instruction
, 0 , 0 , 32,
16681 0xfc0003ff, 0x20000008, &NMD::SEB
, 0,
16683 { instruction
, 0 , 0 , 32,
16684 0xfc0003ff, 0x20000010, &NMD::SLLV
, 0,
16686 { instruction
, 0 , 0 , 32,
16687 0xfc0003ff, 0x20000018, &NMD::MUL_32_
, 0,
16688 0x0 }, /* MUL[32] */
16689 { reserved_block
, 0 , 0 , 32,
16690 0xfc0003ff, 0x20000020, 0 , 0,
16691 0x0 }, /* _POOL32A0~*(4) */
16692 { reserved_block
, 0 , 0 , 32,
16693 0xfc0003ff, 0x20000028, 0 , 0,
16694 0x0 }, /* _POOL32A0~*(5) */
16695 { instruction
, 0 , 0 , 32,
16696 0xfc0003ff, 0x20000030, &NMD::MFC0
, 0,
16698 { instruction
, 0 , 0 , 32,
16699 0xfc0003ff, 0x20000038, &NMD::MFHC0
, 0,
16700 CP0_
| MVH_
}, /* MFHC0 */
16701 { reserved_block
, 0 , 0 , 32,
16702 0xfc0003ff, 0x20000040, 0 , 0,
16703 0x0 }, /* _POOL32A0~*(8) */
16704 { instruction
, 0 , 0 , 32,
16705 0xfc0003ff, 0x20000048, &NMD::SEH
, 0,
16707 { instruction
, 0 , 0 , 32,
16708 0xfc0003ff, 0x20000050, &NMD::SRLV
, 0,
16710 { instruction
, 0 , 0 , 32,
16711 0xfc0003ff, 0x20000058, &NMD::MUH
, 0,
16713 { reserved_block
, 0 , 0 , 32,
16714 0xfc0003ff, 0x20000060, 0 , 0,
16715 0x0 }, /* _POOL32A0~*(12) */
16716 { reserved_block
, 0 , 0 , 32,
16717 0xfc0003ff, 0x20000068, 0 , 0,
16718 0x0 }, /* _POOL32A0~*(13) */
16719 { instruction
, 0 , 0 , 32,
16720 0xfc0003ff, 0x20000070, &NMD::MTC0
, 0,
16722 { instruction
, 0 , 0 , 32,
16723 0xfc0003ff, 0x20000078, &NMD::MTHC0
, 0,
16724 CP0_
| MVH_
}, /* MTHC0 */
16725 { reserved_block
, 0 , 0 , 32,
16726 0xfc0003ff, 0x20000080, 0 , 0,
16727 0x0 }, /* _POOL32A0~*(16) */
16728 { reserved_block
, 0 , 0 , 32,
16729 0xfc0003ff, 0x20000088, 0 , 0,
16730 0x0 }, /* _POOL32A0~*(17) */
16731 { instruction
, 0 , 0 , 32,
16732 0xfc0003ff, 0x20000090, &NMD::SRAV
, 0,
16734 { instruction
, 0 , 0 , 32,
16735 0xfc0003ff, 0x20000098, &NMD::MULU
, 0,
16737 { reserved_block
, 0 , 0 , 32,
16738 0xfc0003ff, 0x200000a0, 0 , 0,
16739 0x0 }, /* _POOL32A0~*(20) */
16740 { reserved_block
, 0 , 0 , 32,
16741 0xfc0003ff, 0x200000a8, 0 , 0,
16742 0x0 }, /* _POOL32A0~*(21) */
16743 { instruction
, 0 , 0 , 32,
16744 0xfc0003ff, 0x200000b0, &NMD::MFGC0
, 0,
16745 CP0_
| VZ_
}, /* MFGC0 */
16746 { instruction
, 0 , 0 , 32,
16747 0xfc0003ff, 0x200000b8, &NMD::MFHGC0
, 0,
16748 CP0_
| VZ_
| MVH_
}, /* MFHGC0 */
16749 { reserved_block
, 0 , 0 , 32,
16750 0xfc0003ff, 0x200000c0, 0 , 0,
16751 0x0 }, /* _POOL32A0~*(24) */
16752 { reserved_block
, 0 , 0 , 32,
16753 0xfc0003ff, 0x200000c8, 0 , 0,
16754 0x0 }, /* _POOL32A0~*(25) */
16755 { instruction
, 0 , 0 , 32,
16756 0xfc0003ff, 0x200000d0, &NMD::ROTRV
, 0,
16758 { instruction
, 0 , 0 , 32,
16759 0xfc0003ff, 0x200000d8, &NMD::MUHU
, 0,
16761 { reserved_block
, 0 , 0 , 32,
16762 0xfc0003ff, 0x200000e0, 0 , 0,
16763 0x0 }, /* _POOL32A0~*(28) */
16764 { reserved_block
, 0 , 0 , 32,
16765 0xfc0003ff, 0x200000e8, 0 , 0,
16766 0x0 }, /* _POOL32A0~*(29) */
16767 { instruction
, 0 , 0 , 32,
16768 0xfc0003ff, 0x200000f0, &NMD::MTGC0
, 0,
16769 CP0_
| VZ_
}, /* MTGC0 */
16770 { instruction
, 0 , 0 , 32,
16771 0xfc0003ff, 0x200000f8, &NMD::MTHGC0
, 0,
16772 CP0_
| VZ_
| MVH_
}, /* MTHGC0 */
16773 { reserved_block
, 0 , 0 , 32,
16774 0xfc0003ff, 0x20000100, 0 , 0,
16775 0x0 }, /* _POOL32A0~*(32) */
16776 { reserved_block
, 0 , 0 , 32,
16777 0xfc0003ff, 0x20000108, 0 , 0,
16778 0x0 }, /* _POOL32A0~*(33) */
16779 { instruction
, 0 , 0 , 32,
16780 0xfc0003ff, 0x20000110, &NMD::ADD
, 0,
16782 { instruction
, 0 , 0 , 32,
16783 0xfc0003ff, 0x20000118, &NMD::DIV
, 0,
16785 { reserved_block
, 0 , 0 , 32,
16786 0xfc0003ff, 0x20000120, 0 , 0,
16787 0x0 }, /* _POOL32A0~*(36) */
16788 { reserved_block
, 0 , 0 , 32,
16789 0xfc0003ff, 0x20000128, 0 , 0,
16790 0x0 }, /* _POOL32A0~*(37) */
16791 { instruction
, 0 , 0 , 32,
16792 0xfc0003ff, 0x20000130, &NMD::DMFC0
, 0,
16793 CP0_
| MIPS64_
}, /* DMFC0 */
16794 { reserved_block
, 0 , 0 , 32,
16795 0xfc0003ff, 0x20000138, 0 , 0,
16796 0x0 }, /* _POOL32A0~*(39) */
16797 { reserved_block
, 0 , 0 , 32,
16798 0xfc0003ff, 0x20000140, 0 , 0,
16799 0x0 }, /* _POOL32A0~*(40) */
16800 { reserved_block
, 0 , 0 , 32,
16801 0xfc0003ff, 0x20000148, 0 , 0,
16802 0x0 }, /* _POOL32A0~*(41) */
16803 { instruction
, 0 , 0 , 32,
16804 0xfc0003ff, 0x20000150, &NMD::ADDU_32_
, 0,
16805 0x0 }, /* ADDU[32] */
16806 { instruction
, 0 , 0 , 32,
16807 0xfc0003ff, 0x20000158, &NMD::MOD
, 0,
16809 { reserved_block
, 0 , 0 , 32,
16810 0xfc0003ff, 0x20000160, 0 , 0,
16811 0x0 }, /* _POOL32A0~*(44) */
16812 { reserved_block
, 0 , 0 , 32,
16813 0xfc0003ff, 0x20000168, 0 , 0,
16814 0x0 }, /* _POOL32A0~*(45) */
16815 { instruction
, 0 , 0 , 32,
16816 0xfc0003ff, 0x20000170, &NMD::DMTC0
, 0,
16817 CP0_
| MIPS64_
}, /* DMTC0 */
16818 { reserved_block
, 0 , 0 , 32,
16819 0xfc0003ff, 0x20000178, 0 , 0,
16820 0x0 }, /* _POOL32A0~*(47) */
16821 { reserved_block
, 0 , 0 , 32,
16822 0xfc0003ff, 0x20000180, 0 , 0,
16823 0x0 }, /* _POOL32A0~*(48) */
16824 { reserved_block
, 0 , 0 , 32,
16825 0xfc0003ff, 0x20000188, 0 , 0,
16826 0x0 }, /* _POOL32A0~*(49) */
16827 { instruction
, 0 , 0 , 32,
16828 0xfc0003ff, 0x20000190, &NMD::SUB
, 0,
16830 { instruction
, 0 , 0 , 32,
16831 0xfc0003ff, 0x20000198, &NMD::DIVU
, 0,
16833 { reserved_block
, 0 , 0 , 32,
16834 0xfc0003ff, 0x200001a0, 0 , 0,
16835 0x0 }, /* _POOL32A0~*(52) */
16836 { reserved_block
, 0 , 0 , 32,
16837 0xfc0003ff, 0x200001a8, 0 , 0,
16838 0x0 }, /* _POOL32A0~*(53) */
16839 { instruction
, 0 , 0 , 32,
16840 0xfc0003ff, 0x200001b0, &NMD::DMFGC0
, 0,
16841 CP0_
| MIPS64_
| VZ_
}, /* DMFGC0 */
16842 { reserved_block
, 0 , 0 , 32,
16843 0xfc0003ff, 0x200001b8, 0 , 0,
16844 0x0 }, /* _POOL32A0~*(55) */
16845 { instruction
, 0 , 0 , 32,
16846 0xfc0003ff, 0x200001c0, &NMD::RDHWR
, 0,
16847 XMMS_
}, /* RDHWR */
16848 { reserved_block
, 0 , 0 , 32,
16849 0xfc0003ff, 0x200001c8, 0 , 0,
16850 0x0 }, /* _POOL32A0~*(57) */
16851 { instruction
, 0 , 0 , 32,
16852 0xfc0003ff, 0x200001d0, &NMD::SUBU_32_
, 0,
16853 0x0 }, /* SUBU[32] */
16854 { instruction
, 0 , 0 , 32,
16855 0xfc0003ff, 0x200001d8, &NMD::MODU
, 0,
16857 { reserved_block
, 0 , 0 , 32,
16858 0xfc0003ff, 0x200001e0, 0 , 0,
16859 0x0 }, /* _POOL32A0~*(60) */
16860 { reserved_block
, 0 , 0 , 32,
16861 0xfc0003ff, 0x200001e8, 0 , 0,
16862 0x0 }, /* _POOL32A0~*(61) */
16863 { instruction
, 0 , 0 , 32,
16864 0xfc0003ff, 0x200001f0, &NMD::DMTGC0
, 0,
16865 CP0_
| MIPS64_
| VZ_
}, /* DMTGC0 */
16866 { reserved_block
, 0 , 0 , 32,
16867 0xfc0003ff, 0x200001f8, 0 , 0,
16868 0x0 }, /* _POOL32A0~*(63) */
16869 { reserved_block
, 0 , 0 , 32,
16870 0xfc0003ff, 0x20000200, 0 , 0,
16871 0x0 }, /* _POOL32A0~*(64) */
16872 { reserved_block
, 0 , 0 , 32,
16873 0xfc0003ff, 0x20000208, 0 , 0,
16874 0x0 }, /* _POOL32A0~*(65) */
16875 { pool
, P_CMOVE
, 2 , 32,
16876 0xfc0003ff, 0x20000210, 0 , 0,
16877 0x0 }, /* P.CMOVE */
16878 { reserved_block
, 0 , 0 , 32,
16879 0xfc0003ff, 0x20000218, 0 , 0,
16880 0x0 }, /* _POOL32A0~*(67) */
16881 { reserved_block
, 0 , 0 , 32,
16882 0xfc0003ff, 0x20000220, 0 , 0,
16883 0x0 }, /* _POOL32A0~*(68) */
16884 { instruction
, 0 , 0 , 32,
16885 0xfc0003ff, 0x20000228, &NMD::FORK
, 0,
16887 { instruction
, 0 , 0 , 32,
16888 0xfc0003ff, 0x20000230, &NMD::MFTR
, 0,
16890 { instruction
, 0 , 0 , 32,
16891 0xfc0003ff, 0x20000238, &NMD::MFHTR
, 0,
16893 { reserved_block
, 0 , 0 , 32,
16894 0xfc0003ff, 0x20000240, 0 , 0,
16895 0x0 }, /* _POOL32A0~*(72) */
16896 { reserved_block
, 0 , 0 , 32,
16897 0xfc0003ff, 0x20000248, 0 , 0,
16898 0x0 }, /* _POOL32A0~*(73) */
16899 { instruction
, 0 , 0 , 32,
16900 0xfc0003ff, 0x20000250, &NMD::AND_32_
, 0,
16901 0x0 }, /* AND[32] */
16902 { reserved_block
, 0 , 0 , 32,
16903 0xfc0003ff, 0x20000258, 0 , 0,
16904 0x0 }, /* _POOL32A0~*(75) */
16905 { reserved_block
, 0 , 0 , 32,
16906 0xfc0003ff, 0x20000260, 0 , 0,
16907 0x0 }, /* _POOL32A0~*(76) */
16908 { instruction
, 0 , 0 , 32,
16909 0xfc0003ff, 0x20000268, &NMD::YIELD
, 0,
16911 { instruction
, 0 , 0 , 32,
16912 0xfc0003ff, 0x20000270, &NMD::MTTR
, 0,
16914 { instruction
, 0 , 0 , 32,
16915 0xfc0003ff, 0x20000278, &NMD::MTHTR
, 0,
16917 { reserved_block
, 0 , 0 , 32,
16918 0xfc0003ff, 0x20000280, 0 , 0,
16919 0x0 }, /* _POOL32A0~*(80) */
16920 { reserved_block
, 0 , 0 , 32,
16921 0xfc0003ff, 0x20000288, 0 , 0,
16922 0x0 }, /* _POOL32A0~*(81) */
16923 { instruction
, 0 , 0 , 32,
16924 0xfc0003ff, 0x20000290, &NMD::OR_32_
, 0,
16925 0x0 }, /* OR[32] */
16926 { reserved_block
, 0 , 0 , 32,
16927 0xfc0003ff, 0x20000298, 0 , 0,
16928 0x0 }, /* _POOL32A0~*(83) */
16929 { reserved_block
, 0 , 0 , 32,
16930 0xfc0003ff, 0x200002a0, 0 , 0,
16931 0x0 }, /* _POOL32A0~*(84) */
16932 { reserved_block
, 0 , 0 , 32,
16933 0xfc0003ff, 0x200002a8, 0 , 0,
16934 0x0 }, /* _POOL32A0~*(85) */
16935 { pool
, P_MT_VPE
, 8 , 32,
16936 0xfc0003ff, 0x200002b0, 0 , 0,
16937 0x0 }, /* P.MT_VPE */
16938 { reserved_block
, 0 , 0 , 32,
16939 0xfc0003ff, 0x200002b8, 0 , 0,
16940 0x0 }, /* _POOL32A0~*(87) */
16941 { reserved_block
, 0 , 0 , 32,
16942 0xfc0003ff, 0x200002c0, 0 , 0,
16943 0x0 }, /* _POOL32A0~*(88) */
16944 { reserved_block
, 0 , 0 , 32,
16945 0xfc0003ff, 0x200002c8, 0 , 0,
16946 0x0 }, /* _POOL32A0~*(89) */
16947 { instruction
, 0 , 0 , 32,
16948 0xfc0003ff, 0x200002d0, &NMD::NOR
, 0,
16950 { reserved_block
, 0 , 0 , 32,
16951 0xfc0003ff, 0x200002d8, 0 , 0,
16952 0x0 }, /* _POOL32A0~*(91) */
16953 { reserved_block
, 0 , 0 , 32,
16954 0xfc0003ff, 0x200002e0, 0 , 0,
16955 0x0 }, /* _POOL32A0~*(92) */
16956 { reserved_block
, 0 , 0 , 32,
16957 0xfc0003ff, 0x200002e8, 0 , 0,
16958 0x0 }, /* _POOL32A0~*(93) */
16959 { reserved_block
, 0 , 0 , 32,
16960 0xfc0003ff, 0x200002f0, 0 , 0,
16961 0x0 }, /* _POOL32A0~*(94) */
16962 { reserved_block
, 0 , 0 , 32,
16963 0xfc0003ff, 0x200002f8, 0 , 0,
16964 0x0 }, /* _POOL32A0~*(95) */
16965 { reserved_block
, 0 , 0 , 32,
16966 0xfc0003ff, 0x20000300, 0 , 0,
16967 0x0 }, /* _POOL32A0~*(96) */
16968 { reserved_block
, 0 , 0 , 32,
16969 0xfc0003ff, 0x20000308, 0 , 0,
16970 0x0 }, /* _POOL32A0~*(97) */
16971 { instruction
, 0 , 0 , 32,
16972 0xfc0003ff, 0x20000310, &NMD::XOR_32_
, 0,
16973 0x0 }, /* XOR[32] */
16974 { reserved_block
, 0 , 0 , 32,
16975 0xfc0003ff, 0x20000318, 0 , 0,
16976 0x0 }, /* _POOL32A0~*(99) */
16977 { reserved_block
, 0 , 0 , 32,
16978 0xfc0003ff, 0x20000320, 0 , 0,
16979 0x0 }, /* _POOL32A0~*(100) */
16980 { reserved_block
, 0 , 0 , 32,
16981 0xfc0003ff, 0x20000328, 0 , 0,
16982 0x0 }, /* _POOL32A0~*(101) */
16983 { reserved_block
, 0 , 0 , 32,
16984 0xfc0003ff, 0x20000330, 0 , 0,
16985 0x0 }, /* _POOL32A0~*(102) */
16986 { reserved_block
, 0 , 0 , 32,
16987 0xfc0003ff, 0x20000338, 0 , 0,
16988 0x0 }, /* _POOL32A0~*(103) */
16989 { reserved_block
, 0 , 0 , 32,
16990 0xfc0003ff, 0x20000340, 0 , 0,
16991 0x0 }, /* _POOL32A0~*(104) */
16992 { reserved_block
, 0 , 0 , 32,
16993 0xfc0003ff, 0x20000348, 0 , 0,
16994 0x0 }, /* _POOL32A0~*(105) */
16995 { instruction
, 0 , 0 , 32,
16996 0xfc0003ff, 0x20000350, &NMD::SLT
, 0,
16998 { reserved_block
, 0 , 0 , 32,
16999 0xfc0003ff, 0x20000358, 0 , 0,
17000 0x0 }, /* _POOL32A0~*(107) */
17001 { reserved_block
, 0 , 0 , 32,
17002 0xfc0003ff, 0x20000360, 0 , 0,
17003 0x0 }, /* _POOL32A0~*(108) */
17004 { reserved_block
, 0 , 0 , 32,
17005 0xfc0003ff, 0x20000368, 0 , 0,
17006 0x0 }, /* _POOL32A0~*(109) */
17007 { reserved_block
, 0 , 0 , 32,
17008 0xfc0003ff, 0x20000370, 0 , 0,
17009 0x0 }, /* _POOL32A0~*(110) */
17010 { reserved_block
, 0 , 0 , 32,
17011 0xfc0003ff, 0x20000378, 0 , 0,
17012 0x0 }, /* _POOL32A0~*(111) */
17013 { reserved_block
, 0 , 0 , 32,
17014 0xfc0003ff, 0x20000380, 0 , 0,
17015 0x0 }, /* _POOL32A0~*(112) */
17016 { reserved_block
, 0 , 0 , 32,
17017 0xfc0003ff, 0x20000388, 0 , 0,
17018 0x0 }, /* _POOL32A0~*(113) */
17019 { pool
, P_SLTU
, 2 , 32,
17020 0xfc0003ff, 0x20000390, 0 , 0,
17021 0x0 }, /* P.SLTU */
17022 { reserved_block
, 0 , 0 , 32,
17023 0xfc0003ff, 0x20000398, 0 , 0,
17024 0x0 }, /* _POOL32A0~*(115) */
17025 { reserved_block
, 0 , 0 , 32,
17026 0xfc0003ff, 0x200003a0, 0 , 0,
17027 0x0 }, /* _POOL32A0~*(116) */
17028 { reserved_block
, 0 , 0 , 32,
17029 0xfc0003ff, 0x200003a8, 0 , 0,
17030 0x0 }, /* _POOL32A0~*(117) */
17031 { reserved_block
, 0 , 0 , 32,
17032 0xfc0003ff, 0x200003b0, 0 , 0,
17033 0x0 }, /* _POOL32A0~*(118) */
17034 { reserved_block
, 0 , 0 , 32,
17035 0xfc0003ff, 0x200003b8, 0 , 0,
17036 0x0 }, /* _POOL32A0~*(119) */
17037 { reserved_block
, 0 , 0 , 32,
17038 0xfc0003ff, 0x200003c0, 0 , 0,
17039 0x0 }, /* _POOL32A0~*(120) */
17040 { reserved_block
, 0 , 0 , 32,
17041 0xfc0003ff, 0x200003c8, 0 , 0,
17042 0x0 }, /* _POOL32A0~*(121) */
17043 { instruction
, 0 , 0 , 32,
17044 0xfc0003ff, 0x200003d0, &NMD::SOV
, 0,
17046 { reserved_block
, 0 , 0 , 32,
17047 0xfc0003ff, 0x200003d8, 0 , 0,
17048 0x0 }, /* _POOL32A0~*(123) */
17049 { reserved_block
, 0 , 0 , 32,
17050 0xfc0003ff, 0x200003e0, 0 , 0,
17051 0x0 }, /* _POOL32A0~*(124) */
17052 { reserved_block
, 0 , 0 , 32,
17053 0xfc0003ff, 0x200003e8, 0 , 0,
17054 0x0 }, /* _POOL32A0~*(125) */
17055 { reserved_block
, 0 , 0 , 32,
17056 0xfc0003ff, 0x200003f0, 0 , 0,
17057 0x0 }, /* _POOL32A0~*(126) */
17058 { reserved_block
, 0 , 0 , 32,
17059 0xfc0003ff, 0x200003f8, 0 , 0,
17060 0x0 }, /* _POOL32A0~*(127) */
17064 NMD::Pool
NMD::ADDQ__S__PH
[2] = {
17065 { instruction
, 0 , 0 , 32,
17066 0xfc0007ff, 0x2000000d, &NMD::ADDQ_PH
, 0,
17067 DSP_
}, /* ADDQ.PH */
17068 { instruction
, 0 , 0 , 32,
17069 0xfc0007ff, 0x2000040d, &NMD::ADDQ_S_PH
, 0,
17070 DSP_
}, /* ADDQ_S.PH */
17074 NMD::Pool
NMD::MUL__S__PH
[2] = {
17075 { instruction
, 0 , 0 , 32,
17076 0xfc0007ff, 0x2000002d, &NMD::MUL_PH
, 0,
17077 DSP_
}, /* MUL.PH */
17078 { instruction
, 0 , 0 , 32,
17079 0xfc0007ff, 0x2000042d, &NMD::MUL_S_PH
, 0,
17080 DSP_
}, /* MUL_S.PH */
17084 NMD::Pool
NMD::ADDQH__R__PH
[2] = {
17085 { instruction
, 0 , 0 , 32,
17086 0xfc0007ff, 0x2000004d, &NMD::ADDQH_PH
, 0,
17087 DSP_
}, /* ADDQH.PH */
17088 { instruction
, 0 , 0 , 32,
17089 0xfc0007ff, 0x2000044d, &NMD::ADDQH_R_PH
, 0,
17090 DSP_
}, /* ADDQH_R.PH */
17094 NMD::Pool
NMD::ADDQH__R__W
[2] = {
17095 { instruction
, 0 , 0 , 32,
17096 0xfc0007ff, 0x2000008d, &NMD::ADDQH_W
, 0,
17097 DSP_
}, /* ADDQH.W */
17098 { instruction
, 0 , 0 , 32,
17099 0xfc0007ff, 0x2000048d, &NMD::ADDQH_R_W
, 0,
17100 DSP_
}, /* ADDQH_R.W */
17104 NMD::Pool
NMD::ADDU__S__QB
[2] = {
17105 { instruction
, 0 , 0 , 32,
17106 0xfc0007ff, 0x200000cd, &NMD::ADDU_QB
, 0,
17107 DSP_
}, /* ADDU.QB */
17108 { instruction
, 0 , 0 , 32,
17109 0xfc0007ff, 0x200004cd, &NMD::ADDU_S_QB
, 0,
17110 DSP_
}, /* ADDU_S.QB */
17114 NMD::Pool
NMD::ADDU__S__PH
[2] = {
17115 { instruction
, 0 , 0 , 32,
17116 0xfc0007ff, 0x2000010d, &NMD::ADDU_PH
, 0,
17117 DSP_
}, /* ADDU.PH */
17118 { instruction
, 0 , 0 , 32,
17119 0xfc0007ff, 0x2000050d, &NMD::ADDU_S_PH
, 0,
17120 DSP_
}, /* ADDU_S.PH */
17124 NMD::Pool
NMD::ADDUH__R__QB
[2] = {
17125 { instruction
, 0 , 0 , 32,
17126 0xfc0007ff, 0x2000014d, &NMD::ADDUH_QB
, 0,
17127 DSP_
}, /* ADDUH.QB */
17128 { instruction
, 0 , 0 , 32,
17129 0xfc0007ff, 0x2000054d, &NMD::ADDUH_R_QB
, 0,
17130 DSP_
}, /* ADDUH_R.QB */
17134 NMD::Pool
NMD::SHRAV__R__PH
[2] = {
17135 { instruction
, 0 , 0 , 32,
17136 0xfc0007ff, 0x2000018d, &NMD::SHRAV_PH
, 0,
17137 DSP_
}, /* SHRAV.PH */
17138 { instruction
, 0 , 0 , 32,
17139 0xfc0007ff, 0x2000058d, &NMD::SHRAV_R_PH
, 0,
17140 DSP_
}, /* SHRAV_R.PH */
17144 NMD::Pool
NMD::SHRAV__R__QB
[2] = {
17145 { instruction
, 0 , 0 , 32,
17146 0xfc0007ff, 0x200001cd, &NMD::SHRAV_QB
, 0,
17147 DSP_
}, /* SHRAV.QB */
17148 { instruction
, 0 , 0 , 32,
17149 0xfc0007ff, 0x200005cd, &NMD::SHRAV_R_QB
, 0,
17150 DSP_
}, /* SHRAV_R.QB */
17154 NMD::Pool
NMD::SUBQ__S__PH
[2] = {
17155 { instruction
, 0 , 0 , 32,
17156 0xfc0007ff, 0x2000020d, &NMD::SUBQ_PH
, 0,
17157 DSP_
}, /* SUBQ.PH */
17158 { instruction
, 0 , 0 , 32,
17159 0xfc0007ff, 0x2000060d, &NMD::SUBQ_S_PH
, 0,
17160 DSP_
}, /* SUBQ_S.PH */
17164 NMD::Pool
NMD::SUBQH__R__PH
[2] = {
17165 { instruction
, 0 , 0 , 32,
17166 0xfc0007ff, 0x2000024d, &NMD::SUBQH_PH
, 0,
17167 DSP_
}, /* SUBQH.PH */
17168 { instruction
, 0 , 0 , 32,
17169 0xfc0007ff, 0x2000064d, &NMD::SUBQH_R_PH
, 0,
17170 DSP_
}, /* SUBQH_R.PH */
17174 NMD::Pool
NMD::SUBQH__R__W
[2] = {
17175 { instruction
, 0 , 0 , 32,
17176 0xfc0007ff, 0x2000028d, &NMD::SUBQH_W
, 0,
17177 DSP_
}, /* SUBQH.W */
17178 { instruction
, 0 , 0 , 32,
17179 0xfc0007ff, 0x2000068d, &NMD::SUBQH_R_W
, 0,
17180 DSP_
}, /* SUBQH_R.W */
17184 NMD::Pool
NMD::SUBU__S__QB
[2] = {
17185 { instruction
, 0 , 0 , 32,
17186 0xfc0007ff, 0x200002cd, &NMD::SUBU_QB
, 0,
17187 DSP_
}, /* SUBU.QB */
17188 { instruction
, 0 , 0 , 32,
17189 0xfc0007ff, 0x200006cd, &NMD::SUBU_S_QB
, 0,
17190 DSP_
}, /* SUBU_S.QB */
17194 NMD::Pool
NMD::SUBU__S__PH
[2] = {
17195 { instruction
, 0 , 0 , 32,
17196 0xfc0007ff, 0x2000030d, &NMD::SUBU_PH
, 0,
17197 DSP_
}, /* SUBU.PH */
17198 { instruction
, 0 , 0 , 32,
17199 0xfc0007ff, 0x2000070d, &NMD::SUBU_S_PH
, 0,
17200 DSP_
}, /* SUBU_S.PH */
17204 NMD::Pool
NMD::SHRA__R__PH
[2] = {
17205 { instruction
, 0 , 0 , 32,
17206 0xfc0007ff, 0x20000335, &NMD::SHRA_PH
, 0,
17207 DSP_
}, /* SHRA.PH */
17208 { instruction
, 0 , 0 , 32,
17209 0xfc0007ff, 0x20000735, &NMD::SHRA_R_PH
, 0,
17210 DSP_
}, /* SHRA_R.PH */
17214 NMD::Pool
NMD::SUBUH__R__QB
[2] = {
17215 { instruction
, 0 , 0 , 32,
17216 0xfc0007ff, 0x2000034d, &NMD::SUBUH_QB
, 0,
17217 DSP_
}, /* SUBUH.QB */
17218 { instruction
, 0 , 0 , 32,
17219 0xfc0007ff, 0x2000074d, &NMD::SUBUH_R_QB
, 0,
17220 DSP_
}, /* SUBUH_R.QB */
17224 NMD::Pool
NMD::SHLLV__S__PH
[2] = {
17225 { instruction
, 0 , 0 , 32,
17226 0xfc0007ff, 0x2000038d, &NMD::SHLLV_PH
, 0,
17227 DSP_
}, /* SHLLV.PH */
17228 { instruction
, 0 , 0 , 32,
17229 0xfc0007ff, 0x2000078d, &NMD::SHLLV_S_PH
, 0,
17230 DSP_
}, /* SHLLV_S.PH */
17234 NMD::Pool
NMD::SHLL__S__PH
[4] = {
17235 { instruction
, 0 , 0 , 32,
17236 0xfc000fff, 0x200003b5, &NMD::SHLL_PH
, 0,
17237 DSP_
}, /* SHLL.PH */
17238 { reserved_block
, 0 , 0 , 32,
17239 0xfc000fff, 0x200007b5, 0 , 0,
17240 0x0 }, /* SHLL[_S].PH~*(1) */
17241 { instruction
, 0 , 0 , 32,
17242 0xfc000fff, 0x20000bb5, &NMD::SHLL_S_PH
, 0,
17243 DSP_
}, /* SHLL_S.PH */
17244 { reserved_block
, 0 , 0 , 32,
17245 0xfc000fff, 0x20000fb5, 0 , 0,
17246 0x0 }, /* SHLL[_S].PH~*(3) */
17250 NMD::Pool
NMD::PRECR_SRA__R__PH_W
[2] = {
17251 { instruction
, 0 , 0 , 32,
17252 0xfc0007ff, 0x200003cd, &NMD::PRECR_SRA_PH_W
, 0,
17253 DSP_
}, /* PRECR_SRA.PH.W */
17254 { instruction
, 0 , 0 , 32,
17255 0xfc0007ff, 0x200007cd, &NMD::PRECR_SRA_R_PH_W
, 0,
17256 DSP_
}, /* PRECR_SRA_R.PH.W */
17260 NMD::Pool
NMD::_POOL32A5
[128] = {
17261 { instruction
, 0 , 0 , 32,
17262 0xfc0003ff, 0x20000005, &NMD::CMP_EQ_PH
, 0,
17263 DSP_
}, /* CMP.EQ.PH */
17264 { pool
, ADDQ__S__PH
, 2 , 32,
17265 0xfc0003ff, 0x2000000d, 0 , 0,
17266 0x0 }, /* ADDQ[_S].PH */
17267 { reserved_block
, 0 , 0 , 32,
17268 0xfc0003ff, 0x20000015, 0 , 0,
17269 0x0 }, /* _POOL32A5~*(2) */
17270 { instruction
, 0 , 0 , 32,
17271 0xfc0003ff, 0x2000001d, &NMD::SHILO
, 0,
17272 DSP_
}, /* SHILO */
17273 { instruction
, 0 , 0 , 32,
17274 0xfc0003ff, 0x20000025, &NMD::MULEQ_S_W_PHL
, 0,
17275 DSP_
}, /* MULEQ_S.W.PHL */
17276 { pool
, MUL__S__PH
, 2 , 32,
17277 0xfc0003ff, 0x2000002d, 0 , 0,
17278 0x0 }, /* MUL[_S].PH */
17279 { reserved_block
, 0 , 0 , 32,
17280 0xfc0003ff, 0x20000035, 0 , 0,
17281 0x0 }, /* _POOL32A5~*(6) */
17282 { instruction
, 0 , 0 , 32,
17283 0xfc0003ff, 0x2000003d, &NMD::REPL_PH
, 0,
17284 DSP_
}, /* REPL.PH */
17285 { instruction
, 0 , 0 , 32,
17286 0xfc0003ff, 0x20000045, &NMD::CMP_LT_PH
, 0,
17287 DSP_
}, /* CMP.LT.PH */
17288 { pool
, ADDQH__R__PH
, 2 , 32,
17289 0xfc0003ff, 0x2000004d, 0 , 0,
17290 0x0 }, /* ADDQH[_R].PH */
17291 { reserved_block
, 0 , 0 , 32,
17292 0xfc0003ff, 0x20000055, 0 , 0,
17293 0x0 }, /* _POOL32A5~*(10) */
17294 { reserved_block
, 0 , 0 , 32,
17295 0xfc0003ff, 0x2000005d, 0 , 0,
17296 0x0 }, /* _POOL32A5~*(11) */
17297 { instruction
, 0 , 0 , 32,
17298 0xfc0003ff, 0x20000065, &NMD::MULEQ_S_W_PHR
, 0,
17299 DSP_
}, /* MULEQ_S.W.PHR */
17300 { instruction
, 0 , 0 , 32,
17301 0xfc0003ff, 0x2000006d, &NMD::PRECR_QB_PH
, 0,
17302 DSP_
}, /* PRECR.QB.PH */
17303 { reserved_block
, 0 , 0 , 32,
17304 0xfc0003ff, 0x20000075, 0 , 0,
17305 0x0 }, /* _POOL32A5~*(14) */
17306 { reserved_block
, 0 , 0 , 32,
17307 0xfc0003ff, 0x2000007d, 0 , 0,
17308 0x0 }, /* _POOL32A5~*(15) */
17309 { instruction
, 0 , 0 , 32,
17310 0xfc0003ff, 0x20000085, &NMD::CMP_LE_PH
, 0,
17311 DSP_
}, /* CMP.LE.PH */
17312 { pool
, ADDQH__R__W
, 2 , 32,
17313 0xfc0003ff, 0x2000008d, 0 , 0,
17314 0x0 }, /* ADDQH[_R].W */
17315 { instruction
, 0 , 0 , 32,
17316 0xfc0003ff, 0x20000095, &NMD::MULEU_S_PH_QBL
, 0,
17317 DSP_
}, /* MULEU_S.PH.QBL */
17318 { reserved_block
, 0 , 0 , 32,
17319 0xfc0003ff, 0x2000009d, 0 , 0,
17320 0x0 }, /* _POOL32A5~*(19) */
17321 { reserved_block
, 0 , 0 , 32,
17322 0xfc0003ff, 0x200000a5, 0 , 0,
17323 0x0 }, /* _POOL32A5~*(20) */
17324 { instruction
, 0 , 0 , 32,
17325 0xfc0003ff, 0x200000ad, &NMD::PRECRQ_QB_PH
, 0,
17326 DSP_
}, /* PRECRQ.QB.PH */
17327 { reserved_block
, 0 , 0 , 32,
17328 0xfc0003ff, 0x200000b5, 0 , 0,
17329 0x0 }, /* _POOL32A5~*(22) */
17330 { reserved_block
, 0 , 0 , 32,
17331 0xfc0003ff, 0x200000bd, 0 , 0,
17332 0x0 }, /* _POOL32A5~*(23) */
17333 { instruction
, 0 , 0 , 32,
17334 0xfc0003ff, 0x200000c5, &NMD::CMPGU_EQ_QB
, 0,
17335 DSP_
}, /* CMPGU.EQ.QB */
17336 { pool
, ADDU__S__QB
, 2 , 32,
17337 0xfc0003ff, 0x200000cd, 0 , 0,
17338 0x0 }, /* ADDU[_S].QB */
17339 { instruction
, 0 , 0 , 32,
17340 0xfc0003ff, 0x200000d5, &NMD::MULEU_S_PH_QBR
, 0,
17341 DSP_
}, /* MULEU_S.PH.QBR */
17342 { reserved_block
, 0 , 0 , 32,
17343 0xfc0003ff, 0x200000dd, 0 , 0,
17344 0x0 }, /* _POOL32A5~*(27) */
17345 { reserved_block
, 0 , 0 , 32,
17346 0xfc0003ff, 0x200000e5, 0 , 0,
17347 0x0 }, /* _POOL32A5~*(28) */
17348 { instruction
, 0 , 0 , 32,
17349 0xfc0003ff, 0x200000ed, &NMD::PRECRQ_PH_W
, 0,
17350 DSP_
}, /* PRECRQ.PH.W */
17351 { reserved_block
, 0 , 0 , 32,
17352 0xfc0003ff, 0x200000f5, 0 , 0,
17353 0x0 }, /* _POOL32A5~*(30) */
17354 { reserved_block
, 0 , 0 , 32,
17355 0xfc0003ff, 0x200000fd, 0 , 0,
17356 0x0 }, /* _POOL32A5~*(31) */
17357 { instruction
, 0 , 0 , 32,
17358 0xfc0003ff, 0x20000105, &NMD::CMPGU_LT_QB
, 0,
17359 DSP_
}, /* CMPGU.LT.QB */
17360 { pool
, ADDU__S__PH
, 2 , 32,
17361 0xfc0003ff, 0x2000010d, 0 , 0,
17362 0x0 }, /* ADDU[_S].PH */
17363 { instruction
, 0 , 0 , 32,
17364 0xfc0003ff, 0x20000115, &NMD::MULQ_RS_PH
, 0,
17365 DSP_
}, /* MULQ_RS.PH */
17366 { reserved_block
, 0 , 0 , 32,
17367 0xfc0003ff, 0x2000011d, 0 , 0,
17368 0x0 }, /* _POOL32A5~*(35) */
17369 { reserved_block
, 0 , 0 , 32,
17370 0xfc0003ff, 0x20000125, 0 , 0,
17371 0x0 }, /* _POOL32A5~*(36) */
17372 { instruction
, 0 , 0 , 32,
17373 0xfc0003ff, 0x2000012d, &NMD::PRECRQ_RS_PH_W
, 0,
17374 DSP_
}, /* PRECRQ_RS.PH.W */
17375 { reserved_block
, 0 , 0 , 32,
17376 0xfc0003ff, 0x20000135, 0 , 0,
17377 0x0 }, /* _POOL32A5~*(38) */
17378 { reserved_block
, 0 , 0 , 32,
17379 0xfc0003ff, 0x2000013d, 0 , 0,
17380 0x0 }, /* _POOL32A5~*(39) */
17381 { instruction
, 0 , 0 , 32,
17382 0xfc0003ff, 0x20000145, &NMD::CMPGU_LE_QB
, 0,
17383 DSP_
}, /* CMPGU.LE.QB */
17384 { pool
, ADDUH__R__QB
, 2 , 32,
17385 0xfc0003ff, 0x2000014d, 0 , 0,
17386 0x0 }, /* ADDUH[_R].QB */
17387 { instruction
, 0 , 0 , 32,
17388 0xfc0003ff, 0x20000155, &NMD::MULQ_S_PH
, 0,
17389 DSP_
}, /* MULQ_S.PH */
17390 { reserved_block
, 0 , 0 , 32,
17391 0xfc0003ff, 0x2000015d, 0 , 0,
17392 0x0 }, /* _POOL32A5~*(43) */
17393 { reserved_block
, 0 , 0 , 32,
17394 0xfc0003ff, 0x20000165, 0 , 0,
17395 0x0 }, /* _POOL32A5~*(44) */
17396 { instruction
, 0 , 0 , 32,
17397 0xfc0003ff, 0x2000016d, &NMD::PRECRQU_S_QB_PH
, 0,
17398 DSP_
}, /* PRECRQU_S.QB.PH */
17399 { reserved_block
, 0 , 0 , 32,
17400 0xfc0003ff, 0x20000175, 0 , 0,
17401 0x0 }, /* _POOL32A5~*(46) */
17402 { reserved_block
, 0 , 0 , 32,
17403 0xfc0003ff, 0x2000017d, 0 , 0,
17404 0x0 }, /* _POOL32A5~*(47) */
17405 { instruction
, 0 , 0 , 32,
17406 0xfc0003ff, 0x20000185, &NMD::CMPGDU_EQ_QB
, 0,
17407 DSP_
}, /* CMPGDU.EQ.QB */
17408 { pool
, SHRAV__R__PH
, 2 , 32,
17409 0xfc0003ff, 0x2000018d, 0 , 0,
17410 0x0 }, /* SHRAV[_R].PH */
17411 { instruction
, 0 , 0 , 32,
17412 0xfc0003ff, 0x20000195, &NMD::MULQ_RS_W
, 0,
17413 DSP_
}, /* MULQ_RS.W */
17414 { reserved_block
, 0 , 0 , 32,
17415 0xfc0003ff, 0x2000019d, 0 , 0,
17416 0x0 }, /* _POOL32A5~*(51) */
17417 { reserved_block
, 0 , 0 , 32,
17418 0xfc0003ff, 0x200001a5, 0 , 0,
17419 0x0 }, /* _POOL32A5~*(52) */
17420 { instruction
, 0 , 0 , 32,
17421 0xfc0003ff, 0x200001ad, &NMD::PACKRL_PH
, 0,
17422 DSP_
}, /* PACKRL.PH */
17423 { reserved_block
, 0 , 0 , 32,
17424 0xfc0003ff, 0x200001b5, 0 , 0,
17425 0x0 }, /* _POOL32A5~*(54) */
17426 { reserved_block
, 0 , 0 , 32,
17427 0xfc0003ff, 0x200001bd, 0 , 0,
17428 0x0 }, /* _POOL32A5~*(55) */
17429 { instruction
, 0 , 0 , 32,
17430 0xfc0003ff, 0x200001c5, &NMD::CMPGDU_LT_QB
, 0,
17431 DSP_
}, /* CMPGDU.LT.QB */
17432 { pool
, SHRAV__R__QB
, 2 , 32,
17433 0xfc0003ff, 0x200001cd, 0 , 0,
17434 0x0 }, /* SHRAV[_R].QB */
17435 { instruction
, 0 , 0 , 32,
17436 0xfc0003ff, 0x200001d5, &NMD::MULQ_S_W
, 0,
17437 DSP_
}, /* MULQ_S.W */
17438 { reserved_block
, 0 , 0 , 32,
17439 0xfc0003ff, 0x200001dd, 0 , 0,
17440 0x0 }, /* _POOL32A5~*(59) */
17441 { reserved_block
, 0 , 0 , 32,
17442 0xfc0003ff, 0x200001e5, 0 , 0,
17443 0x0 }, /* _POOL32A5~*(60) */
17444 { instruction
, 0 , 0 , 32,
17445 0xfc0003ff, 0x200001ed, &NMD::PICK_QB
, 0,
17446 DSP_
}, /* PICK.QB */
17447 { reserved_block
, 0 , 0 , 32,
17448 0xfc0003ff, 0x200001f5, 0 , 0,
17449 0x0 }, /* _POOL32A5~*(62) */
17450 { reserved_block
, 0 , 0 , 32,
17451 0xfc0003ff, 0x200001fd, 0 , 0,
17452 0x0 }, /* _POOL32A5~*(63) */
17453 { instruction
, 0 , 0 , 32,
17454 0xfc0003ff, 0x20000205, &NMD::CMPGDU_LE_QB
, 0,
17455 DSP_
}, /* CMPGDU.LE.QB */
17456 { pool
, SUBQ__S__PH
, 2 , 32,
17457 0xfc0003ff, 0x2000020d, 0 , 0,
17458 0x0 }, /* SUBQ[_S].PH */
17459 { instruction
, 0 , 0 , 32,
17460 0xfc0003ff, 0x20000215, &NMD::APPEND
, 0,
17461 DSP_
}, /* APPEND */
17462 { reserved_block
, 0 , 0 , 32,
17463 0xfc0003ff, 0x2000021d, 0 , 0,
17464 0x0 }, /* _POOL32A5~*(67) */
17465 { reserved_block
, 0 , 0 , 32,
17466 0xfc0003ff, 0x20000225, 0 , 0,
17467 0x0 }, /* _POOL32A5~*(68) */
17468 { instruction
, 0 , 0 , 32,
17469 0xfc0003ff, 0x2000022d, &NMD::PICK_PH
, 0,
17470 DSP_
}, /* PICK.PH */
17471 { reserved_block
, 0 , 0 , 32,
17472 0xfc0003ff, 0x20000235, 0 , 0,
17473 0x0 }, /* _POOL32A5~*(70) */
17474 { reserved_block
, 0 , 0 , 32,
17475 0xfc0003ff, 0x2000023d, 0 , 0,
17476 0x0 }, /* _POOL32A5~*(71) */
17477 { instruction
, 0 , 0 , 32,
17478 0xfc0003ff, 0x20000245, &NMD::CMPU_EQ_QB
, 0,
17479 DSP_
}, /* CMPU.EQ.QB */
17480 { pool
, SUBQH__R__PH
, 2 , 32,
17481 0xfc0003ff, 0x2000024d, 0 , 0,
17482 0x0 }, /* SUBQH[_R].PH */
17483 { instruction
, 0 , 0 , 32,
17484 0xfc0003ff, 0x20000255, &NMD::PREPEND
, 0,
17485 DSP_
}, /* PREPEND */
17486 { reserved_block
, 0 , 0 , 32,
17487 0xfc0003ff, 0x2000025d, 0 , 0,
17488 0x0 }, /* _POOL32A5~*(75) */
17489 { reserved_block
, 0 , 0 , 32,
17490 0xfc0003ff, 0x20000265, 0 , 0,
17491 0x0 }, /* _POOL32A5~*(76) */
17492 { reserved_block
, 0 , 0 , 32,
17493 0xfc0003ff, 0x2000026d, 0 , 0,
17494 0x0 }, /* _POOL32A5~*(77) */
17495 { reserved_block
, 0 , 0 , 32,
17496 0xfc0003ff, 0x20000275, 0 , 0,
17497 0x0 }, /* _POOL32A5~*(78) */
17498 { reserved_block
, 0 , 0 , 32,
17499 0xfc0003ff, 0x2000027d, 0 , 0,
17500 0x0 }, /* _POOL32A5~*(79) */
17501 { instruction
, 0 , 0 , 32,
17502 0xfc0003ff, 0x20000285, &NMD::CMPU_LT_QB
, 0,
17503 DSP_
}, /* CMPU.LT.QB */
17504 { pool
, SUBQH__R__W
, 2 , 32,
17505 0xfc0003ff, 0x2000028d, 0 , 0,
17506 0x0 }, /* SUBQH[_R].W */
17507 { instruction
, 0 , 0 , 32,
17508 0xfc0003ff, 0x20000295, &NMD::MODSUB
, 0,
17509 DSP_
}, /* MODSUB */
17510 { reserved_block
, 0 , 0 , 32,
17511 0xfc0003ff, 0x2000029d, 0 , 0,
17512 0x0 }, /* _POOL32A5~*(83) */
17513 { reserved_block
, 0 , 0 , 32,
17514 0xfc0003ff, 0x200002a5, 0 , 0,
17515 0x0 }, /* _POOL32A5~*(84) */
17516 { reserved_block
, 0 , 0 , 32,
17517 0xfc0003ff, 0x200002ad, 0 , 0,
17518 0x0 }, /* _POOL32A5~*(85) */
17519 { reserved_block
, 0 , 0 , 32,
17520 0xfc0003ff, 0x200002b5, 0 , 0,
17521 0x0 }, /* _POOL32A5~*(86) */
17522 { reserved_block
, 0 , 0 , 32,
17523 0xfc0003ff, 0x200002bd, 0 , 0,
17524 0x0 }, /* _POOL32A5~*(87) */
17525 { instruction
, 0 , 0 , 32,
17526 0xfc0003ff, 0x200002c5, &NMD::CMPU_LE_QB
, 0,
17527 DSP_
}, /* CMPU.LE.QB */
17528 { pool
, SUBU__S__QB
, 2 , 32,
17529 0xfc0003ff, 0x200002cd, 0 , 0,
17530 0x0 }, /* SUBU[_S].QB */
17531 { instruction
, 0 , 0 , 32,
17532 0xfc0003ff, 0x200002d5, &NMD::SHRAV_R_W
, 0,
17533 DSP_
}, /* SHRAV_R.W */
17534 { reserved_block
, 0 , 0 , 32,
17535 0xfc0003ff, 0x200002dd, 0 , 0,
17536 0x0 }, /* _POOL32A5~*(91) */
17537 { reserved_block
, 0 , 0 , 32,
17538 0xfc0003ff, 0x200002e5, 0 , 0,
17539 0x0 }, /* _POOL32A5~*(92) */
17540 { reserved_block
, 0 , 0 , 32,
17541 0xfc0003ff, 0x200002ed, 0 , 0,
17542 0x0 }, /* _POOL32A5~*(93) */
17543 { instruction
, 0 , 0 , 32,
17544 0xfc0003ff, 0x200002f5, &NMD::SHRA_R_W
, 0,
17545 DSP_
}, /* SHRA_R.W */
17546 { reserved_block
, 0 , 0 , 32,
17547 0xfc0003ff, 0x200002fd, 0 , 0,
17548 0x0 }, /* _POOL32A5~*(95) */
17549 { instruction
, 0 , 0 , 32,
17550 0xfc0003ff, 0x20000305, &NMD::ADDQ_S_W
, 0,
17551 DSP_
}, /* ADDQ_S.W */
17552 { pool
, SUBU__S__PH
, 2 , 32,
17553 0xfc0003ff, 0x2000030d, 0 , 0,
17554 0x0 }, /* SUBU[_S].PH */
17555 { instruction
, 0 , 0 , 32,
17556 0xfc0003ff, 0x20000315, &NMD::SHRLV_PH
, 0,
17557 DSP_
}, /* SHRLV.PH */
17558 { reserved_block
, 0 , 0 , 32,
17559 0xfc0003ff, 0x2000031d, 0 , 0,
17560 0x0 }, /* _POOL32A5~*(99) */
17561 { reserved_block
, 0 , 0 , 32,
17562 0xfc0003ff, 0x20000325, 0 , 0,
17563 0x0 }, /* _POOL32A5~*(100) */
17564 { reserved_block
, 0 , 0 , 32,
17565 0xfc0003ff, 0x2000032d, 0 , 0,
17566 0x0 }, /* _POOL32A5~*(101) */
17567 { pool
, SHRA__R__PH
, 2 , 32,
17568 0xfc0003ff, 0x20000335, 0 , 0,
17569 0x0 }, /* SHRA[_R].PH */
17570 { reserved_block
, 0 , 0 , 32,
17571 0xfc0003ff, 0x2000033d, 0 , 0,
17572 0x0 }, /* _POOL32A5~*(103) */
17573 { instruction
, 0 , 0 , 32,
17574 0xfc0003ff, 0x20000345, &NMD::SUBQ_S_W
, 0,
17575 DSP_
}, /* SUBQ_S.W */
17576 { pool
, SUBUH__R__QB
, 2 , 32,
17577 0xfc0003ff, 0x2000034d, 0 , 0,
17578 0x0 }, /* SUBUH[_R].QB */
17579 { instruction
, 0 , 0 , 32,
17580 0xfc0003ff, 0x20000355, &NMD::SHRLV_QB
, 0,
17581 DSP_
}, /* SHRLV.QB */
17582 { reserved_block
, 0 , 0 , 32,
17583 0xfc0003ff, 0x2000035d, 0 , 0,
17584 0x0 }, /* _POOL32A5~*(107) */
17585 { reserved_block
, 0 , 0 , 32,
17586 0xfc0003ff, 0x20000365, 0 , 0,
17587 0x0 }, /* _POOL32A5~*(108) */
17588 { reserved_block
, 0 , 0 , 32,
17589 0xfc0003ff, 0x2000036d, 0 , 0,
17590 0x0 }, /* _POOL32A5~*(109) */
17591 { reserved_block
, 0 , 0 , 32,
17592 0xfc0003ff, 0x20000375, 0 , 0,
17593 0x0 }, /* _POOL32A5~*(110) */
17594 { reserved_block
, 0 , 0 , 32,
17595 0xfc0003ff, 0x2000037d, 0 , 0,
17596 0x0 }, /* _POOL32A5~*(111) */
17597 { instruction
, 0 , 0 , 32,
17598 0xfc0003ff, 0x20000385, &NMD::ADDSC
, 0,
17599 DSP_
}, /* ADDSC */
17600 { pool
, SHLLV__S__PH
, 2 , 32,
17601 0xfc0003ff, 0x2000038d, 0 , 0,
17602 0x0 }, /* SHLLV[_S].PH */
17603 { instruction
, 0 , 0 , 32,
17604 0xfc0003ff, 0x20000395, &NMD::SHLLV_QB
, 0,
17605 DSP_
}, /* SHLLV.QB */
17606 { reserved_block
, 0 , 0 , 32,
17607 0xfc0003ff, 0x2000039d, 0 , 0,
17608 0x0 }, /* _POOL32A5~*(115) */
17609 { reserved_block
, 0 , 0 , 32,
17610 0xfc0003ff, 0x200003a5, 0 , 0,
17611 0x0 }, /* _POOL32A5~*(116) */
17612 { reserved_block
, 0 , 0 , 32,
17613 0xfc0003ff, 0x200003ad, 0 , 0,
17614 0x0 }, /* _POOL32A5~*(117) */
17615 { pool
, SHLL__S__PH
, 4 , 32,
17616 0xfc0003ff, 0x200003b5, 0 , 0,
17617 0x0 }, /* SHLL[_S].PH */
17618 { reserved_block
, 0 , 0 , 32,
17619 0xfc0003ff, 0x200003bd, 0 , 0,
17620 0x0 }, /* _POOL32A5~*(119) */
17621 { instruction
, 0 , 0 , 32,
17622 0xfc0003ff, 0x200003c5, &NMD::ADDWC
, 0,
17623 DSP_
}, /* ADDWC */
17624 { pool
, PRECR_SRA__R__PH_W
, 2 , 32,
17625 0xfc0003ff, 0x200003cd, 0 , 0,
17626 0x0 }, /* PRECR_SRA[_R].PH.W */
17627 { instruction
, 0 , 0 , 32,
17628 0xfc0003ff, 0x200003d5, &NMD::SHLLV_S_W
, 0,
17629 DSP_
}, /* SHLLV_S.W */
17630 { reserved_block
, 0 , 0 , 32,
17631 0xfc0003ff, 0x200003dd, 0 , 0,
17632 0x0 }, /* _POOL32A5~*(123) */
17633 { reserved_block
, 0 , 0 , 32,
17634 0xfc0003ff, 0x200003e5, 0 , 0,
17635 0x0 }, /* _POOL32A5~*(124) */
17636 { reserved_block
, 0 , 0 , 32,
17637 0xfc0003ff, 0x200003ed, 0 , 0,
17638 0x0 }, /* _POOL32A5~*(125) */
17639 { instruction
, 0 , 0 , 32,
17640 0xfc0003ff, 0x200003f5, &NMD::SHLL_S_W
, 0,
17641 DSP_
}, /* SHLL_S.W */
17642 { reserved_block
, 0 , 0 , 32,
17643 0xfc0003ff, 0x200003fd, 0 , 0,
17644 0x0 }, /* _POOL32A5~*(127) */
17648 NMD::Pool
NMD::PP_LSX
[16] = {
17649 { instruction
, 0 , 0 , 32,
17650 0xfc0007ff, 0x20000007, &NMD::LBX
, 0,
17652 { instruction
, 0 , 0 , 32,
17653 0xfc0007ff, 0x20000087, &NMD::SBX
, 0,
17655 { instruction
, 0 , 0 , 32,
17656 0xfc0007ff, 0x20000107, &NMD::LBUX
, 0,
17658 { reserved_block
, 0 , 0 , 32,
17659 0xfc0007ff, 0x20000187, 0 , 0,
17660 0x0 }, /* PP.LSX~*(3) */
17661 { instruction
, 0 , 0 , 32,
17662 0xfc0007ff, 0x20000207, &NMD::LHX
, 0,
17664 { instruction
, 0 , 0 , 32,
17665 0xfc0007ff, 0x20000287, &NMD::SHX
, 0,
17667 { instruction
, 0 , 0 , 32,
17668 0xfc0007ff, 0x20000307, &NMD::LHUX
, 0,
17670 { instruction
, 0 , 0 , 32,
17671 0xfc0007ff, 0x20000387, &NMD::LWUX
, 0,
17672 MIPS64_
}, /* LWUX */
17673 { instruction
, 0 , 0 , 32,
17674 0xfc0007ff, 0x20000407, &NMD::LWX
, 0,
17676 { instruction
, 0 , 0 , 32,
17677 0xfc0007ff, 0x20000487, &NMD::SWX
, 0,
17679 { instruction
, 0 , 0 , 32,
17680 0xfc0007ff, 0x20000507, &NMD::LWC1X
, 0,
17681 CP1_
}, /* LWC1X */
17682 { instruction
, 0 , 0 , 32,
17683 0xfc0007ff, 0x20000587, &NMD::SWC1X
, 0,
17684 CP1_
}, /* SWC1X */
17685 { instruction
, 0 , 0 , 32,
17686 0xfc0007ff, 0x20000607, &NMD::LDX
, 0,
17687 MIPS64_
}, /* LDX */
17688 { instruction
, 0 , 0 , 32,
17689 0xfc0007ff, 0x20000687, &NMD::SDX
, 0,
17690 MIPS64_
}, /* SDX */
17691 { instruction
, 0 , 0 , 32,
17692 0xfc0007ff, 0x20000707, &NMD::LDC1X
, 0,
17693 CP1_
}, /* LDC1X */
17694 { instruction
, 0 , 0 , 32,
17695 0xfc0007ff, 0x20000787, &NMD::SDC1X
, 0,
17696 CP1_
}, /* SDC1X */
17700 NMD::Pool
NMD::PP_LSXS
[16] = {
17701 { reserved_block
, 0 , 0 , 32,
17702 0xfc0007ff, 0x20000047, 0 , 0,
17703 0x0 }, /* PP.LSXS~*(0) */
17704 { reserved_block
, 0 , 0 , 32,
17705 0xfc0007ff, 0x200000c7, 0 , 0,
17706 0x0 }, /* PP.LSXS~*(1) */
17707 { reserved_block
, 0 , 0 , 32,
17708 0xfc0007ff, 0x20000147, 0 , 0,
17709 0x0 }, /* PP.LSXS~*(2) */
17710 { reserved_block
, 0 , 0 , 32,
17711 0xfc0007ff, 0x200001c7, 0 , 0,
17712 0x0 }, /* PP.LSXS~*(3) */
17713 { instruction
, 0 , 0 , 32,
17714 0xfc0007ff, 0x20000247, &NMD::LHXS
, 0,
17716 { instruction
, 0 , 0 , 32,
17717 0xfc0007ff, 0x200002c7, &NMD::SHXS
, 0,
17718 XMMS_
}, /* SHXS */
17719 { instruction
, 0 , 0 , 32,
17720 0xfc0007ff, 0x20000347, &NMD::LHUXS
, 0,
17722 { instruction
, 0 , 0 , 32,
17723 0xfc0007ff, 0x200003c7, &NMD::LWUXS
, 0,
17724 MIPS64_
}, /* LWUXS */
17725 { instruction
, 0 , 0 , 32,
17726 0xfc0007ff, 0x20000447, &NMD::LWXS_32_
, 0,
17727 0x0 }, /* LWXS[32] */
17728 { instruction
, 0 , 0 , 32,
17729 0xfc0007ff, 0x200004c7, &NMD::SWXS
, 0,
17730 XMMS_
}, /* SWXS */
17731 { instruction
, 0 , 0 , 32,
17732 0xfc0007ff, 0x20000547, &NMD::LWC1XS
, 0,
17733 CP1_
}, /* LWC1XS */
17734 { instruction
, 0 , 0 , 32,
17735 0xfc0007ff, 0x200005c7, &NMD::SWC1XS
, 0,
17736 CP1_
}, /* SWC1XS */
17737 { instruction
, 0 , 0 , 32,
17738 0xfc0007ff, 0x20000647, &NMD::LDXS
, 0,
17739 MIPS64_
}, /* LDXS */
17740 { instruction
, 0 , 0 , 32,
17741 0xfc0007ff, 0x200006c7, &NMD::SDXS
, 0,
17742 MIPS64_
}, /* SDXS */
17743 { instruction
, 0 , 0 , 32,
17744 0xfc0007ff, 0x20000747, &NMD::LDC1XS
, 0,
17745 CP1_
}, /* LDC1XS */
17746 { instruction
, 0 , 0 , 32,
17747 0xfc0007ff, 0x200007c7, &NMD::SDC1XS
, 0,
17748 CP1_
}, /* SDC1XS */
17752 NMD::Pool
NMD::P_LSX
[2] = {
17753 { pool
, PP_LSX
, 16 , 32,
17754 0xfc00007f, 0x20000007, 0 , 0,
17755 0x0 }, /* PP.LSX */
17756 { pool
, PP_LSXS
, 16 , 32,
17757 0xfc00007f, 0x20000047, 0 , 0,
17758 0x0 }, /* PP.LSXS */
17762 NMD::Pool
NMD::POOL32Axf_1_0
[4] = {
17763 { instruction
, 0 , 0 , 32,
17764 0xfc003fff, 0x2000007f, &NMD::MFHI_DSP_
, 0,
17765 DSP_
}, /* MFHI[DSP] */
17766 { instruction
, 0 , 0 , 32,
17767 0xfc003fff, 0x2000107f, &NMD::MFLO_DSP_
, 0,
17768 DSP_
}, /* MFLO[DSP] */
17769 { instruction
, 0 , 0 , 32,
17770 0xfc003fff, 0x2000207f, &NMD::MTHI_DSP_
, 0,
17771 DSP_
}, /* MTHI[DSP] */
17772 { instruction
, 0 , 0 , 32,
17773 0xfc003fff, 0x2000307f, &NMD::MTLO_DSP_
, 0,
17774 DSP_
}, /* MTLO[DSP] */
17778 NMD::Pool
NMD::POOL32Axf_1_1
[4] = {
17779 { instruction
, 0 , 0 , 32,
17780 0xfc003fff, 0x2000027f, &NMD::MTHLIP
, 0,
17781 DSP_
}, /* MTHLIP */
17782 { instruction
, 0 , 0 , 32,
17783 0xfc003fff, 0x2000127f, &NMD::SHILOV
, 0,
17784 DSP_
}, /* SHILOV */
17785 { reserved_block
, 0 , 0 , 32,
17786 0xfc003fff, 0x2000227f, 0 , 0,
17787 0x0 }, /* POOL32Axf_1_1~*(2) */
17788 { reserved_block
, 0 , 0 , 32,
17789 0xfc003fff, 0x2000327f, 0 , 0,
17790 0x0 }, /* POOL32Axf_1_1~*(3) */
17794 NMD::Pool
NMD::POOL32Axf_1_3
[4] = {
17795 { instruction
, 0 , 0 , 32,
17796 0xfc003fff, 0x2000067f, &NMD::RDDSP
, 0,
17797 DSP_
}, /* RDDSP */
17798 { instruction
, 0 , 0 , 32,
17799 0xfc003fff, 0x2000167f, &NMD::WRDSP
, 0,
17800 DSP_
}, /* WRDSP */
17801 { instruction
, 0 , 0 , 32,
17802 0xfc003fff, 0x2000267f, &NMD::EXTP
, 0,
17804 { instruction
, 0 , 0 , 32,
17805 0xfc003fff, 0x2000367f, &NMD::EXTPDP
, 0,
17806 DSP_
}, /* EXTPDP */
17810 NMD::Pool
NMD::POOL32Axf_1_4
[2] = {
17811 { instruction
, 0 , 0 , 32,
17812 0xfc001fff, 0x2000087f, &NMD::SHLL_QB
, 0,
17813 DSP_
}, /* SHLL.QB */
17814 { instruction
, 0 , 0 , 32,
17815 0xfc001fff, 0x2000187f, &NMD::SHRL_QB
, 0,
17816 DSP_
}, /* SHRL.QB */
17820 NMD::Pool
NMD::MAQ_S_A__W_PHR
[2] = {
17821 { instruction
, 0 , 0 , 32,
17822 0xfc003fff, 0x20000a7f, &NMD::MAQ_S_W_PHR
, 0,
17823 DSP_
}, /* MAQ_S.W.PHR */
17824 { instruction
, 0 , 0 , 32,
17825 0xfc003fff, 0x20002a7f, &NMD::MAQ_SA_W_PHR
, 0,
17826 DSP_
}, /* MAQ_SA.W.PHR */
17830 NMD::Pool
NMD::MAQ_S_A__W_PHL
[2] = {
17831 { instruction
, 0 , 0 , 32,
17832 0xfc003fff, 0x20001a7f, &NMD::MAQ_S_W_PHL
, 0,
17833 DSP_
}, /* MAQ_S.W.PHL */
17834 { instruction
, 0 , 0 , 32,
17835 0xfc003fff, 0x20003a7f, &NMD::MAQ_SA_W_PHL
, 0,
17836 DSP_
}, /* MAQ_SA.W.PHL */
17840 NMD::Pool
NMD::POOL32Axf_1_5
[2] = {
17841 { pool
, MAQ_S_A__W_PHR
, 2 , 32,
17842 0xfc001fff, 0x20000a7f, 0 , 0,
17843 0x0 }, /* MAQ_S[A].W.PHR */
17844 { pool
, MAQ_S_A__W_PHL
, 2 , 32,
17845 0xfc001fff, 0x20001a7f, 0 , 0,
17846 0x0 }, /* MAQ_S[A].W.PHL */
17850 NMD::Pool
NMD::POOL32Axf_1_7
[4] = {
17851 { instruction
, 0 , 0 , 32,
17852 0xfc003fff, 0x20000e7f, &NMD::EXTR_W
, 0,
17853 DSP_
}, /* EXTR.W */
17854 { instruction
, 0 , 0 , 32,
17855 0xfc003fff, 0x20001e7f, &NMD::EXTR_R_W
, 0,
17856 DSP_
}, /* EXTR_R.W */
17857 { instruction
, 0 , 0 , 32,
17858 0xfc003fff, 0x20002e7f, &NMD::EXTR_RS_W
, 0,
17859 DSP_
}, /* EXTR_RS.W */
17860 { instruction
, 0 , 0 , 32,
17861 0xfc003fff, 0x20003e7f, &NMD::EXTR_S_H
, 0,
17862 DSP_
}, /* EXTR_S.H */
17866 NMD::Pool
NMD::POOL32Axf_1
[8] = {
17867 { pool
, POOL32Axf_1_0
, 4 , 32,
17868 0xfc000fff, 0x2000007f, 0 , 0,
17869 0x0 }, /* POOL32Axf_1_0 */
17870 { pool
, POOL32Axf_1_1
, 4 , 32,
17871 0xfc000fff, 0x2000027f, 0 , 0,
17872 0x0 }, /* POOL32Axf_1_1 */
17873 { reserved_block
, 0 , 0 , 32,
17874 0xfc000fff, 0x2000047f, 0 , 0,
17875 0x0 }, /* POOL32Axf_1~*(2) */
17876 { pool
, POOL32Axf_1_3
, 4 , 32,
17877 0xfc000fff, 0x2000067f, 0 , 0,
17878 0x0 }, /* POOL32Axf_1_3 */
17879 { pool
, POOL32Axf_1_4
, 2 , 32,
17880 0xfc000fff, 0x2000087f, 0 , 0,
17881 0x0 }, /* POOL32Axf_1_4 */
17882 { pool
, POOL32Axf_1_5
, 2 , 32,
17883 0xfc000fff, 0x20000a7f, 0 , 0,
17884 0x0 }, /* POOL32Axf_1_5 */
17885 { reserved_block
, 0 , 0 , 32,
17886 0xfc000fff, 0x20000c7f, 0 , 0,
17887 0x0 }, /* POOL32Axf_1~*(6) */
17888 { pool
, POOL32Axf_1_7
, 4 , 32,
17889 0xfc000fff, 0x20000e7f, 0 , 0,
17890 0x0 }, /* POOL32Axf_1_7 */
17894 NMD::Pool
NMD::POOL32Axf_2_DSP__0_7
[8] = {
17895 { instruction
, 0 , 0 , 32,
17896 0xfc003fff, 0x200000bf, &NMD::DPA_W_PH
, 0,
17897 DSP_
}, /* DPA.W.PH */
17898 { instruction
, 0 , 0 , 32,
17899 0xfc003fff, 0x200002bf, &NMD::DPAQ_S_W_PH
, 0,
17900 DSP_
}, /* DPAQ_S.W.PH */
17901 { instruction
, 0 , 0 , 32,
17902 0xfc003fff, 0x200004bf, &NMD::DPS_W_PH
, 0,
17903 DSP_
}, /* DPS.W.PH */
17904 { instruction
, 0 , 0 , 32,
17905 0xfc003fff, 0x200006bf, &NMD::DPSQ_S_W_PH
, 0,
17906 DSP_
}, /* DPSQ_S.W.PH */
17907 { reserved_block
, 0 , 0 , 32,
17908 0xfc003fff, 0x200008bf, 0 , 0,
17909 0x0 }, /* POOL32Axf_2(DSP)_0_7~*(4) */
17910 { instruction
, 0 , 0 , 32,
17911 0xfc003fff, 0x20000abf, &NMD::MADD_DSP_
, 0,
17912 DSP_
}, /* MADD[DSP] */
17913 { instruction
, 0 , 0 , 32,
17914 0xfc003fff, 0x20000cbf, &NMD::MULT_DSP_
, 0,
17915 DSP_
}, /* MULT[DSP] */
17916 { instruction
, 0 , 0 , 32,
17917 0xfc003fff, 0x20000ebf, &NMD::EXTRV_W
, 0,
17918 DSP_
}, /* EXTRV.W */
17922 NMD::Pool
NMD::POOL32Axf_2_DSP__8_15
[8] = {
17923 { instruction
, 0 , 0 , 32,
17924 0xfc003fff, 0x200010bf, &NMD::DPAX_W_PH
, 0,
17925 DSP_
}, /* DPAX.W.PH */
17926 { instruction
, 0 , 0 , 32,
17927 0xfc003fff, 0x200012bf, &NMD::DPAQ_SA_L_W
, 0,
17928 DSP_
}, /* DPAQ_SA.L.W */
17929 { instruction
, 0 , 0 , 32,
17930 0xfc003fff, 0x200014bf, &NMD::DPSX_W_PH
, 0,
17931 DSP_
}, /* DPSX.W.PH */
17932 { instruction
, 0 , 0 , 32,
17933 0xfc003fff, 0x200016bf, &NMD::DPSQ_SA_L_W
, 0,
17934 DSP_
}, /* DPSQ_SA.L.W */
17935 { reserved_block
, 0 , 0 , 32,
17936 0xfc003fff, 0x200018bf, 0 , 0,
17937 0x0 }, /* POOL32Axf_2(DSP)_8_15~*(4) */
17938 { instruction
, 0 , 0 , 32,
17939 0xfc003fff, 0x20001abf, &NMD::MADDU_DSP_
, 0,
17940 DSP_
}, /* MADDU[DSP] */
17941 { instruction
, 0 , 0 , 32,
17942 0xfc003fff, 0x20001cbf, &NMD::MULTU_DSP_
, 0,
17943 DSP_
}, /* MULTU[DSP] */
17944 { instruction
, 0 , 0 , 32,
17945 0xfc003fff, 0x20001ebf, &NMD::EXTRV_R_W
, 0,
17946 DSP_
}, /* EXTRV_R.W */
17950 NMD::Pool
NMD::POOL32Axf_2_DSP__16_23
[8] = {
17951 { instruction
, 0 , 0 , 32,
17952 0xfc003fff, 0x200020bf, &NMD::DPAU_H_QBL
, 0,
17953 DSP_
}, /* DPAU.H.QBL */
17954 { instruction
, 0 , 0 , 32,
17955 0xfc003fff, 0x200022bf, &NMD::DPAQX_S_W_PH
, 0,
17956 DSP_
}, /* DPAQX_S.W.PH */
17957 { instruction
, 0 , 0 , 32,
17958 0xfc003fff, 0x200024bf, &NMD::DPSU_H_QBL
, 0,
17959 DSP_
}, /* DPSU.H.QBL */
17960 { instruction
, 0 , 0 , 32,
17961 0xfc003fff, 0x200026bf, &NMD::DPSQX_S_W_PH
, 0,
17962 DSP_
}, /* DPSQX_S.W.PH */
17963 { instruction
, 0 , 0 , 32,
17964 0xfc003fff, 0x200028bf, &NMD::EXTPV
, 0,
17965 DSP_
}, /* EXTPV */
17966 { instruction
, 0 , 0 , 32,
17967 0xfc003fff, 0x20002abf, &NMD::MSUB_DSP_
, 0,
17968 DSP_
}, /* MSUB[DSP] */
17969 { instruction
, 0 , 0 , 32,
17970 0xfc003fff, 0x20002cbf, &NMD::MULSA_W_PH
, 0,
17971 DSP_
}, /* MULSA.W.PH */
17972 { instruction
, 0 , 0 , 32,
17973 0xfc003fff, 0x20002ebf, &NMD::EXTRV_RS_W
, 0,
17974 DSP_
}, /* EXTRV_RS.W */
17978 NMD::Pool
NMD::POOL32Axf_2_DSP__24_31
[8] = {
17979 { instruction
, 0 , 0 , 32,
17980 0xfc003fff, 0x200030bf, &NMD::DPAU_H_QBR
, 0,
17981 DSP_
}, /* DPAU.H.QBR */
17982 { instruction
, 0 , 0 , 32,
17983 0xfc003fff, 0x200032bf, &NMD::DPAQX_SA_W_PH
, 0,
17984 DSP_
}, /* DPAQX_SA.W.PH */
17985 { instruction
, 0 , 0 , 32,
17986 0xfc003fff, 0x200034bf, &NMD::DPSU_H_QBR
, 0,
17987 DSP_
}, /* DPSU.H.QBR */
17988 { instruction
, 0 , 0 , 32,
17989 0xfc003fff, 0x200036bf, &NMD::DPSQX_SA_W_PH
, 0,
17990 DSP_
}, /* DPSQX_SA.W.PH */
17991 { instruction
, 0 , 0 , 32,
17992 0xfc003fff, 0x200038bf, &NMD::EXTPDPV
, 0,
17993 DSP_
}, /* EXTPDPV */
17994 { instruction
, 0 , 0 , 32,
17995 0xfc003fff, 0x20003abf, &NMD::MSUBU_DSP_
, 0,
17996 DSP_
}, /* MSUBU[DSP] */
17997 { instruction
, 0 , 0 , 32,
17998 0xfc003fff, 0x20003cbf, &NMD::MULSAQ_S_W_PH
, 0,
17999 DSP_
}, /* MULSAQ_S.W.PH */
18000 { instruction
, 0 , 0 , 32,
18001 0xfc003fff, 0x20003ebf, &NMD::EXTRV_S_H
, 0,
18002 DSP_
}, /* EXTRV_S.H */
18006 NMD::Pool
NMD::POOL32Axf_2
[4] = {
18007 { pool
, POOL32Axf_2_DSP__0_7
, 8 , 32,
18008 0xfc0031ff, 0x200000bf, 0 , 0,
18009 0x0 }, /* POOL32Axf_2(DSP)_0_7 */
18010 { pool
, POOL32Axf_2_DSP__8_15
, 8 , 32,
18011 0xfc0031ff, 0x200010bf, 0 , 0,
18012 0x0 }, /* POOL32Axf_2(DSP)_8_15 */
18013 { pool
, POOL32Axf_2_DSP__16_23
, 8 , 32,
18014 0xfc0031ff, 0x200020bf, 0 , 0,
18015 0x0 }, /* POOL32Axf_2(DSP)_16_23 */
18016 { pool
, POOL32Axf_2_DSP__24_31
, 8 , 32,
18017 0xfc0031ff, 0x200030bf, 0 , 0,
18018 0x0 }, /* POOL32Axf_2(DSP)_24_31 */
18022 NMD::Pool
NMD::POOL32Axf_4
[128] = {
18023 { instruction
, 0 , 0 , 32,
18024 0xfc00ffff, 0x2000013f, &NMD::ABSQ_S_QB
, 0,
18025 DSP_
}, /* ABSQ_S.QB */
18026 { instruction
, 0 , 0 , 32,
18027 0xfc00ffff, 0x2000033f, &NMD::REPLV_PH
, 0,
18028 DSP_
}, /* REPLV.PH */
18029 { reserved_block
, 0 , 0 , 32,
18030 0xfc00ffff, 0x2000053f, 0 , 0,
18031 0x0 }, /* POOL32Axf_4~*(2) */
18032 { reserved_block
, 0 , 0 , 32,
18033 0xfc00ffff, 0x2000073f, 0 , 0,
18034 0x0 }, /* POOL32Axf_4~*(3) */
18035 { reserved_block
, 0 , 0 , 32,
18036 0xfc00ffff, 0x2000093f, 0 , 0,
18037 0x0 }, /* POOL32Axf_4~*(4) */
18038 { reserved_block
, 0 , 0 , 32,
18039 0xfc00ffff, 0x20000b3f, 0 , 0,
18040 0x0 }, /* POOL32Axf_4~*(5) */
18041 { reserved_block
, 0 , 0 , 32,
18042 0xfc00ffff, 0x20000d3f, 0 , 0,
18043 0x0 }, /* POOL32Axf_4~*(6) */
18044 { reserved_block
, 0 , 0 , 32,
18045 0xfc00ffff, 0x20000f3f, 0 , 0,
18046 0x0 }, /* POOL32Axf_4~*(7) */
18047 { instruction
, 0 , 0 , 32,
18048 0xfc00ffff, 0x2000113f, &NMD::ABSQ_S_PH
, 0,
18049 DSP_
}, /* ABSQ_S.PH */
18050 { instruction
, 0 , 0 , 32,
18051 0xfc00ffff, 0x2000133f, &NMD::REPLV_QB
, 0,
18052 DSP_
}, /* REPLV.QB */
18053 { reserved_block
, 0 , 0 , 32,
18054 0xfc00ffff, 0x2000153f, 0 , 0,
18055 0x0 }, /* POOL32Axf_4~*(10) */
18056 { reserved_block
, 0 , 0 , 32,
18057 0xfc00ffff, 0x2000173f, 0 , 0,
18058 0x0 }, /* POOL32Axf_4~*(11) */
18059 { reserved_block
, 0 , 0 , 32,
18060 0xfc00ffff, 0x2000193f, 0 , 0,
18061 0x0 }, /* POOL32Axf_4~*(12) */
18062 { reserved_block
, 0 , 0 , 32,
18063 0xfc00ffff, 0x20001b3f, 0 , 0,
18064 0x0 }, /* POOL32Axf_4~*(13) */
18065 { reserved_block
, 0 , 0 , 32,
18066 0xfc00ffff, 0x20001d3f, 0 , 0,
18067 0x0 }, /* POOL32Axf_4~*(14) */
18068 { reserved_block
, 0 , 0 , 32,
18069 0xfc00ffff, 0x20001f3f, 0 , 0,
18070 0x0 }, /* POOL32Axf_4~*(15) */
18071 { instruction
, 0 , 0 , 32,
18072 0xfc00ffff, 0x2000213f, &NMD::ABSQ_S_W
, 0,
18073 DSP_
}, /* ABSQ_S.W */
18074 { reserved_block
, 0 , 0 , 32,
18075 0xfc00ffff, 0x2000233f, 0 , 0,
18076 0x0 }, /* POOL32Axf_4~*(17) */
18077 { reserved_block
, 0 , 0 , 32,
18078 0xfc00ffff, 0x2000253f, 0 , 0,
18079 0x0 }, /* POOL32Axf_4~*(18) */
18080 { reserved_block
, 0 , 0 , 32,
18081 0xfc00ffff, 0x2000273f, 0 , 0,
18082 0x0 }, /* POOL32Axf_4~*(19) */
18083 { reserved_block
, 0 , 0 , 32,
18084 0xfc00ffff, 0x2000293f, 0 , 0,
18085 0x0 }, /* POOL32Axf_4~*(20) */
18086 { reserved_block
, 0 , 0 , 32,
18087 0xfc00ffff, 0x20002b3f, 0 , 0,
18088 0x0 }, /* POOL32Axf_4~*(21) */
18089 { reserved_block
, 0 , 0 , 32,
18090 0xfc00ffff, 0x20002d3f, 0 , 0,
18091 0x0 }, /* POOL32Axf_4~*(22) */
18092 { reserved_block
, 0 , 0 , 32,
18093 0xfc00ffff, 0x20002f3f, 0 , 0,
18094 0x0 }, /* POOL32Axf_4~*(23) */
18095 { reserved_block
, 0 , 0 , 32,
18096 0xfc00ffff, 0x2000313f, 0 , 0,
18097 0x0 }, /* POOL32Axf_4~*(24) */
18098 { reserved_block
, 0 , 0 , 32,
18099 0xfc00ffff, 0x2000333f, 0 , 0,
18100 0x0 }, /* POOL32Axf_4~*(25) */
18101 { reserved_block
, 0 , 0 , 32,
18102 0xfc00ffff, 0x2000353f, 0 , 0,
18103 0x0 }, /* POOL32Axf_4~*(26) */
18104 { reserved_block
, 0 , 0 , 32,
18105 0xfc00ffff, 0x2000373f, 0 , 0,
18106 0x0 }, /* POOL32Axf_4~*(27) */
18107 { reserved_block
, 0 , 0 , 32,
18108 0xfc00ffff, 0x2000393f, 0 , 0,
18109 0x0 }, /* POOL32Axf_4~*(28) */
18110 { reserved_block
, 0 , 0 , 32,
18111 0xfc00ffff, 0x20003b3f, 0 , 0,
18112 0x0 }, /* POOL32Axf_4~*(29) */
18113 { reserved_block
, 0 , 0 , 32,
18114 0xfc00ffff, 0x20003d3f, 0 , 0,
18115 0x0 }, /* POOL32Axf_4~*(30) */
18116 { reserved_block
, 0 , 0 , 32,
18117 0xfc00ffff, 0x20003f3f, 0 , 0,
18118 0x0 }, /* POOL32Axf_4~*(31) */
18119 { instruction
, 0 , 0 , 32,
18120 0xfc00ffff, 0x2000413f, &NMD::INSV
, 0,
18122 { reserved_block
, 0 , 0 , 32,
18123 0xfc00ffff, 0x2000433f, 0 , 0,
18124 0x0 }, /* POOL32Axf_4~*(33) */
18125 { reserved_block
, 0 , 0 , 32,
18126 0xfc00ffff, 0x2000453f, 0 , 0,
18127 0x0 }, /* POOL32Axf_4~*(34) */
18128 { reserved_block
, 0 , 0 , 32,
18129 0xfc00ffff, 0x2000473f, 0 , 0,
18130 0x0 }, /* POOL32Axf_4~*(35) */
18131 { reserved_block
, 0 , 0 , 32,
18132 0xfc00ffff, 0x2000493f, 0 , 0,
18133 0x0 }, /* POOL32Axf_4~*(36) */
18134 { instruction
, 0 , 0 , 32,
18135 0xfc00ffff, 0x20004b3f, &NMD::CLO
, 0,
18137 { instruction
, 0 , 0 , 32,
18138 0xfc00ffff, 0x20004d3f, &NMD::MFC2
, 0,
18140 { reserved_block
, 0 , 0 , 32,
18141 0xfc00ffff, 0x20004f3f, 0 , 0,
18142 0x0 }, /* POOL32Axf_4~*(39) */
18143 { instruction
, 0 , 0 , 32,
18144 0xfc00ffff, 0x2000513f, &NMD::PRECEQ_W_PHL
, 0,
18145 DSP_
}, /* PRECEQ.W.PHL */
18146 { reserved_block
, 0 , 0 , 32,
18147 0xfc00ffff, 0x2000533f, 0 , 0,
18148 0x0 }, /* POOL32Axf_4~*(41) */
18149 { reserved_block
, 0 , 0 , 32,
18150 0xfc00ffff, 0x2000553f, 0 , 0,
18151 0x0 }, /* POOL32Axf_4~*(42) */
18152 { reserved_block
, 0 , 0 , 32,
18153 0xfc00ffff, 0x2000573f, 0 , 0,
18154 0x0 }, /* POOL32Axf_4~*(43) */
18155 { reserved_block
, 0 , 0 , 32,
18156 0xfc00ffff, 0x2000593f, 0 , 0,
18157 0x0 }, /* POOL32Axf_4~*(44) */
18158 { instruction
, 0 , 0 , 32,
18159 0xfc00ffff, 0x20005b3f, &NMD::CLZ
, 0,
18161 { instruction
, 0 , 0 , 32,
18162 0xfc00ffff, 0x20005d3f, &NMD::MTC2
, 0,
18164 { reserved_block
, 0 , 0 , 32,
18165 0xfc00ffff, 0x20005f3f, 0 , 0,
18166 0x0 }, /* POOL32Axf_4~*(47) */
18167 { instruction
, 0 , 0 , 32,
18168 0xfc00ffff, 0x2000613f, &NMD::PRECEQ_W_PHR
, 0,
18169 DSP_
}, /* PRECEQ.W.PHR */
18170 { reserved_block
, 0 , 0 , 32,
18171 0xfc00ffff, 0x2000633f, 0 , 0,
18172 0x0 }, /* POOL32Axf_4~*(49) */
18173 { reserved_block
, 0 , 0 , 32,
18174 0xfc00ffff, 0x2000653f, 0 , 0,
18175 0x0 }, /* POOL32Axf_4~*(50) */
18176 { reserved_block
, 0 , 0 , 32,
18177 0xfc00ffff, 0x2000673f, 0 , 0,
18178 0x0 }, /* POOL32Axf_4~*(51) */
18179 { reserved_block
, 0 , 0 , 32,
18180 0xfc00ffff, 0x2000693f, 0 , 0,
18181 0x0 }, /* POOL32Axf_4~*(52) */
18182 { reserved_block
, 0 , 0 , 32,
18183 0xfc00ffff, 0x20006b3f, 0 , 0,
18184 0x0 }, /* POOL32Axf_4~*(53) */
18185 { instruction
, 0 , 0 , 32,
18186 0xfc00ffff, 0x20006d3f, &NMD::DMFC2
, 0,
18187 CP2_
}, /* DMFC2 */
18188 { reserved_block
, 0 , 0 , 32,
18189 0xfc00ffff, 0x20006f3f, 0 , 0,
18190 0x0 }, /* POOL32Axf_4~*(55) */
18191 { instruction
, 0 , 0 , 32,
18192 0xfc00ffff, 0x2000713f, &NMD::PRECEQU_PH_QBL
, 0,
18193 DSP_
}, /* PRECEQU.PH.QBL */
18194 { instruction
, 0 , 0 , 32,
18195 0xfc00ffff, 0x2000733f, &NMD::PRECEQU_PH_QBLA
, 0,
18196 DSP_
}, /* PRECEQU.PH.QBLA */
18197 { reserved_block
, 0 , 0 , 32,
18198 0xfc00ffff, 0x2000753f, 0 , 0,
18199 0x0 }, /* POOL32Axf_4~*(58) */
18200 { reserved_block
, 0 , 0 , 32,
18201 0xfc00ffff, 0x2000773f, 0 , 0,
18202 0x0 }, /* POOL32Axf_4~*(59) */
18203 { reserved_block
, 0 , 0 , 32,
18204 0xfc00ffff, 0x2000793f, 0 , 0,
18205 0x0 }, /* POOL32Axf_4~*(60) */
18206 { reserved_block
, 0 , 0 , 32,
18207 0xfc00ffff, 0x20007b3f, 0 , 0,
18208 0x0 }, /* POOL32Axf_4~*(61) */
18209 { instruction
, 0 , 0 , 32,
18210 0xfc00ffff, 0x20007d3f, &NMD::DMTC2
, 0,
18211 CP2_
}, /* DMTC2 */
18212 { reserved_block
, 0 , 0 , 32,
18213 0xfc00ffff, 0x20007f3f, 0 , 0,
18214 0x0 }, /* POOL32Axf_4~*(63) */
18215 { reserved_block
, 0 , 0 , 32,
18216 0xfc00ffff, 0x2000813f, 0 , 0,
18217 0x0 }, /* POOL32Axf_4~*(64) */
18218 { reserved_block
, 0 , 0 , 32,
18219 0xfc00ffff, 0x2000833f, 0 , 0,
18220 0x0 }, /* POOL32Axf_4~*(65) */
18221 { reserved_block
, 0 , 0 , 32,
18222 0xfc00ffff, 0x2000853f, 0 , 0,
18223 0x0 }, /* POOL32Axf_4~*(66) */
18224 { reserved_block
, 0 , 0 , 32,
18225 0xfc00ffff, 0x2000873f, 0 , 0,
18226 0x0 }, /* POOL32Axf_4~*(67) */
18227 { reserved_block
, 0 , 0 , 32,
18228 0xfc00ffff, 0x2000893f, 0 , 0,
18229 0x0 }, /* POOL32Axf_4~*(68) */
18230 { reserved_block
, 0 , 0 , 32,
18231 0xfc00ffff, 0x20008b3f, 0 , 0,
18232 0x0 }, /* POOL32Axf_4~*(69) */
18233 { instruction
, 0 , 0 , 32,
18234 0xfc00ffff, 0x20008d3f, &NMD::MFHC2
, 0,
18235 CP2_
}, /* MFHC2 */
18236 { reserved_block
, 0 , 0 , 32,
18237 0xfc00ffff, 0x20008f3f, 0 , 0,
18238 0x0 }, /* POOL32Axf_4~*(71) */
18239 { instruction
, 0 , 0 , 32,
18240 0xfc00ffff, 0x2000913f, &NMD::PRECEQU_PH_QBR
, 0,
18241 DSP_
}, /* PRECEQU.PH.QBR */
18242 { instruction
, 0 , 0 , 32,
18243 0xfc00ffff, 0x2000933f, &NMD::PRECEQU_PH_QBRA
, 0,
18244 DSP_
}, /* PRECEQU.PH.QBRA */
18245 { reserved_block
, 0 , 0 , 32,
18246 0xfc00ffff, 0x2000953f, 0 , 0,
18247 0x0 }, /* POOL32Axf_4~*(74) */
18248 { reserved_block
, 0 , 0 , 32,
18249 0xfc00ffff, 0x2000973f, 0 , 0,
18250 0x0 }, /* POOL32Axf_4~*(75) */
18251 { reserved_block
, 0 , 0 , 32,
18252 0xfc00ffff, 0x2000993f, 0 , 0,
18253 0x0 }, /* POOL32Axf_4~*(76) */
18254 { reserved_block
, 0 , 0 , 32,
18255 0xfc00ffff, 0x20009b3f, 0 , 0,
18256 0x0 }, /* POOL32Axf_4~*(77) */
18257 { instruction
, 0 , 0 , 32,
18258 0xfc00ffff, 0x20009d3f, &NMD::MTHC2
, 0,
18259 CP2_
}, /* MTHC2 */
18260 { reserved_block
, 0 , 0 , 32,
18261 0xfc00ffff, 0x20009f3f, 0 , 0,
18262 0x0 }, /* POOL32Axf_4~*(79) */
18263 { reserved_block
, 0 , 0 , 32,
18264 0xfc00ffff, 0x2000a13f, 0 , 0,
18265 0x0 }, /* POOL32Axf_4~*(80) */
18266 { reserved_block
, 0 , 0 , 32,
18267 0xfc00ffff, 0x2000a33f, 0 , 0,
18268 0x0 }, /* POOL32Axf_4~*(81) */
18269 { reserved_block
, 0 , 0 , 32,
18270 0xfc00ffff, 0x2000a53f, 0 , 0,
18271 0x0 }, /* POOL32Axf_4~*(82) */
18272 { reserved_block
, 0 , 0 , 32,
18273 0xfc00ffff, 0x2000a73f, 0 , 0,
18274 0x0 }, /* POOL32Axf_4~*(83) */
18275 { reserved_block
, 0 , 0 , 32,
18276 0xfc00ffff, 0x2000a93f, 0 , 0,
18277 0x0 }, /* POOL32Axf_4~*(84) */
18278 { reserved_block
, 0 , 0 , 32,
18279 0xfc00ffff, 0x2000ab3f, 0 , 0,
18280 0x0 }, /* POOL32Axf_4~*(85) */
18281 { reserved_block
, 0 , 0 , 32,
18282 0xfc00ffff, 0x2000ad3f, 0 , 0,
18283 0x0 }, /* POOL32Axf_4~*(86) */
18284 { reserved_block
, 0 , 0 , 32,
18285 0xfc00ffff, 0x2000af3f, 0 , 0,
18286 0x0 }, /* POOL32Axf_4~*(87) */
18287 { instruction
, 0 , 0 , 32,
18288 0xfc00ffff, 0x2000b13f, &NMD::PRECEU_PH_QBL
, 0,
18289 DSP_
}, /* PRECEU.PH.QBL */
18290 { instruction
, 0 , 0 , 32,
18291 0xfc00ffff, 0x2000b33f, &NMD::PRECEU_PH_QBLA
, 0,
18292 DSP_
}, /* PRECEU.PH.QBLA */
18293 { reserved_block
, 0 , 0 , 32,
18294 0xfc00ffff, 0x2000b53f, 0 , 0,
18295 0x0 }, /* POOL32Axf_4~*(90) */
18296 { reserved_block
, 0 , 0 , 32,
18297 0xfc00ffff, 0x2000b73f, 0 , 0,
18298 0x0 }, /* POOL32Axf_4~*(91) */
18299 { reserved_block
, 0 , 0 , 32,
18300 0xfc00ffff, 0x2000b93f, 0 , 0,
18301 0x0 }, /* POOL32Axf_4~*(92) */
18302 { reserved_block
, 0 , 0 , 32,
18303 0xfc00ffff, 0x2000bb3f, 0 , 0,
18304 0x0 }, /* POOL32Axf_4~*(93) */
18305 { reserved_block
, 0 , 0 , 32,
18306 0xfc00ffff, 0x2000bd3f, 0 , 0,
18307 0x0 }, /* POOL32Axf_4~*(94) */
18308 { reserved_block
, 0 , 0 , 32,
18309 0xfc00ffff, 0x2000bf3f, 0 , 0,
18310 0x0 }, /* POOL32Axf_4~*(95) */
18311 { reserved_block
, 0 , 0 , 32,
18312 0xfc00ffff, 0x2000c13f, 0 , 0,
18313 0x0 }, /* POOL32Axf_4~*(96) */
18314 { reserved_block
, 0 , 0 , 32,
18315 0xfc00ffff, 0x2000c33f, 0 , 0,
18316 0x0 }, /* POOL32Axf_4~*(97) */
18317 { reserved_block
, 0 , 0 , 32,
18318 0xfc00ffff, 0x2000c53f, 0 , 0,
18319 0x0 }, /* POOL32Axf_4~*(98) */
18320 { reserved_block
, 0 , 0 , 32,
18321 0xfc00ffff, 0x2000c73f, 0 , 0,
18322 0x0 }, /* POOL32Axf_4~*(99) */
18323 { reserved_block
, 0 , 0 , 32,
18324 0xfc00ffff, 0x2000c93f, 0 , 0,
18325 0x0 }, /* POOL32Axf_4~*(100) */
18326 { reserved_block
, 0 , 0 , 32,
18327 0xfc00ffff, 0x2000cb3f, 0 , 0,
18328 0x0 }, /* POOL32Axf_4~*(101) */
18329 { instruction
, 0 , 0 , 32,
18330 0xfc00ffff, 0x2000cd3f, &NMD::CFC2
, 0,
18332 { reserved_block
, 0 , 0 , 32,
18333 0xfc00ffff, 0x2000cf3f, 0 , 0,
18334 0x0 }, /* POOL32Axf_4~*(103) */
18335 { instruction
, 0 , 0 , 32,
18336 0xfc00ffff, 0x2000d13f, &NMD::PRECEU_PH_QBR
, 0,
18337 DSP_
}, /* PRECEU.PH.QBR */
18338 { instruction
, 0 , 0 , 32,
18339 0xfc00ffff, 0x2000d33f, &NMD::PRECEU_PH_QBRA
, 0,
18340 DSP_
}, /* PRECEU.PH.QBRA */
18341 { reserved_block
, 0 , 0 , 32,
18342 0xfc00ffff, 0x2000d53f, 0 , 0,
18343 0x0 }, /* POOL32Axf_4~*(106) */
18344 { reserved_block
, 0 , 0 , 32,
18345 0xfc00ffff, 0x2000d73f, 0 , 0,
18346 0x0 }, /* POOL32Axf_4~*(107) */
18347 { reserved_block
, 0 , 0 , 32,
18348 0xfc00ffff, 0x2000d93f, 0 , 0,
18349 0x0 }, /* POOL32Axf_4~*(108) */
18350 { reserved_block
, 0 , 0 , 32,
18351 0xfc00ffff, 0x2000db3f, 0 , 0,
18352 0x0 }, /* POOL32Axf_4~*(109) */
18353 { instruction
, 0 , 0 , 32,
18354 0xfc00ffff, 0x2000dd3f, &NMD::CTC2
, 0,
18356 { reserved_block
, 0 , 0 , 32,
18357 0xfc00ffff, 0x2000df3f, 0 , 0,
18358 0x0 }, /* POOL32Axf_4~*(111) */
18359 { reserved_block
, 0 , 0 , 32,
18360 0xfc00ffff, 0x2000e13f, 0 , 0,
18361 0x0 }, /* POOL32Axf_4~*(112) */
18362 { reserved_block
, 0 , 0 , 32,
18363 0xfc00ffff, 0x2000e33f, 0 , 0,
18364 0x0 }, /* POOL32Axf_4~*(113) */
18365 { reserved_block
, 0 , 0 , 32,
18366 0xfc00ffff, 0x2000e53f, 0 , 0,
18367 0x0 }, /* POOL32Axf_4~*(114) */
18368 { reserved_block
, 0 , 0 , 32,
18369 0xfc00ffff, 0x2000e73f, 0 , 0,
18370 0x0 }, /* POOL32Axf_4~*(115) */
18371 { reserved_block
, 0 , 0 , 32,
18372 0xfc00ffff, 0x2000e93f, 0 , 0,
18373 0x0 }, /* POOL32Axf_4~*(116) */
18374 { reserved_block
, 0 , 0 , 32,
18375 0xfc00ffff, 0x2000eb3f, 0 , 0,
18376 0x0 }, /* POOL32Axf_4~*(117) */
18377 { reserved_block
, 0 , 0 , 32,
18378 0xfc00ffff, 0x2000ed3f, 0 , 0,
18379 0x0 }, /* POOL32Axf_4~*(118) */
18380 { reserved_block
, 0 , 0 , 32,
18381 0xfc00ffff, 0x2000ef3f, 0 , 0,
18382 0x0 }, /* POOL32Axf_4~*(119) */
18383 { instruction
, 0 , 0 , 32,
18384 0xfc00ffff, 0x2000f13f, &NMD::RADDU_W_QB
, 0,
18385 DSP_
}, /* RADDU.W.QB */
18386 { reserved_block
, 0 , 0 , 32,
18387 0xfc00ffff, 0x2000f33f, 0 , 0,
18388 0x0 }, /* POOL32Axf_4~*(121) */
18389 { reserved_block
, 0 , 0 , 32,
18390 0xfc00ffff, 0x2000f53f, 0 , 0,
18391 0x0 }, /* POOL32Axf_4~*(122) */
18392 { reserved_block
, 0 , 0 , 32,
18393 0xfc00ffff, 0x2000f73f, 0 , 0,
18394 0x0 }, /* POOL32Axf_4~*(123) */
18395 { reserved_block
, 0 , 0 , 32,
18396 0xfc00ffff, 0x2000f93f, 0 , 0,
18397 0x0 }, /* POOL32Axf_4~*(124) */
18398 { reserved_block
, 0 , 0 , 32,
18399 0xfc00ffff, 0x2000fb3f, 0 , 0,
18400 0x0 }, /* POOL32Axf_4~*(125) */
18401 { reserved_block
, 0 , 0 , 32,
18402 0xfc00ffff, 0x2000fd3f, 0 , 0,
18403 0x0 }, /* POOL32Axf_4~*(126) */
18404 { reserved_block
, 0 , 0 , 32,
18405 0xfc00ffff, 0x2000ff3f, 0 , 0,
18406 0x0 }, /* POOL32Axf_4~*(127) */
18410 NMD::Pool
NMD::POOL32Axf_5_group0
[32] = {
18411 { instruction
, 0 , 0 , 32,
18412 0xfc00ffff, 0x2000017f, &NMD::TLBGP
, 0,
18413 CP0_
| VZ_
| TLB_
}, /* TLBGP */
18414 { instruction
, 0 , 0 , 32,
18415 0xfc00ffff, 0x2000037f, &NMD::TLBP
, 0,
18416 CP0_
| TLB_
}, /* TLBP */
18417 { instruction
, 0 , 0 , 32,
18418 0xfc00ffff, 0x2000057f, &NMD::TLBGINV
, 0,
18419 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINV */
18420 { instruction
, 0 , 0 , 32,
18421 0xfc00ffff, 0x2000077f, &NMD::TLBINV
, 0,
18422 CP0_
| TLB_
| TLBINV_
}, /* TLBINV */
18423 { reserved_block
, 0 , 0 , 32,
18424 0xfc00ffff, 0x2000097f, 0 , 0,
18425 0x0 }, /* POOL32Axf_5_group0~*(4) */
18426 { reserved_block
, 0 , 0 , 32,
18427 0xfc00ffff, 0x20000b7f, 0 , 0,
18428 0x0 }, /* POOL32Axf_5_group0~*(5) */
18429 { reserved_block
, 0 , 0 , 32,
18430 0xfc00ffff, 0x20000d7f, 0 , 0,
18431 0x0 }, /* POOL32Axf_5_group0~*(6) */
18432 { reserved_block
, 0 , 0 , 32,
18433 0xfc00ffff, 0x20000f7f, 0 , 0,
18434 0x0 }, /* POOL32Axf_5_group0~*(7) */
18435 { instruction
, 0 , 0 , 32,
18436 0xfc00ffff, 0x2000117f, &NMD::TLBGR
, 0,
18437 CP0_
| VZ_
| TLB_
}, /* TLBGR */
18438 { instruction
, 0 , 0 , 32,
18439 0xfc00ffff, 0x2000137f, &NMD::TLBR
, 0,
18440 CP0_
| TLB_
}, /* TLBR */
18441 { instruction
, 0 , 0 , 32,
18442 0xfc00ffff, 0x2000157f, &NMD::TLBGINVF
, 0,
18443 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINVF */
18444 { instruction
, 0 , 0 , 32,
18445 0xfc00ffff, 0x2000177f, &NMD::TLBINVF
, 0,
18446 CP0_
| TLB_
| TLBINV_
}, /* TLBINVF */
18447 { reserved_block
, 0 , 0 , 32,
18448 0xfc00ffff, 0x2000197f, 0 , 0,
18449 0x0 }, /* POOL32Axf_5_group0~*(12) */
18450 { reserved_block
, 0 , 0 , 32,
18451 0xfc00ffff, 0x20001b7f, 0 , 0,
18452 0x0 }, /* POOL32Axf_5_group0~*(13) */
18453 { reserved_block
, 0 , 0 , 32,
18454 0xfc00ffff, 0x20001d7f, 0 , 0,
18455 0x0 }, /* POOL32Axf_5_group0~*(14) */
18456 { reserved_block
, 0 , 0 , 32,
18457 0xfc00ffff, 0x20001f7f, 0 , 0,
18458 0x0 }, /* POOL32Axf_5_group0~*(15) */
18459 { instruction
, 0 , 0 , 32,
18460 0xfc00ffff, 0x2000217f, &NMD::TLBGWI
, 0,
18461 CP0_
| VZ_
| TLB_
}, /* TLBGWI */
18462 { instruction
, 0 , 0 , 32,
18463 0xfc00ffff, 0x2000237f, &NMD::TLBWI
, 0,
18464 CP0_
| TLB_
}, /* TLBWI */
18465 { reserved_block
, 0 , 0 , 32,
18466 0xfc00ffff, 0x2000257f, 0 , 0,
18467 0x0 }, /* POOL32Axf_5_group0~*(18) */
18468 { reserved_block
, 0 , 0 , 32,
18469 0xfc00ffff, 0x2000277f, 0 , 0,
18470 0x0 }, /* POOL32Axf_5_group0~*(19) */
18471 { reserved_block
, 0 , 0 , 32,
18472 0xfc00ffff, 0x2000297f, 0 , 0,
18473 0x0 }, /* POOL32Axf_5_group0~*(20) */
18474 { reserved_block
, 0 , 0 , 32,
18475 0xfc00ffff, 0x20002b7f, 0 , 0,
18476 0x0 }, /* POOL32Axf_5_group0~*(21) */
18477 { reserved_block
, 0 , 0 , 32,
18478 0xfc00ffff, 0x20002d7f, 0 , 0,
18479 0x0 }, /* POOL32Axf_5_group0~*(22) */
18480 { reserved_block
, 0 , 0 , 32,
18481 0xfc00ffff, 0x20002f7f, 0 , 0,
18482 0x0 }, /* POOL32Axf_5_group0~*(23) */
18483 { instruction
, 0 , 0 , 32,
18484 0xfc00ffff, 0x2000317f, &NMD::TLBGWR
, 0,
18485 CP0_
| VZ_
| TLB_
}, /* TLBGWR */
18486 { instruction
, 0 , 0 , 32,
18487 0xfc00ffff, 0x2000337f, &NMD::TLBWR
, 0,
18488 CP0_
| TLB_
}, /* TLBWR */
18489 { reserved_block
, 0 , 0 , 32,
18490 0xfc00ffff, 0x2000357f, 0 , 0,
18491 0x0 }, /* POOL32Axf_5_group0~*(26) */
18492 { reserved_block
, 0 , 0 , 32,
18493 0xfc00ffff, 0x2000377f, 0 , 0,
18494 0x0 }, /* POOL32Axf_5_group0~*(27) */
18495 { reserved_block
, 0 , 0 , 32,
18496 0xfc00ffff, 0x2000397f, 0 , 0,
18497 0x0 }, /* POOL32Axf_5_group0~*(28) */
18498 { reserved_block
, 0 , 0 , 32,
18499 0xfc00ffff, 0x20003b7f, 0 , 0,
18500 0x0 }, /* POOL32Axf_5_group0~*(29) */
18501 { reserved_block
, 0 , 0 , 32,
18502 0xfc00ffff, 0x20003d7f, 0 , 0,
18503 0x0 }, /* POOL32Axf_5_group0~*(30) */
18504 { reserved_block
, 0 , 0 , 32,
18505 0xfc00ffff, 0x20003f7f, 0 , 0,
18506 0x0 }, /* POOL32Axf_5_group0~*(31) */
18510 NMD::Pool
NMD::POOL32Axf_5_group1
[32] = {
18511 { reserved_block
, 0 , 0 , 32,
18512 0xfc00ffff, 0x2000417f, 0 , 0,
18513 0x0 }, /* POOL32Axf_5_group1~*(0) */
18514 { reserved_block
, 0 , 0 , 32,
18515 0xfc00ffff, 0x2000437f, 0 , 0,
18516 0x0 }, /* POOL32Axf_5_group1~*(1) */
18517 { reserved_block
, 0 , 0 , 32,
18518 0xfc00ffff, 0x2000457f, 0 , 0,
18519 0x0 }, /* POOL32Axf_5_group1~*(2) */
18520 { instruction
, 0 , 0 , 32,
18521 0xfc00ffff, 0x2000477f, &NMD::DI
, 0,
18523 { reserved_block
, 0 , 0 , 32,
18524 0xfc00ffff, 0x2000497f, 0 , 0,
18525 0x0 }, /* POOL32Axf_5_group1~*(4) */
18526 { reserved_block
, 0 , 0 , 32,
18527 0xfc00ffff, 0x20004b7f, 0 , 0,
18528 0x0 }, /* POOL32Axf_5_group1~*(5) */
18529 { reserved_block
, 0 , 0 , 32,
18530 0xfc00ffff, 0x20004d7f, 0 , 0,
18531 0x0 }, /* POOL32Axf_5_group1~*(6) */
18532 { reserved_block
, 0 , 0 , 32,
18533 0xfc00ffff, 0x20004f7f, 0 , 0,
18534 0x0 }, /* POOL32Axf_5_group1~*(7) */
18535 { reserved_block
, 0 , 0 , 32,
18536 0xfc00ffff, 0x2000517f, 0 , 0,
18537 0x0 }, /* POOL32Axf_5_group1~*(8) */
18538 { reserved_block
, 0 , 0 , 32,
18539 0xfc00ffff, 0x2000537f, 0 , 0,
18540 0x0 }, /* POOL32Axf_5_group1~*(9) */
18541 { reserved_block
, 0 , 0 , 32,
18542 0xfc00ffff, 0x2000557f, 0 , 0,
18543 0x0 }, /* POOL32Axf_5_group1~*(10) */
18544 { instruction
, 0 , 0 , 32,
18545 0xfc00ffff, 0x2000577f, &NMD::EI
, 0,
18547 { reserved_block
, 0 , 0 , 32,
18548 0xfc00ffff, 0x2000597f, 0 , 0,
18549 0x0 }, /* POOL32Axf_5_group1~*(12) */
18550 { reserved_block
, 0 , 0 , 32,
18551 0xfc00ffff, 0x20005b7f, 0 , 0,
18552 0x0 }, /* POOL32Axf_5_group1~*(13) */
18553 { reserved_block
, 0 , 0 , 32,
18554 0xfc00ffff, 0x20005d7f, 0 , 0,
18555 0x0 }, /* POOL32Axf_5_group1~*(14) */
18556 { reserved_block
, 0 , 0 , 32,
18557 0xfc00ffff, 0x20005f7f, 0 , 0,
18558 0x0 }, /* POOL32Axf_5_group1~*(15) */
18559 { reserved_block
, 0 , 0 , 32,
18560 0xfc00ffff, 0x2000617f, 0 , 0,
18561 0x0 }, /* POOL32Axf_5_group1~*(16) */
18562 { reserved_block
, 0 , 0 , 32,
18563 0xfc00ffff, 0x2000637f, 0 , 0,
18564 0x0 }, /* POOL32Axf_5_group1~*(17) */
18565 { reserved_block
, 0 , 0 , 32,
18566 0xfc00ffff, 0x2000657f, 0 , 0,
18567 0x0 }, /* POOL32Axf_5_group1~*(18) */
18568 { reserved_block
, 0 , 0 , 32,
18569 0xfc00ffff, 0x2000677f, 0 , 0,
18570 0x0 }, /* POOL32Axf_5_group1~*(19) */
18571 { reserved_block
, 0 , 0 , 32,
18572 0xfc00ffff, 0x2000697f, 0 , 0,
18573 0x0 }, /* POOL32Axf_5_group1~*(20) */
18574 { reserved_block
, 0 , 0 , 32,
18575 0xfc00ffff, 0x20006b7f, 0 , 0,
18576 0x0 }, /* POOL32Axf_5_group1~*(21) */
18577 { reserved_block
, 0 , 0 , 32,
18578 0xfc00ffff, 0x20006d7f, 0 , 0,
18579 0x0 }, /* POOL32Axf_5_group1~*(22) */
18580 { reserved_block
, 0 , 0 , 32,
18581 0xfc00ffff, 0x20006f7f, 0 , 0,
18582 0x0 }, /* POOL32Axf_5_group1~*(23) */
18583 { reserved_block
, 0 , 0 , 32,
18584 0xfc00ffff, 0x2000717f, 0 , 0,
18585 0x0 }, /* POOL32Axf_5_group1~*(24) */
18586 { reserved_block
, 0 , 0 , 32,
18587 0xfc00ffff, 0x2000737f, 0 , 0,
18588 0x0 }, /* POOL32Axf_5_group1~*(25) */
18589 { reserved_block
, 0 , 0 , 32,
18590 0xfc00ffff, 0x2000757f, 0 , 0,
18591 0x0 }, /* POOL32Axf_5_group1~*(26) */
18592 { reserved_block
, 0 , 0 , 32,
18593 0xfc00ffff, 0x2000777f, 0 , 0,
18594 0x0 }, /* POOL32Axf_5_group1~*(27) */
18595 { reserved_block
, 0 , 0 , 32,
18596 0xfc00ffff, 0x2000797f, 0 , 0,
18597 0x0 }, /* POOL32Axf_5_group1~*(28) */
18598 { reserved_block
, 0 , 0 , 32,
18599 0xfc00ffff, 0x20007b7f, 0 , 0,
18600 0x0 }, /* POOL32Axf_5_group1~*(29) */
18601 { reserved_block
, 0 , 0 , 32,
18602 0xfc00ffff, 0x20007d7f, 0 , 0,
18603 0x0 }, /* POOL32Axf_5_group1~*(30) */
18604 { reserved_block
, 0 , 0 , 32,
18605 0xfc00ffff, 0x20007f7f, 0 , 0,
18606 0x0 }, /* POOL32Axf_5_group1~*(31) */
18610 NMD::Pool
NMD::ERETx
[2] = {
18611 { instruction
, 0 , 0 , 32,
18612 0xfc01ffff, 0x2000f37f, &NMD::ERET
, 0,
18614 { instruction
, 0 , 0 , 32,
18615 0xfc01ffff, 0x2001f37f, &NMD::ERETNC
, 0,
18616 0x0 }, /* ERETNC */
18620 NMD::Pool
NMD::POOL32Axf_5_group3
[32] = {
18621 { reserved_block
, 0 , 0 , 32,
18622 0xfc00ffff, 0x2000c17f, 0 , 0,
18623 0x0 }, /* POOL32Axf_5_group3~*(0) */
18624 { instruction
, 0 , 0 , 32,
18625 0xfc00ffff, 0x2000c37f, &NMD::WAIT
, 0,
18627 { reserved_block
, 0 , 0 , 32,
18628 0xfc00ffff, 0x2000c57f, 0 , 0,
18629 0x0 }, /* POOL32Axf_5_group3~*(2) */
18630 { reserved_block
, 0 , 0 , 32,
18631 0xfc00ffff, 0x2000c77f, 0 , 0,
18632 0x0 }, /* POOL32Axf_5_group3~*(3) */
18633 { reserved_block
, 0 , 0 , 32,
18634 0xfc00ffff, 0x2000c97f, 0 , 0,
18635 0x0 }, /* POOL32Axf_5_group3~*(4) */
18636 { reserved_block
, 0 , 0 , 32,
18637 0xfc00ffff, 0x2000cb7f, 0 , 0,
18638 0x0 }, /* POOL32Axf_5_group3~*(5) */
18639 { reserved_block
, 0 , 0 , 32,
18640 0xfc00ffff, 0x2000cd7f, 0 , 0,
18641 0x0 }, /* POOL32Axf_5_group3~*(6) */
18642 { reserved_block
, 0 , 0 , 32,
18643 0xfc00ffff, 0x2000cf7f, 0 , 0,
18644 0x0 }, /* POOL32Axf_5_group3~*(7) */
18645 { reserved_block
, 0 , 0 , 32,
18646 0xfc00ffff, 0x2000d17f, 0 , 0,
18647 0x0 }, /* POOL32Axf_5_group3~*(8) */
18648 { instruction
, 0 , 0 , 32,
18649 0xfc00ffff, 0x2000d37f, &NMD::IRET
, 0,
18651 { reserved_block
, 0 , 0 , 32,
18652 0xfc00ffff, 0x2000d57f, 0 , 0,
18653 0x0 }, /* POOL32Axf_5_group3~*(10) */
18654 { reserved_block
, 0 , 0 , 32,
18655 0xfc00ffff, 0x2000d77f, 0 , 0,
18656 0x0 }, /* POOL32Axf_5_group3~*(11) */
18657 { reserved_block
, 0 , 0 , 32,
18658 0xfc00ffff, 0x2000d97f, 0 , 0,
18659 0x0 }, /* POOL32Axf_5_group3~*(12) */
18660 { reserved_block
, 0 , 0 , 32,
18661 0xfc00ffff, 0x2000db7f, 0 , 0,
18662 0x0 }, /* POOL32Axf_5_group3~*(13) */
18663 { reserved_block
, 0 , 0 , 32,
18664 0xfc00ffff, 0x2000dd7f, 0 , 0,
18665 0x0 }, /* POOL32Axf_5_group3~*(14) */
18666 { reserved_block
, 0 , 0 , 32,
18667 0xfc00ffff, 0x2000df7f, 0 , 0,
18668 0x0 }, /* POOL32Axf_5_group3~*(15) */
18669 { instruction
, 0 , 0 , 32,
18670 0xfc00ffff, 0x2000e17f, &NMD::RDPGPR
, 0,
18671 CP0_
}, /* RDPGPR */
18672 { instruction
, 0 , 0 , 32,
18673 0xfc00ffff, 0x2000e37f, &NMD::DERET
, 0,
18674 EJTAG_
}, /* DERET */
18675 { reserved_block
, 0 , 0 , 32,
18676 0xfc00ffff, 0x2000e57f, 0 , 0,
18677 0x0 }, /* POOL32Axf_5_group3~*(18) */
18678 { reserved_block
, 0 , 0 , 32,
18679 0xfc00ffff, 0x2000e77f, 0 , 0,
18680 0x0 }, /* POOL32Axf_5_group3~*(19) */
18681 { reserved_block
, 0 , 0 , 32,
18682 0xfc00ffff, 0x2000e97f, 0 , 0,
18683 0x0 }, /* POOL32Axf_5_group3~*(20) */
18684 { reserved_block
, 0 , 0 , 32,
18685 0xfc00ffff, 0x2000eb7f, 0 , 0,
18686 0x0 }, /* POOL32Axf_5_group3~*(21) */
18687 { reserved_block
, 0 , 0 , 32,
18688 0xfc00ffff, 0x2000ed7f, 0 , 0,
18689 0x0 }, /* POOL32Axf_5_group3~*(22) */
18690 { reserved_block
, 0 , 0 , 32,
18691 0xfc00ffff, 0x2000ef7f, 0 , 0,
18692 0x0 }, /* POOL32Axf_5_group3~*(23) */
18693 { instruction
, 0 , 0 , 32,
18694 0xfc00ffff, 0x2000f17f, &NMD::WRPGPR
, 0,
18695 CP0_
}, /* WRPGPR */
18696 { pool
, ERETx
, 2 , 32,
18697 0xfc00ffff, 0x2000f37f, 0 , 0,
18699 { reserved_block
, 0 , 0 , 32,
18700 0xfc00ffff, 0x2000f57f, 0 , 0,
18701 0x0 }, /* POOL32Axf_5_group3~*(26) */
18702 { reserved_block
, 0 , 0 , 32,
18703 0xfc00ffff, 0x2000f77f, 0 , 0,
18704 0x0 }, /* POOL32Axf_5_group3~*(27) */
18705 { reserved_block
, 0 , 0 , 32,
18706 0xfc00ffff, 0x2000f97f, 0 , 0,
18707 0x0 }, /* POOL32Axf_5_group3~*(28) */
18708 { reserved_block
, 0 , 0 , 32,
18709 0xfc00ffff, 0x2000fb7f, 0 , 0,
18710 0x0 }, /* POOL32Axf_5_group3~*(29) */
18711 { reserved_block
, 0 , 0 , 32,
18712 0xfc00ffff, 0x2000fd7f, 0 , 0,
18713 0x0 }, /* POOL32Axf_5_group3~*(30) */
18714 { reserved_block
, 0 , 0 , 32,
18715 0xfc00ffff, 0x2000ff7f, 0 , 0,
18716 0x0 }, /* POOL32Axf_5_group3~*(31) */
18720 NMD::Pool
NMD::POOL32Axf_5
[4] = {
18721 { pool
, POOL32Axf_5_group0
, 32 , 32,
18722 0xfc00c1ff, 0x2000017f, 0 , 0,
18723 0x0 }, /* POOL32Axf_5_group0 */
18724 { pool
, POOL32Axf_5_group1
, 32 , 32,
18725 0xfc00c1ff, 0x2000417f, 0 , 0,
18726 0x0 }, /* POOL32Axf_5_group1 */
18727 { reserved_block
, 0 , 0 , 32,
18728 0xfc00c1ff, 0x2000817f, 0 , 0,
18729 0x0 }, /* POOL32Axf_5~*(2) */
18730 { pool
, POOL32Axf_5_group3
, 32 , 32,
18731 0xfc00c1ff, 0x2000c17f, 0 , 0,
18732 0x0 }, /* POOL32Axf_5_group3 */
18736 NMD::Pool
NMD::SHRA__R__QB
[2] = {
18737 { instruction
, 0 , 0 , 32,
18738 0xfc001fff, 0x200001ff, &NMD::SHRA_QB
, 0,
18739 DSP_
}, /* SHRA.QB */
18740 { instruction
, 0 , 0 , 32,
18741 0xfc001fff, 0x200011ff, &NMD::SHRA_R_QB
, 0,
18742 DSP_
}, /* SHRA_R.QB */
18746 NMD::Pool
NMD::POOL32Axf_7
[8] = {
18747 { pool
, SHRA__R__QB
, 2 , 32,
18748 0xfc000fff, 0x200001ff, 0 , 0,
18749 0x0 }, /* SHRA[_R].QB */
18750 { instruction
, 0 , 0 , 32,
18751 0xfc000fff, 0x200003ff, &NMD::SHRL_PH
, 0,
18752 DSP_
}, /* SHRL.PH */
18753 { instruction
, 0 , 0 , 32,
18754 0xfc000fff, 0x200005ff, &NMD::REPL_QB
, 0,
18755 DSP_
}, /* REPL.QB */
18756 { reserved_block
, 0 , 0 , 32,
18757 0xfc000fff, 0x200007ff, 0 , 0,
18758 0x0 }, /* POOL32Axf_7~*(3) */
18759 { reserved_block
, 0 , 0 , 32,
18760 0xfc000fff, 0x200009ff, 0 , 0,
18761 0x0 }, /* POOL32Axf_7~*(4) */
18762 { reserved_block
, 0 , 0 , 32,
18763 0xfc000fff, 0x20000bff, 0 , 0,
18764 0x0 }, /* POOL32Axf_7~*(5) */
18765 { reserved_block
, 0 , 0 , 32,
18766 0xfc000fff, 0x20000dff, 0 , 0,
18767 0x0 }, /* POOL32Axf_7~*(6) */
18768 { reserved_block
, 0 , 0 , 32,
18769 0xfc000fff, 0x20000fff, 0 , 0,
18770 0x0 }, /* POOL32Axf_7~*(7) */
18774 NMD::Pool
NMD::POOL32Axf
[8] = {
18775 { reserved_block
, 0 , 0 , 32,
18776 0xfc0001ff, 0x2000003f, 0 , 0,
18777 0x0 }, /* POOL32Axf~*(0) */
18778 { pool
, POOL32Axf_1
, 8 , 32,
18779 0xfc0001ff, 0x2000007f, 0 , 0,
18780 0x0 }, /* POOL32Axf_1 */
18781 { pool
, POOL32Axf_2
, 4 , 32,
18782 0xfc0001ff, 0x200000bf, 0 , 0,
18783 0x0 }, /* POOL32Axf_2 */
18784 { reserved_block
, 0 , 0 , 32,
18785 0xfc0001ff, 0x200000ff, 0 , 0,
18786 0x0 }, /* POOL32Axf~*(3) */
18787 { pool
, POOL32Axf_4
, 128 , 32,
18788 0xfc0001ff, 0x2000013f, 0 , 0,
18789 0x0 }, /* POOL32Axf_4 */
18790 { pool
, POOL32Axf_5
, 4 , 32,
18791 0xfc0001ff, 0x2000017f, 0 , 0,
18792 0x0 }, /* POOL32Axf_5 */
18793 { reserved_block
, 0 , 0 , 32,
18794 0xfc0001ff, 0x200001bf, 0 , 0,
18795 0x0 }, /* POOL32Axf~*(6) */
18796 { pool
, POOL32Axf_7
, 8 , 32,
18797 0xfc0001ff, 0x200001ff, 0 , 0,
18798 0x0 }, /* POOL32Axf_7 */
18802 NMD::Pool
NMD::_POOL32A7
[8] = {
18803 { pool
, P_LSX
, 2 , 32,
18804 0xfc00003f, 0x20000007, 0 , 0,
18806 { instruction
, 0 , 0 , 32,
18807 0xfc00003f, 0x2000000f, &NMD::LSA
, 0,
18809 { reserved_block
, 0 , 0 , 32,
18810 0xfc00003f, 0x20000017, 0 , 0,
18811 0x0 }, /* _POOL32A7~*(2) */
18812 { instruction
, 0 , 0 , 32,
18813 0xfc00003f, 0x2000001f, &NMD::EXTW
, 0,
18815 { reserved_block
, 0 , 0 , 32,
18816 0xfc00003f, 0x20000027, 0 , 0,
18817 0x0 }, /* _POOL32A7~*(4) */
18818 { reserved_block
, 0 , 0 , 32,
18819 0xfc00003f, 0x2000002f, 0 , 0,
18820 0x0 }, /* _POOL32A7~*(5) */
18821 { reserved_block
, 0 , 0 , 32,
18822 0xfc00003f, 0x20000037, 0 , 0,
18823 0x0 }, /* _POOL32A7~*(6) */
18824 { pool
, POOL32Axf
, 8 , 32,
18825 0xfc00003f, 0x2000003f, 0 , 0,
18826 0x0 }, /* POOL32Axf */
18830 NMD::Pool
NMD::P32A
[8] = {
18831 { pool
, _POOL32A0
, 128 , 32,
18832 0xfc000007, 0x20000000, 0 , 0,
18833 0x0 }, /* _POOL32A0 */
18834 { instruction
, 0 , 0 , 32,
18835 0xfc000007, 0x20000001, &NMD::SPECIAL2
, 0,
18836 UDI_
}, /* SPECIAL2 */
18837 { instruction
, 0 , 0 , 32,
18838 0xfc000007, 0x20000002, &NMD::COP2_1
, 0,
18839 CP2_
}, /* COP2_1 */
18840 { instruction
, 0 , 0 , 32,
18841 0xfc000007, 0x20000003, &NMD::UDI
, 0,
18843 { reserved_block
, 0 , 0 , 32,
18844 0xfc000007, 0x20000004, 0 , 0,
18845 0x0 }, /* P32A~*(4) */
18846 { pool
, _POOL32A5
, 128 , 32,
18847 0xfc000007, 0x20000005, 0 , 0,
18848 0x0 }, /* _POOL32A5 */
18849 { reserved_block
, 0 , 0 , 32,
18850 0xfc000007, 0x20000006, 0 , 0,
18851 0x0 }, /* P32A~*(6) */
18852 { pool
, _POOL32A7
, 8 , 32,
18853 0xfc000007, 0x20000007, 0 , 0,
18854 0x0 }, /* _POOL32A7 */
18858 NMD::Pool
NMD::P_GP_D
[2] = {
18859 { instruction
, 0 , 0 , 32,
18860 0xfc000007, 0x40000001, &NMD::LD_GP_
, 0,
18861 MIPS64_
}, /* LD[GP] */
18862 { instruction
, 0 , 0 , 32,
18863 0xfc000007, 0x40000005, &NMD::SD_GP_
, 0,
18864 MIPS64_
}, /* SD[GP] */
18868 NMD::Pool
NMD::P_GP_W
[4] = {
18869 { instruction
, 0 , 0 , 32,
18870 0xfc000003, 0x40000000, &NMD::ADDIU_GP_W_
, 0,
18871 0x0 }, /* ADDIU[GP.W] */
18872 { pool
, P_GP_D
, 2 , 32,
18873 0xfc000003, 0x40000001, 0 , 0,
18874 0x0 }, /* P.GP.D */
18875 { instruction
, 0 , 0 , 32,
18876 0xfc000003, 0x40000002, &NMD::LW_GP_
, 0,
18877 0x0 }, /* LW[GP] */
18878 { instruction
, 0 , 0 , 32,
18879 0xfc000003, 0x40000003, &NMD::SW_GP_
, 0,
18880 0x0 }, /* SW[GP] */
18884 NMD::Pool
NMD::POOL48I
[32] = {
18885 { instruction
, 0 , 0 , 48,
18886 0xfc1f00000000ull
, 0x600000000000ull
, &NMD::LI_48_
, 0,
18887 XMMS_
}, /* LI[48] */
18888 { instruction
, 0 , 0 , 48,
18889 0xfc1f00000000ull
, 0x600100000000ull
, &NMD::ADDIU_48_
, 0,
18890 XMMS_
}, /* ADDIU[48] */
18891 { instruction
, 0 , 0 , 48,
18892 0xfc1f00000000ull
, 0x600200000000ull
, &NMD::ADDIU_GP48_
, 0,
18893 XMMS_
}, /* ADDIU[GP48] */
18894 { instruction
, 0 , 0 , 48,
18895 0xfc1f00000000ull
, 0x600300000000ull
, &NMD::ADDIUPC_48_
, 0,
18896 XMMS_
}, /* ADDIUPC[48] */
18897 { reserved_block
, 0 , 0 , 48,
18898 0xfc1f00000000ull
, 0x600400000000ull
, 0 , 0,
18899 0x0 }, /* POOL48I~*(4) */
18900 { reserved_block
, 0 , 0 , 48,
18901 0xfc1f00000000ull
, 0x600500000000ull
, 0 , 0,
18902 0x0 }, /* POOL48I~*(5) */
18903 { reserved_block
, 0 , 0 , 48,
18904 0xfc1f00000000ull
, 0x600600000000ull
, 0 , 0,
18905 0x0 }, /* POOL48I~*(6) */
18906 { reserved_block
, 0 , 0 , 48,
18907 0xfc1f00000000ull
, 0x600700000000ull
, 0 , 0,
18908 0x0 }, /* POOL48I~*(7) */
18909 { reserved_block
, 0 , 0 , 48,
18910 0xfc1f00000000ull
, 0x600800000000ull
, 0 , 0,
18911 0x0 }, /* POOL48I~*(8) */
18912 { reserved_block
, 0 , 0 , 48,
18913 0xfc1f00000000ull
, 0x600900000000ull
, 0 , 0,
18914 0x0 }, /* POOL48I~*(9) */
18915 { reserved_block
, 0 , 0 , 48,
18916 0xfc1f00000000ull
, 0x600a00000000ull
, 0 , 0,
18917 0x0 }, /* POOL48I~*(10) */
18918 { instruction
, 0 , 0 , 48,
18919 0xfc1f00000000ull
, 0x600b00000000ull
, &NMD::LWPC_48_
, 0,
18920 XMMS_
}, /* LWPC[48] */
18921 { reserved_block
, 0 , 0 , 48,
18922 0xfc1f00000000ull
, 0x600c00000000ull
, 0 , 0,
18923 0x0 }, /* POOL48I~*(12) */
18924 { reserved_block
, 0 , 0 , 48,
18925 0xfc1f00000000ull
, 0x600d00000000ull
, 0 , 0,
18926 0x0 }, /* POOL48I~*(13) */
18927 { reserved_block
, 0 , 0 , 48,
18928 0xfc1f00000000ull
, 0x600e00000000ull
, 0 , 0,
18929 0x0 }, /* POOL48I~*(14) */
18930 { instruction
, 0 , 0 , 48,
18931 0xfc1f00000000ull
, 0x600f00000000ull
, &NMD::SWPC_48_
, 0,
18932 XMMS_
}, /* SWPC[48] */
18933 { reserved_block
, 0 , 0 , 48,
18934 0xfc1f00000000ull
, 0x601000000000ull
, 0 , 0,
18935 0x0 }, /* POOL48I~*(16) */
18936 { instruction
, 0 , 0 , 48,
18937 0xfc1f00000000ull
, 0x601100000000ull
, &NMD::DADDIU_48_
, 0,
18938 MIPS64_
}, /* DADDIU[48] */
18939 { reserved_block
, 0 , 0 , 48,
18940 0xfc1f00000000ull
, 0x601200000000ull
, 0 , 0,
18941 0x0 }, /* POOL48I~*(18) */
18942 { reserved_block
, 0 , 0 , 48,
18943 0xfc1f00000000ull
, 0x601300000000ull
, 0 , 0,
18944 0x0 }, /* POOL48I~*(19) */
18945 { instruction
, 0 , 0 , 48,
18946 0xfc1f00000000ull
, 0x601400000000ull
, &NMD::DLUI_48_
, 0,
18947 MIPS64_
}, /* DLUI[48] */
18948 { reserved_block
, 0 , 0 , 48,
18949 0xfc1f00000000ull
, 0x601500000000ull
, 0 , 0,
18950 0x0 }, /* POOL48I~*(21) */
18951 { reserved_block
, 0 , 0 , 48,
18952 0xfc1f00000000ull
, 0x601600000000ull
, 0 , 0,
18953 0x0 }, /* POOL48I~*(22) */
18954 { reserved_block
, 0 , 0 , 48,
18955 0xfc1f00000000ull
, 0x601700000000ull
, 0 , 0,
18956 0x0 }, /* POOL48I~*(23) */
18957 { reserved_block
, 0 , 0 , 48,
18958 0xfc1f00000000ull
, 0x601800000000ull
, 0 , 0,
18959 0x0 }, /* POOL48I~*(24) */
18960 { reserved_block
, 0 , 0 , 48,
18961 0xfc1f00000000ull
, 0x601900000000ull
, 0 , 0,
18962 0x0 }, /* POOL48I~*(25) */
18963 { reserved_block
, 0 , 0 , 48,
18964 0xfc1f00000000ull
, 0x601a00000000ull
, 0 , 0,
18965 0x0 }, /* POOL48I~*(26) */
18966 { instruction
, 0 , 0 , 48,
18967 0xfc1f00000000ull
, 0x601b00000000ull
, &NMD::LDPC_48_
, 0,
18968 MIPS64_
}, /* LDPC[48] */
18969 { reserved_block
, 0 , 0 , 48,
18970 0xfc1f00000000ull
, 0x601c00000000ull
, 0 , 0,
18971 0x0 }, /* POOL48I~*(28) */
18972 { reserved_block
, 0 , 0 , 48,
18973 0xfc1f00000000ull
, 0x601d00000000ull
, 0 , 0,
18974 0x0 }, /* POOL48I~*(29) */
18975 { reserved_block
, 0 , 0 , 48,
18976 0xfc1f00000000ull
, 0x601e00000000ull
, 0 , 0,
18977 0x0 }, /* POOL48I~*(30) */
18978 { instruction
, 0 , 0 , 48,
18979 0xfc1f00000000ull
, 0x601f00000000ull
, &NMD::SDPC_48_
, 0,
18980 MIPS64_
}, /* SDPC[48] */
18984 NMD::Pool
NMD::PP_SR
[4] = {
18985 { instruction
, 0 , 0 , 32,
18986 0xfc10f003, 0x80003000, &NMD::SAVE_32_
, 0,
18987 0x0 }, /* SAVE[32] */
18988 { reserved_block
, 0 , 0 , 32,
18989 0xfc10f003, 0x80003001, 0 , 0,
18990 0x0 }, /* PP.SR~*(1) */
18991 { instruction
, 0 , 0 , 32,
18992 0xfc10f003, 0x80003002, &NMD::RESTORE_32_
, 0,
18993 0x0 }, /* RESTORE[32] */
18994 { return_instruction
, 0 , 0 , 32,
18995 0xfc10f003, 0x80003003, &NMD::RESTORE_JRC_32_
, 0,
18996 0x0 }, /* RESTORE.JRC[32] */
19000 NMD::Pool
NMD::P_SR_F
[8] = {
19001 { instruction
, 0 , 0 , 32,
19002 0xfc10f007, 0x80103000, &NMD::SAVEF
, 0,
19003 CP1_
}, /* SAVEF */
19004 { instruction
, 0 , 0 , 32,
19005 0xfc10f007, 0x80103001, &NMD::RESTOREF
, 0,
19006 CP1_
}, /* RESTOREF */
19007 { reserved_block
, 0 , 0 , 32,
19008 0xfc10f007, 0x80103002, 0 , 0,
19009 0x0 }, /* P.SR.F~*(2) */
19010 { reserved_block
, 0 , 0 , 32,
19011 0xfc10f007, 0x80103003, 0 , 0,
19012 0x0 }, /* P.SR.F~*(3) */
19013 { reserved_block
, 0 , 0 , 32,
19014 0xfc10f007, 0x80103004, 0 , 0,
19015 0x0 }, /* P.SR.F~*(4) */
19016 { reserved_block
, 0 , 0 , 32,
19017 0xfc10f007, 0x80103005, 0 , 0,
19018 0x0 }, /* P.SR.F~*(5) */
19019 { reserved_block
, 0 , 0 , 32,
19020 0xfc10f007, 0x80103006, 0 , 0,
19021 0x0 }, /* P.SR.F~*(6) */
19022 { reserved_block
, 0 , 0 , 32,
19023 0xfc10f007, 0x80103007, 0 , 0,
19024 0x0 }, /* P.SR.F~*(7) */
19028 NMD::Pool
NMD::P_SR
[2] = {
19029 { pool
, PP_SR
, 4 , 32,
19030 0xfc10f000, 0x80003000, 0 , 0,
19032 { pool
, P_SR_F
, 8 , 32,
19033 0xfc10f000, 0x80103000, 0 , 0,
19034 0x0 }, /* P.SR.F */
19038 NMD::Pool
NMD::P_SLL
[5] = {
19039 { instruction
, 0 , 0 , 32,
19040 0xffe0f1ff, 0x8000c000, &NMD::NOP_32_
, 0,
19041 0x0 }, /* NOP[32] */
19042 { instruction
, 0 , 0 , 32,
19043 0xffe0f1ff, 0x8000c003, &NMD::EHB
, 0,
19045 { instruction
, 0 , 0 , 32,
19046 0xffe0f1ff, 0x8000c005, &NMD::PAUSE
, 0,
19048 { instruction
, 0 , 0 , 32,
19049 0xffe0f1ff, 0x8000c006, &NMD::SYNC
, 0,
19051 { instruction
, 0 , 0 , 32,
19052 0xfc00f1e0, 0x8000c000, &NMD::SLL_32_
, 0,
19053 0x0 }, /* SLL[32] */
19057 NMD::Pool
NMD::P_SHIFT
[16] = {
19058 { pool
, P_SLL
, 5 , 32,
19059 0xfc00f1e0, 0x8000c000, 0 , 0,
19061 { reserved_block
, 0 , 0 , 32,
19062 0xfc00f1e0, 0x8000c020, 0 , 0,
19063 0x0 }, /* P.SHIFT~*(1) */
19064 { instruction
, 0 , 0 , 32,
19065 0xfc00f1e0, 0x8000c040, &NMD::SRL_32_
, 0,
19066 0x0 }, /* SRL[32] */
19067 { reserved_block
, 0 , 0 , 32,
19068 0xfc00f1e0, 0x8000c060, 0 , 0,
19069 0x0 }, /* P.SHIFT~*(3) */
19070 { instruction
, 0 , 0 , 32,
19071 0xfc00f1e0, 0x8000c080, &NMD::SRA
, 0,
19073 { reserved_block
, 0 , 0 , 32,
19074 0xfc00f1e0, 0x8000c0a0, 0 , 0,
19075 0x0 }, /* P.SHIFT~*(5) */
19076 { instruction
, 0 , 0 , 32,
19077 0xfc00f1e0, 0x8000c0c0, &NMD::ROTR
, 0,
19079 { reserved_block
, 0 , 0 , 32,
19080 0xfc00f1e0, 0x8000c0e0, 0 , 0,
19081 0x0 }, /* P.SHIFT~*(7) */
19082 { instruction
, 0 , 0 , 32,
19083 0xfc00f1e0, 0x8000c100, &NMD::DSLL
, 0,
19084 MIPS64_
}, /* DSLL */
19085 { instruction
, 0 , 0 , 32,
19086 0xfc00f1e0, 0x8000c120, &NMD::DSLL32
, 0,
19087 MIPS64_
}, /* DSLL32 */
19088 { instruction
, 0 , 0 , 32,
19089 0xfc00f1e0, 0x8000c140, &NMD::DSRL
, 0,
19090 MIPS64_
}, /* DSRL */
19091 { instruction
, 0 , 0 , 32,
19092 0xfc00f1e0, 0x8000c160, &NMD::DSRL32
, 0,
19093 MIPS64_
}, /* DSRL32 */
19094 { instruction
, 0 , 0 , 32,
19095 0xfc00f1e0, 0x8000c180, &NMD::DSRA
, 0,
19096 MIPS64_
}, /* DSRA */
19097 { instruction
, 0 , 0 , 32,
19098 0xfc00f1e0, 0x8000c1a0, &NMD::DSRA32
, 0,
19099 MIPS64_
}, /* DSRA32 */
19100 { instruction
, 0 , 0 , 32,
19101 0xfc00f1e0, 0x8000c1c0, &NMD::DROTR
, 0,
19102 MIPS64_
}, /* DROTR */
19103 { instruction
, 0 , 0 , 32,
19104 0xfc00f1e0, 0x8000c1e0, &NMD::DROTR32
, 0,
19105 MIPS64_
}, /* DROTR32 */
19109 NMD::Pool
NMD::P_ROTX
[4] = {
19110 { instruction
, 0 , 0 , 32,
19111 0xfc00f820, 0x8000d000, &NMD::ROTX
, 0,
19112 XMMS_
}, /* ROTX */
19113 { reserved_block
, 0 , 0 , 32,
19114 0xfc00f820, 0x8000d020, 0 , 0,
19115 0x0 }, /* P.ROTX~*(1) */
19116 { reserved_block
, 0 , 0 , 32,
19117 0xfc00f820, 0x8000d800, 0 , 0,
19118 0x0 }, /* P.ROTX~*(2) */
19119 { reserved_block
, 0 , 0 , 32,
19120 0xfc00f820, 0x8000d820, 0 , 0,
19121 0x0 }, /* P.ROTX~*(3) */
19125 NMD::Pool
NMD::P_INS
[4] = {
19126 { instruction
, 0 , 0 , 32,
19127 0xfc00f820, 0x8000e000, &NMD::INS
, 0,
19129 { instruction
, 0 , 0 , 32,
19130 0xfc00f820, 0x8000e020, &NMD::DINSU
, 0,
19131 MIPS64_
}, /* DINSU */
19132 { instruction
, 0 , 0 , 32,
19133 0xfc00f820, 0x8000e800, &NMD::DINSM
, 0,
19134 MIPS64_
}, /* DINSM */
19135 { instruction
, 0 , 0 , 32,
19136 0xfc00f820, 0x8000e820, &NMD::DINS
, 0,
19137 MIPS64_
}, /* DINS */
19141 NMD::Pool
NMD::P_EXT
[4] = {
19142 { instruction
, 0 , 0 , 32,
19143 0xfc00f820, 0x8000f000, &NMD::EXT
, 0,
19145 { instruction
, 0 , 0 , 32,
19146 0xfc00f820, 0x8000f020, &NMD::DEXTU
, 0,
19147 MIPS64_
}, /* DEXTU */
19148 { instruction
, 0 , 0 , 32,
19149 0xfc00f820, 0x8000f800, &NMD::DEXTM
, 0,
19150 MIPS64_
}, /* DEXTM */
19151 { instruction
, 0 , 0 , 32,
19152 0xfc00f820, 0x8000f820, &NMD::DEXT
, 0,
19153 MIPS64_
}, /* DEXT */
19157 NMD::Pool
NMD::P_U12
[16] = {
19158 { instruction
, 0 , 0 , 32,
19159 0xfc00f000, 0x80000000, &NMD::ORI
, 0,
19161 { instruction
, 0 , 0 , 32,
19162 0xfc00f000, 0x80001000, &NMD::XORI
, 0,
19164 { instruction
, 0 , 0 , 32,
19165 0xfc00f000, 0x80002000, &NMD::ANDI_32_
, 0,
19166 0x0 }, /* ANDI[32] */
19167 { pool
, P_SR
, 2 , 32,
19168 0xfc00f000, 0x80003000, 0 , 0,
19170 { instruction
, 0 , 0 , 32,
19171 0xfc00f000, 0x80004000, &NMD::SLTI
, 0,
19173 { instruction
, 0 , 0 , 32,
19174 0xfc00f000, 0x80005000, &NMD::SLTIU
, 0,
19176 { instruction
, 0 , 0 , 32,
19177 0xfc00f000, 0x80006000, &NMD::SEQI
, 0,
19179 { reserved_block
, 0 , 0 , 32,
19180 0xfc00f000, 0x80007000, 0 , 0,
19181 0x0 }, /* P.U12~*(7) */
19182 { instruction
, 0 , 0 , 32,
19183 0xfc00f000, 0x80008000, &NMD::ADDIU_NEG_
, 0,
19184 0x0 }, /* ADDIU[NEG] */
19185 { instruction
, 0 , 0 , 32,
19186 0xfc00f000, 0x80009000, &NMD::DADDIU_U12_
, 0,
19187 MIPS64_
}, /* DADDIU[U12] */
19188 { instruction
, 0 , 0 , 32,
19189 0xfc00f000, 0x8000a000, &NMD::DADDIU_NEG_
, 0,
19190 MIPS64_
}, /* DADDIU[NEG] */
19191 { instruction
, 0 , 0 , 32,
19192 0xfc00f000, 0x8000b000, &NMD::DROTX
, 0,
19193 MIPS64_
}, /* DROTX */
19194 { pool
, P_SHIFT
, 16 , 32,
19195 0xfc00f000, 0x8000c000, 0 , 0,
19196 0x0 }, /* P.SHIFT */
19197 { pool
, P_ROTX
, 4 , 32,
19198 0xfc00f000, 0x8000d000, 0 , 0,
19199 0x0 }, /* P.ROTX */
19200 { pool
, P_INS
, 4 , 32,
19201 0xfc00f000, 0x8000e000, 0 , 0,
19203 { pool
, P_EXT
, 4 , 32,
19204 0xfc00f000, 0x8000f000, 0 , 0,
19209 NMD::Pool
NMD::RINT_fmt
[2] = {
19210 { instruction
, 0 , 0 , 32,
19211 0xfc0003ff, 0xa0000020, &NMD::RINT_S
, 0,
19212 CP1_
}, /* RINT.S */
19213 { instruction
, 0 , 0 , 32,
19214 0xfc0003ff, 0xa0000220, &NMD::RINT_D
, 0,
19215 CP1_
}, /* RINT.D */
19219 NMD::Pool
NMD::ADD_fmt0
[2] = {
19220 { instruction
, 0 , 0 , 32,
19221 0xfc0003ff, 0xa0000030, &NMD::ADD_S
, 0,
19222 CP1_
}, /* ADD.S */
19223 { reserved_block
, 0 , 0 , 32,
19224 0xfc0003ff, 0xa0000230, 0 , 0,
19225 CP1_
}, /* ADD.fmt0~*(1) */
19229 NMD::Pool
NMD::SELEQZ_fmt
[2] = {
19230 { instruction
, 0 , 0 , 32,
19231 0xfc0003ff, 0xa0000038, &NMD::SELEQZ_S
, 0,
19232 CP1_
}, /* SELEQZ.S */
19233 { instruction
, 0 , 0 , 32,
19234 0xfc0003ff, 0xa0000238, &NMD::SELEQZ_D
, 0,
19235 CP1_
}, /* SELEQZ.D */
19239 NMD::Pool
NMD::CLASS_fmt
[2] = {
19240 { instruction
, 0 , 0 , 32,
19241 0xfc0003ff, 0xa0000060, &NMD::CLASS_S
, 0,
19242 CP1_
}, /* CLASS.S */
19243 { instruction
, 0 , 0 , 32,
19244 0xfc0003ff, 0xa0000260, &NMD::CLASS_D
, 0,
19245 CP1_
}, /* CLASS.D */
19249 NMD::Pool
NMD::SUB_fmt0
[2] = {
19250 { instruction
, 0 , 0 , 32,
19251 0xfc0003ff, 0xa0000070, &NMD::SUB_S
, 0,
19252 CP1_
}, /* SUB.S */
19253 { reserved_block
, 0 , 0 , 32,
19254 0xfc0003ff, 0xa0000270, 0 , 0,
19255 CP1_
}, /* SUB.fmt0~*(1) */
19259 NMD::Pool
NMD::SELNEZ_fmt
[2] = {
19260 { instruction
, 0 , 0 , 32,
19261 0xfc0003ff, 0xa0000078, &NMD::SELNEZ_S
, 0,
19262 CP1_
}, /* SELNEZ.S */
19263 { instruction
, 0 , 0 , 32,
19264 0xfc0003ff, 0xa0000278, &NMD::SELNEZ_D
, 0,
19265 CP1_
}, /* SELNEZ.D */
19269 NMD::Pool
NMD::MUL_fmt0
[2] = {
19270 { instruction
, 0 , 0 , 32,
19271 0xfc0003ff, 0xa00000b0, &NMD::MUL_S
, 0,
19272 CP1_
}, /* MUL.S */
19273 { reserved_block
, 0 , 0 , 32,
19274 0xfc0003ff, 0xa00002b0, 0 , 0,
19275 CP1_
}, /* MUL.fmt0~*(1) */
19279 NMD::Pool
NMD::SEL_fmt
[2] = {
19280 { instruction
, 0 , 0 , 32,
19281 0xfc0003ff, 0xa00000b8, &NMD::SEL_S
, 0,
19282 CP1_
}, /* SEL.S */
19283 { instruction
, 0 , 0 , 32,
19284 0xfc0003ff, 0xa00002b8, &NMD::SEL_D
, 0,
19285 CP1_
}, /* SEL.D */
19289 NMD::Pool
NMD::DIV_fmt0
[2] = {
19290 { instruction
, 0 , 0 , 32,
19291 0xfc0003ff, 0xa00000f0, &NMD::DIV_S
, 0,
19292 CP1_
}, /* DIV.S */
19293 { reserved_block
, 0 , 0 , 32,
19294 0xfc0003ff, 0xa00002f0, 0 , 0,
19295 CP1_
}, /* DIV.fmt0~*(1) */
19299 NMD::Pool
NMD::ADD_fmt1
[2] = {
19300 { instruction
, 0 , 0 , 32,
19301 0xfc0003ff, 0xa0000130, &NMD::ADD_D
, 0,
19302 CP1_
}, /* ADD.D */
19303 { reserved_block
, 0 , 0 , 32,
19304 0xfc0003ff, 0xa0000330, 0 , 0,
19305 CP1_
}, /* ADD.fmt1~*(1) */
19309 NMD::Pool
NMD::SUB_fmt1
[2] = {
19310 { instruction
, 0 , 0 , 32,
19311 0xfc0003ff, 0xa0000170, &NMD::SUB_D
, 0,
19312 CP1_
}, /* SUB.D */
19313 { reserved_block
, 0 , 0 , 32,
19314 0xfc0003ff, 0xa0000370, 0 , 0,
19315 CP1_
}, /* SUB.fmt1~*(1) */
19319 NMD::Pool
NMD::MUL_fmt1
[2] = {
19320 { instruction
, 0 , 0 , 32,
19321 0xfc0003ff, 0xa00001b0, &NMD::MUL_D
, 0,
19322 CP1_
}, /* MUL.D */
19323 { reserved_block
, 0 , 0 , 32,
19324 0xfc0003ff, 0xa00003b0, 0 , 0,
19325 CP1_
}, /* MUL.fmt1~*(1) */
19329 NMD::Pool
NMD::MADDF_fmt
[2] = {
19330 { instruction
, 0 , 0 , 32,
19331 0xfc0003ff, 0xa00001b8, &NMD::MADDF_S
, 0,
19332 CP1_
}, /* MADDF.S */
19333 { instruction
, 0 , 0 , 32,
19334 0xfc0003ff, 0xa00003b8, &NMD::MADDF_D
, 0,
19335 CP1_
}, /* MADDF.D */
19339 NMD::Pool
NMD::DIV_fmt1
[2] = {
19340 { instruction
, 0 , 0 , 32,
19341 0xfc0003ff, 0xa00001f0, &NMD::DIV_D
, 0,
19342 CP1_
}, /* DIV.D */
19343 { reserved_block
, 0 , 0 , 32,
19344 0xfc0003ff, 0xa00003f0, 0 , 0,
19345 CP1_
}, /* DIV.fmt1~*(1) */
19349 NMD::Pool
NMD::MSUBF_fmt
[2] = {
19350 { instruction
, 0 , 0 , 32,
19351 0xfc0003ff, 0xa00001f8, &NMD::MSUBF_S
, 0,
19352 CP1_
}, /* MSUBF.S */
19353 { instruction
, 0 , 0 , 32,
19354 0xfc0003ff, 0xa00003f8, &NMD::MSUBF_D
, 0,
19355 CP1_
}, /* MSUBF.D */
19359 NMD::Pool
NMD::POOL32F_0
[64] = {
19360 { reserved_block
, 0 , 0 , 32,
19361 0xfc0001ff, 0xa0000000, 0 , 0,
19362 CP1_
}, /* POOL32F_0~*(0) */
19363 { reserved_block
, 0 , 0 , 32,
19364 0xfc0001ff, 0xa0000008, 0 , 0,
19365 CP1_
}, /* POOL32F_0~*(1) */
19366 { reserved_block
, 0 , 0 , 32,
19367 0xfc0001ff, 0xa0000010, 0 , 0,
19368 CP1_
}, /* POOL32F_0~*(2) */
19369 { reserved_block
, 0 , 0 , 32,
19370 0xfc0001ff, 0xa0000018, 0 , 0,
19371 CP1_
}, /* POOL32F_0~*(3) */
19372 { pool
, RINT_fmt
, 2 , 32,
19373 0xfc0001ff, 0xa0000020, 0 , 0,
19374 CP1_
}, /* RINT.fmt */
19375 { reserved_block
, 0 , 0 , 32,
19376 0xfc0001ff, 0xa0000028, 0 , 0,
19377 CP1_
}, /* POOL32F_0~*(5) */
19378 { pool
, ADD_fmt0
, 2 , 32,
19379 0xfc0001ff, 0xa0000030, 0 , 0,
19380 CP1_
}, /* ADD.fmt0 */
19381 { pool
, SELEQZ_fmt
, 2 , 32,
19382 0xfc0001ff, 0xa0000038, 0 , 0,
19383 CP1_
}, /* SELEQZ.fmt */
19384 { reserved_block
, 0 , 0 , 32,
19385 0xfc0001ff, 0xa0000040, 0 , 0,
19386 CP1_
}, /* POOL32F_0~*(8) */
19387 { reserved_block
, 0 , 0 , 32,
19388 0xfc0001ff, 0xa0000048, 0 , 0,
19389 CP1_
}, /* POOL32F_0~*(9) */
19390 { reserved_block
, 0 , 0 , 32,
19391 0xfc0001ff, 0xa0000050, 0 , 0,
19392 CP1_
}, /* POOL32F_0~*(10) */
19393 { reserved_block
, 0 , 0 , 32,
19394 0xfc0001ff, 0xa0000058, 0 , 0,
19395 CP1_
}, /* POOL32F_0~*(11) */
19396 { pool
, CLASS_fmt
, 2 , 32,
19397 0xfc0001ff, 0xa0000060, 0 , 0,
19398 CP1_
}, /* CLASS.fmt */
19399 { reserved_block
, 0 , 0 , 32,
19400 0xfc0001ff, 0xa0000068, 0 , 0,
19401 CP1_
}, /* POOL32F_0~*(13) */
19402 { pool
, SUB_fmt0
, 2 , 32,
19403 0xfc0001ff, 0xa0000070, 0 , 0,
19404 CP1_
}, /* SUB.fmt0 */
19405 { pool
, SELNEZ_fmt
, 2 , 32,
19406 0xfc0001ff, 0xa0000078, 0 , 0,
19407 CP1_
}, /* SELNEZ.fmt */
19408 { reserved_block
, 0 , 0 , 32,
19409 0xfc0001ff, 0xa0000080, 0 , 0,
19410 CP1_
}, /* POOL32F_0~*(16) */
19411 { reserved_block
, 0 , 0 , 32,
19412 0xfc0001ff, 0xa0000088, 0 , 0,
19413 CP1_
}, /* POOL32F_0~*(17) */
19414 { reserved_block
, 0 , 0 , 32,
19415 0xfc0001ff, 0xa0000090, 0 , 0,
19416 CP1_
}, /* POOL32F_0~*(18) */
19417 { reserved_block
, 0 , 0 , 32,
19418 0xfc0001ff, 0xa0000098, 0 , 0,
19419 CP1_
}, /* POOL32F_0~*(19) */
19420 { reserved_block
, 0 , 0 , 32,
19421 0xfc0001ff, 0xa00000a0, 0 , 0,
19422 CP1_
}, /* POOL32F_0~*(20) */
19423 { reserved_block
, 0 , 0 , 32,
19424 0xfc0001ff, 0xa00000a8, 0 , 0,
19425 CP1_
}, /* POOL32F_0~*(21) */
19426 { pool
, MUL_fmt0
, 2 , 32,
19427 0xfc0001ff, 0xa00000b0, 0 , 0,
19428 CP1_
}, /* MUL.fmt0 */
19429 { pool
, SEL_fmt
, 2 , 32,
19430 0xfc0001ff, 0xa00000b8, 0 , 0,
19431 CP1_
}, /* SEL.fmt */
19432 { reserved_block
, 0 , 0 , 32,
19433 0xfc0001ff, 0xa00000c0, 0 , 0,
19434 CP1_
}, /* POOL32F_0~*(24) */
19435 { reserved_block
, 0 , 0 , 32,
19436 0xfc0001ff, 0xa00000c8, 0 , 0,
19437 CP1_
}, /* POOL32F_0~*(25) */
19438 { reserved_block
, 0 , 0 , 32,
19439 0xfc0001ff, 0xa00000d0, 0 , 0,
19440 CP1_
}, /* POOL32F_0~*(26) */
19441 { reserved_block
, 0 , 0 , 32,
19442 0xfc0001ff, 0xa00000d8, 0 , 0,
19443 CP1_
}, /* POOL32F_0~*(27) */
19444 { reserved_block
, 0 , 0 , 32,
19445 0xfc0001ff, 0xa00000e0, 0 , 0,
19446 CP1_
}, /* POOL32F_0~*(28) */
19447 { reserved_block
, 0 , 0 , 32,
19448 0xfc0001ff, 0xa00000e8, 0 , 0,
19449 CP1_
}, /* POOL32F_0~*(29) */
19450 { pool
, DIV_fmt0
, 2 , 32,
19451 0xfc0001ff, 0xa00000f0, 0 , 0,
19452 CP1_
}, /* DIV.fmt0 */
19453 { reserved_block
, 0 , 0 , 32,
19454 0xfc0001ff, 0xa00000f8, 0 , 0,
19455 CP1_
}, /* POOL32F_0~*(31) */
19456 { reserved_block
, 0 , 0 , 32,
19457 0xfc0001ff, 0xa0000100, 0 , 0,
19458 CP1_
}, /* POOL32F_0~*(32) */
19459 { reserved_block
, 0 , 0 , 32,
19460 0xfc0001ff, 0xa0000108, 0 , 0,
19461 CP1_
}, /* POOL32F_0~*(33) */
19462 { reserved_block
, 0 , 0 , 32,
19463 0xfc0001ff, 0xa0000110, 0 , 0,
19464 CP1_
}, /* POOL32F_0~*(34) */
19465 { reserved_block
, 0 , 0 , 32,
19466 0xfc0001ff, 0xa0000118, 0 , 0,
19467 CP1_
}, /* POOL32F_0~*(35) */
19468 { reserved_block
, 0 , 0 , 32,
19469 0xfc0001ff, 0xa0000120, 0 , 0,
19470 CP1_
}, /* POOL32F_0~*(36) */
19471 { reserved_block
, 0 , 0 , 32,
19472 0xfc0001ff, 0xa0000128, 0 , 0,
19473 CP1_
}, /* POOL32F_0~*(37) */
19474 { pool
, ADD_fmt1
, 2 , 32,
19475 0xfc0001ff, 0xa0000130, 0 , 0,
19476 CP1_
}, /* ADD.fmt1 */
19477 { reserved_block
, 0 , 0 , 32,
19478 0xfc0001ff, 0xa0000138, 0 , 0,
19479 CP1_
}, /* POOL32F_0~*(39) */
19480 { reserved_block
, 0 , 0 , 32,
19481 0xfc0001ff, 0xa0000140, 0 , 0,
19482 CP1_
}, /* POOL32F_0~*(40) */
19483 { reserved_block
, 0 , 0 , 32,
19484 0xfc0001ff, 0xa0000148, 0 , 0,
19485 CP1_
}, /* POOL32F_0~*(41) */
19486 { reserved_block
, 0 , 0 , 32,
19487 0xfc0001ff, 0xa0000150, 0 , 0,
19488 CP1_
}, /* POOL32F_0~*(42) */
19489 { reserved_block
, 0 , 0 , 32,
19490 0xfc0001ff, 0xa0000158, 0 , 0,
19491 CP1_
}, /* POOL32F_0~*(43) */
19492 { reserved_block
, 0 , 0 , 32,
19493 0xfc0001ff, 0xa0000160, 0 , 0,
19494 CP1_
}, /* POOL32F_0~*(44) */
19495 { reserved_block
, 0 , 0 , 32,
19496 0xfc0001ff, 0xa0000168, 0 , 0,
19497 CP1_
}, /* POOL32F_0~*(45) */
19498 { pool
, SUB_fmt1
, 2 , 32,
19499 0xfc0001ff, 0xa0000170, 0 , 0,
19500 CP1_
}, /* SUB.fmt1 */
19501 { reserved_block
, 0 , 0 , 32,
19502 0xfc0001ff, 0xa0000178, 0 , 0,
19503 CP1_
}, /* POOL32F_0~*(47) */
19504 { reserved_block
, 0 , 0 , 32,
19505 0xfc0001ff, 0xa0000180, 0 , 0,
19506 CP1_
}, /* POOL32F_0~*(48) */
19507 { reserved_block
, 0 , 0 , 32,
19508 0xfc0001ff, 0xa0000188, 0 , 0,
19509 CP1_
}, /* POOL32F_0~*(49) */
19510 { reserved_block
, 0 , 0 , 32,
19511 0xfc0001ff, 0xa0000190, 0 , 0,
19512 CP1_
}, /* POOL32F_0~*(50) */
19513 { reserved_block
, 0 , 0 , 32,
19514 0xfc0001ff, 0xa0000198, 0 , 0,
19515 CP1_
}, /* POOL32F_0~*(51) */
19516 { reserved_block
, 0 , 0 , 32,
19517 0xfc0001ff, 0xa00001a0, 0 , 0,
19518 CP1_
}, /* POOL32F_0~*(52) */
19519 { reserved_block
, 0 , 0 , 32,
19520 0xfc0001ff, 0xa00001a8, 0 , 0,
19521 CP1_
}, /* POOL32F_0~*(53) */
19522 { pool
, MUL_fmt1
, 2 , 32,
19523 0xfc0001ff, 0xa00001b0, 0 , 0,
19524 CP1_
}, /* MUL.fmt1 */
19525 { pool
, MADDF_fmt
, 2 , 32,
19526 0xfc0001ff, 0xa00001b8, 0 , 0,
19527 CP1_
}, /* MADDF.fmt */
19528 { reserved_block
, 0 , 0 , 32,
19529 0xfc0001ff, 0xa00001c0, 0 , 0,
19530 CP1_
}, /* POOL32F_0~*(56) */
19531 { reserved_block
, 0 , 0 , 32,
19532 0xfc0001ff, 0xa00001c8, 0 , 0,
19533 CP1_
}, /* POOL32F_0~*(57) */
19534 { reserved_block
, 0 , 0 , 32,
19535 0xfc0001ff, 0xa00001d0, 0 , 0,
19536 CP1_
}, /* POOL32F_0~*(58) */
19537 { reserved_block
, 0 , 0 , 32,
19538 0xfc0001ff, 0xa00001d8, 0 , 0,
19539 CP1_
}, /* POOL32F_0~*(59) */
19540 { reserved_block
, 0 , 0 , 32,
19541 0xfc0001ff, 0xa00001e0, 0 , 0,
19542 CP1_
}, /* POOL32F_0~*(60) */
19543 { reserved_block
, 0 , 0 , 32,
19544 0xfc0001ff, 0xa00001e8, 0 , 0,
19545 CP1_
}, /* POOL32F_0~*(61) */
19546 { pool
, DIV_fmt1
, 2 , 32,
19547 0xfc0001ff, 0xa00001f0, 0 , 0,
19548 CP1_
}, /* DIV.fmt1 */
19549 { pool
, MSUBF_fmt
, 2 , 32,
19550 0xfc0001ff, 0xa00001f8, 0 , 0,
19551 CP1_
}, /* MSUBF.fmt */
19555 NMD::Pool
NMD::MIN_fmt
[2] = {
19556 { instruction
, 0 , 0 , 32,
19557 0xfc00023f, 0xa0000003, &NMD::MIN_S
, 0,
19558 CP1_
}, /* MIN.S */
19559 { instruction
, 0 , 0 , 32,
19560 0xfc00023f, 0xa0000203, &NMD::MIN_D
, 0,
19561 CP1_
}, /* MIN.D */
19565 NMD::Pool
NMD::MAX_fmt
[2] = {
19566 { instruction
, 0 , 0 , 32,
19567 0xfc00023f, 0xa000000b, &NMD::MAX_S
, 0,
19568 CP1_
}, /* MAX.S */
19569 { instruction
, 0 , 0 , 32,
19570 0xfc00023f, 0xa000020b, &NMD::MAX_D
, 0,
19571 CP1_
}, /* MAX.D */
19575 NMD::Pool
NMD::MINA_fmt
[2] = {
19576 { instruction
, 0 , 0 , 32,
19577 0xfc00023f, 0xa0000023, &NMD::MINA_S
, 0,
19578 CP1_
}, /* MINA.S */
19579 { instruction
, 0 , 0 , 32,
19580 0xfc00023f, 0xa0000223, &NMD::MINA_D
, 0,
19581 CP1_
}, /* MINA.D */
19585 NMD::Pool
NMD::MAXA_fmt
[2] = {
19586 { instruction
, 0 , 0 , 32,
19587 0xfc00023f, 0xa000002b, &NMD::MAXA_S
, 0,
19588 CP1_
}, /* MAXA.S */
19589 { instruction
, 0 , 0 , 32,
19590 0xfc00023f, 0xa000022b, &NMD::MAXA_D
, 0,
19591 CP1_
}, /* MAXA.D */
19595 NMD::Pool
NMD::CVT_L_fmt
[2] = {
19596 { instruction
, 0 , 0 , 32,
19597 0xfc007fff, 0xa000013b, &NMD::CVT_L_S
, 0,
19598 CP1_
}, /* CVT.L.S */
19599 { instruction
, 0 , 0 , 32,
19600 0xfc007fff, 0xa000413b, &NMD::CVT_L_D
, 0,
19601 CP1_
}, /* CVT.L.D */
19605 NMD::Pool
NMD::RSQRT_fmt
[2] = {
19606 { instruction
, 0 , 0 , 32,
19607 0xfc007fff, 0xa000023b, &NMD::RSQRT_S
, 0,
19608 CP1_
}, /* RSQRT.S */
19609 { instruction
, 0 , 0 , 32,
19610 0xfc007fff, 0xa000423b, &NMD::RSQRT_D
, 0,
19611 CP1_
}, /* RSQRT.D */
19615 NMD::Pool
NMD::FLOOR_L_fmt
[2] = {
19616 { instruction
, 0 , 0 , 32,
19617 0xfc007fff, 0xa000033b, &NMD::FLOOR_L_S
, 0,
19618 CP1_
}, /* FLOOR.L.S */
19619 { instruction
, 0 , 0 , 32,
19620 0xfc007fff, 0xa000433b, &NMD::FLOOR_L_D
, 0,
19621 CP1_
}, /* FLOOR.L.D */
19625 NMD::Pool
NMD::CVT_W_fmt
[2] = {
19626 { instruction
, 0 , 0 , 32,
19627 0xfc007fff, 0xa000093b, &NMD::CVT_W_S
, 0,
19628 CP1_
}, /* CVT.W.S */
19629 { instruction
, 0 , 0 , 32,
19630 0xfc007fff, 0xa000493b, &NMD::CVT_W_D
, 0,
19631 CP1_
}, /* CVT.W.D */
19635 NMD::Pool
NMD::SQRT_fmt
[2] = {
19636 { instruction
, 0 , 0 , 32,
19637 0xfc007fff, 0xa0000a3b, &NMD::SQRT_S
, 0,
19638 CP1_
}, /* SQRT.S */
19639 { instruction
, 0 , 0 , 32,
19640 0xfc007fff, 0xa0004a3b, &NMD::SQRT_D
, 0,
19641 CP1_
}, /* SQRT.D */
19645 NMD::Pool
NMD::FLOOR_W_fmt
[2] = {
19646 { instruction
, 0 , 0 , 32,
19647 0xfc007fff, 0xa0000b3b, &NMD::FLOOR_W_S
, 0,
19648 CP1_
}, /* FLOOR.W.S */
19649 { instruction
, 0 , 0 , 32,
19650 0xfc007fff, 0xa0004b3b, &NMD::FLOOR_W_D
, 0,
19651 CP1_
}, /* FLOOR.W.D */
19655 NMD::Pool
NMD::RECIP_fmt
[2] = {
19656 { instruction
, 0 , 0 , 32,
19657 0xfc007fff, 0xa000123b, &NMD::RECIP_S
, 0,
19658 CP1_
}, /* RECIP.S */
19659 { instruction
, 0 , 0 , 32,
19660 0xfc007fff, 0xa000523b, &NMD::RECIP_D
, 0,
19661 CP1_
}, /* RECIP.D */
19665 NMD::Pool
NMD::CEIL_L_fmt
[2] = {
19666 { instruction
, 0 , 0 , 32,
19667 0xfc007fff, 0xa000133b, &NMD::CEIL_L_S
, 0,
19668 CP1_
}, /* CEIL.L.S */
19669 { instruction
, 0 , 0 , 32,
19670 0xfc007fff, 0xa000533b, &NMD::CEIL_L_D
, 0,
19671 CP1_
}, /* CEIL.L.D */
19675 NMD::Pool
NMD::CEIL_W_fmt
[2] = {
19676 { instruction
, 0 , 0 , 32,
19677 0xfc007fff, 0xa0001b3b, &NMD::CEIL_W_S
, 0,
19678 CP1_
}, /* CEIL.W.S */
19679 { instruction
, 0 , 0 , 32,
19680 0xfc007fff, 0xa0005b3b, &NMD::CEIL_W_D
, 0,
19681 CP1_
}, /* CEIL.W.D */
19685 NMD::Pool
NMD::TRUNC_L_fmt
[2] = {
19686 { instruction
, 0 , 0 , 32,
19687 0xfc007fff, 0xa000233b, &NMD::TRUNC_L_S
, 0,
19688 CP1_
}, /* TRUNC.L.S */
19689 { instruction
, 0 , 0 , 32,
19690 0xfc007fff, 0xa000633b, &NMD::TRUNC_L_D
, 0,
19691 CP1_
}, /* TRUNC.L.D */
19695 NMD::Pool
NMD::TRUNC_W_fmt
[2] = {
19696 { instruction
, 0 , 0 , 32,
19697 0xfc007fff, 0xa0002b3b, &NMD::TRUNC_W_S
, 0,
19698 CP1_
}, /* TRUNC.W.S */
19699 { instruction
, 0 , 0 , 32,
19700 0xfc007fff, 0xa0006b3b, &NMD::TRUNC_W_D
, 0,
19701 CP1_
}, /* TRUNC.W.D */
19705 NMD::Pool
NMD::ROUND_L_fmt
[2] = {
19706 { instruction
, 0 , 0 , 32,
19707 0xfc007fff, 0xa000333b, &NMD::ROUND_L_S
, 0,
19708 CP1_
}, /* ROUND.L.S */
19709 { instruction
, 0 , 0 , 32,
19710 0xfc007fff, 0xa000733b, &NMD::ROUND_L_D
, 0,
19711 CP1_
}, /* ROUND.L.D */
19715 NMD::Pool
NMD::ROUND_W_fmt
[2] = {
19716 { instruction
, 0 , 0 , 32,
19717 0xfc007fff, 0xa0003b3b, &NMD::ROUND_W_S
, 0,
19718 CP1_
}, /* ROUND.W.S */
19719 { instruction
, 0 , 0 , 32,
19720 0xfc007fff, 0xa0007b3b, &NMD::ROUND_W_D
, 0,
19721 CP1_
}, /* ROUND.W.D */
19725 NMD::Pool
NMD::POOL32Fxf_0
[64] = {
19726 { reserved_block
, 0 , 0 , 32,
19727 0xfc003fff, 0xa000003b, 0 , 0,
19728 CP1_
}, /* POOL32Fxf_0~*(0) */
19729 { pool
, CVT_L_fmt
, 2 , 32,
19730 0xfc003fff, 0xa000013b, 0 , 0,
19731 CP1_
}, /* CVT.L.fmt */
19732 { pool
, RSQRT_fmt
, 2 , 32,
19733 0xfc003fff, 0xa000023b, 0 , 0,
19734 CP1_
}, /* RSQRT.fmt */
19735 { pool
, FLOOR_L_fmt
, 2 , 32,
19736 0xfc003fff, 0xa000033b, 0 , 0,
19737 CP1_
}, /* FLOOR.L.fmt */
19738 { reserved_block
, 0 , 0 , 32,
19739 0xfc003fff, 0xa000043b, 0 , 0,
19740 CP1_
}, /* POOL32Fxf_0~*(4) */
19741 { reserved_block
, 0 , 0 , 32,
19742 0xfc003fff, 0xa000053b, 0 , 0,
19743 CP1_
}, /* POOL32Fxf_0~*(5) */
19744 { reserved_block
, 0 , 0 , 32,
19745 0xfc003fff, 0xa000063b, 0 , 0,
19746 CP1_
}, /* POOL32Fxf_0~*(6) */
19747 { reserved_block
, 0 , 0 , 32,
19748 0xfc003fff, 0xa000073b, 0 , 0,
19749 CP1_
}, /* POOL32Fxf_0~*(7) */
19750 { reserved_block
, 0 , 0 , 32,
19751 0xfc003fff, 0xa000083b, 0 , 0,
19752 CP1_
}, /* POOL32Fxf_0~*(8) */
19753 { pool
, CVT_W_fmt
, 2 , 32,
19754 0xfc003fff, 0xa000093b, 0 , 0,
19755 CP1_
}, /* CVT.W.fmt */
19756 { pool
, SQRT_fmt
, 2 , 32,
19757 0xfc003fff, 0xa0000a3b, 0 , 0,
19758 CP1_
}, /* SQRT.fmt */
19759 { pool
, FLOOR_W_fmt
, 2 , 32,
19760 0xfc003fff, 0xa0000b3b, 0 , 0,
19761 CP1_
}, /* FLOOR.W.fmt */
19762 { reserved_block
, 0 , 0 , 32,
19763 0xfc003fff, 0xa0000c3b, 0 , 0,
19764 CP1_
}, /* POOL32Fxf_0~*(12) */
19765 { reserved_block
, 0 , 0 , 32,
19766 0xfc003fff, 0xa0000d3b, 0 , 0,
19767 CP1_
}, /* POOL32Fxf_0~*(13) */
19768 { reserved_block
, 0 , 0 , 32,
19769 0xfc003fff, 0xa0000e3b, 0 , 0,
19770 CP1_
}, /* POOL32Fxf_0~*(14) */
19771 { reserved_block
, 0 , 0 , 32,
19772 0xfc003fff, 0xa0000f3b, 0 , 0,
19773 CP1_
}, /* POOL32Fxf_0~*(15) */
19774 { instruction
, 0 , 0 , 32,
19775 0xfc003fff, 0xa000103b, &NMD::CFC1
, 0,
19777 { reserved_block
, 0 , 0 , 32,
19778 0xfc003fff, 0xa000113b, 0 , 0,
19779 CP1_
}, /* POOL32Fxf_0~*(17) */
19780 { pool
, RECIP_fmt
, 2 , 32,
19781 0xfc003fff, 0xa000123b, 0 , 0,
19782 CP1_
}, /* RECIP.fmt */
19783 { pool
, CEIL_L_fmt
, 2 , 32,
19784 0xfc003fff, 0xa000133b, 0 , 0,
19785 CP1_
}, /* CEIL.L.fmt */
19786 { reserved_block
, 0 , 0 , 32,
19787 0xfc003fff, 0xa000143b, 0 , 0,
19788 CP1_
}, /* POOL32Fxf_0~*(20) */
19789 { reserved_block
, 0 , 0 , 32,
19790 0xfc003fff, 0xa000153b, 0 , 0,
19791 CP1_
}, /* POOL32Fxf_0~*(21) */
19792 { reserved_block
, 0 , 0 , 32,
19793 0xfc003fff, 0xa000163b, 0 , 0,
19794 CP1_
}, /* POOL32Fxf_0~*(22) */
19795 { reserved_block
, 0 , 0 , 32,
19796 0xfc003fff, 0xa000173b, 0 , 0,
19797 CP1_
}, /* POOL32Fxf_0~*(23) */
19798 { instruction
, 0 , 0 , 32,
19799 0xfc003fff, 0xa000183b, &NMD::CTC1
, 0,
19801 { reserved_block
, 0 , 0 , 32,
19802 0xfc003fff, 0xa000193b, 0 , 0,
19803 CP1_
}, /* POOL32Fxf_0~*(25) */
19804 { reserved_block
, 0 , 0 , 32,
19805 0xfc003fff, 0xa0001a3b, 0 , 0,
19806 CP1_
}, /* POOL32Fxf_0~*(26) */
19807 { pool
, CEIL_W_fmt
, 2 , 32,
19808 0xfc003fff, 0xa0001b3b, 0 , 0,
19809 CP1_
}, /* CEIL.W.fmt */
19810 { reserved_block
, 0 , 0 , 32,
19811 0xfc003fff, 0xa0001c3b, 0 , 0,
19812 CP1_
}, /* POOL32Fxf_0~*(28) */
19813 { reserved_block
, 0 , 0 , 32,
19814 0xfc003fff, 0xa0001d3b, 0 , 0,
19815 CP1_
}, /* POOL32Fxf_0~*(29) */
19816 { reserved_block
, 0 , 0 , 32,
19817 0xfc003fff, 0xa0001e3b, 0 , 0,
19818 CP1_
}, /* POOL32Fxf_0~*(30) */
19819 { reserved_block
, 0 , 0 , 32,
19820 0xfc003fff, 0xa0001f3b, 0 , 0,
19821 CP1_
}, /* POOL32Fxf_0~*(31) */
19822 { instruction
, 0 , 0 , 32,
19823 0xfc003fff, 0xa000203b, &NMD::MFC1
, 0,
19825 { instruction
, 0 , 0 , 32,
19826 0xfc003fff, 0xa000213b, &NMD::CVT_S_PL
, 0,
19827 CP1_
}, /* CVT.S.PL */
19828 { reserved_block
, 0 , 0 , 32,
19829 0xfc003fff, 0xa000223b, 0 , 0,
19830 CP1_
}, /* POOL32Fxf_0~*(34) */
19831 { pool
, TRUNC_L_fmt
, 2 , 32,
19832 0xfc003fff, 0xa000233b, 0 , 0,
19833 CP1_
}, /* TRUNC.L.fmt */
19834 { instruction
, 0 , 0 , 32,
19835 0xfc003fff, 0xa000243b, &NMD::DMFC1
, 0,
19836 CP1_
| MIPS64_
}, /* DMFC1 */
19837 { reserved_block
, 0 , 0 , 32,
19838 0xfc003fff, 0xa000253b, 0 , 0,
19839 CP1_
}, /* POOL32Fxf_0~*(37) */
19840 { reserved_block
, 0 , 0 , 32,
19841 0xfc003fff, 0xa000263b, 0 , 0,
19842 CP1_
}, /* POOL32Fxf_0~*(38) */
19843 { reserved_block
, 0 , 0 , 32,
19844 0xfc003fff, 0xa000273b, 0 , 0,
19845 CP1_
}, /* POOL32Fxf_0~*(39) */
19846 { instruction
, 0 , 0 , 32,
19847 0xfc003fff, 0xa000283b, &NMD::MTC1
, 0,
19849 { instruction
, 0 , 0 , 32,
19850 0xfc003fff, 0xa000293b, &NMD::CVT_S_PU
, 0,
19851 CP1_
}, /* CVT.S.PU */
19852 { reserved_block
, 0 , 0 , 32,
19853 0xfc003fff, 0xa0002a3b, 0 , 0,
19854 CP1_
}, /* POOL32Fxf_0~*(42) */
19855 { pool
, TRUNC_W_fmt
, 2 , 32,
19856 0xfc003fff, 0xa0002b3b, 0 , 0,
19857 CP1_
}, /* TRUNC.W.fmt */
19858 { instruction
, 0 , 0 , 32,
19859 0xfc003fff, 0xa0002c3b, &NMD::DMTC1
, 0,
19860 CP1_
| MIPS64_
}, /* DMTC1 */
19861 { reserved_block
, 0 , 0 , 32,
19862 0xfc003fff, 0xa0002d3b, 0 , 0,
19863 CP1_
}, /* POOL32Fxf_0~*(45) */
19864 { reserved_block
, 0 , 0 , 32,
19865 0xfc003fff, 0xa0002e3b, 0 , 0,
19866 CP1_
}, /* POOL32Fxf_0~*(46) */
19867 { reserved_block
, 0 , 0 , 32,
19868 0xfc003fff, 0xa0002f3b, 0 , 0,
19869 CP1_
}, /* POOL32Fxf_0~*(47) */
19870 { instruction
, 0 , 0 , 32,
19871 0xfc003fff, 0xa000303b, &NMD::MFHC1
, 0,
19872 CP1_
}, /* MFHC1 */
19873 { reserved_block
, 0 , 0 , 32,
19874 0xfc003fff, 0xa000313b, 0 , 0,
19875 CP1_
}, /* POOL32Fxf_0~*(49) */
19876 { reserved_block
, 0 , 0 , 32,
19877 0xfc003fff, 0xa000323b, 0 , 0,
19878 CP1_
}, /* POOL32Fxf_0~*(50) */
19879 { pool
, ROUND_L_fmt
, 2 , 32,
19880 0xfc003fff, 0xa000333b, 0 , 0,
19881 CP1_
}, /* ROUND.L.fmt */
19882 { reserved_block
, 0 , 0 , 32,
19883 0xfc003fff, 0xa000343b, 0 , 0,
19884 CP1_
}, /* POOL32Fxf_0~*(52) */
19885 { reserved_block
, 0 , 0 , 32,
19886 0xfc003fff, 0xa000353b, 0 , 0,
19887 CP1_
}, /* POOL32Fxf_0~*(53) */
19888 { reserved_block
, 0 , 0 , 32,
19889 0xfc003fff, 0xa000363b, 0 , 0,
19890 CP1_
}, /* POOL32Fxf_0~*(54) */
19891 { reserved_block
, 0 , 0 , 32,
19892 0xfc003fff, 0xa000373b, 0 , 0,
19893 CP1_
}, /* POOL32Fxf_0~*(55) */
19894 { instruction
, 0 , 0 , 32,
19895 0xfc003fff, 0xa000383b, &NMD::MTHC1
, 0,
19896 CP1_
}, /* MTHC1 */
19897 { reserved_block
, 0 , 0 , 32,
19898 0xfc003fff, 0xa000393b, 0 , 0,
19899 CP1_
}, /* POOL32Fxf_0~*(57) */
19900 { reserved_block
, 0 , 0 , 32,
19901 0xfc003fff, 0xa0003a3b, 0 , 0,
19902 CP1_
}, /* POOL32Fxf_0~*(58) */
19903 { pool
, ROUND_W_fmt
, 2 , 32,
19904 0xfc003fff, 0xa0003b3b, 0 , 0,
19905 CP1_
}, /* ROUND.W.fmt */
19906 { reserved_block
, 0 , 0 , 32,
19907 0xfc003fff, 0xa0003c3b, 0 , 0,
19908 CP1_
}, /* POOL32Fxf_0~*(60) */
19909 { reserved_block
, 0 , 0 , 32,
19910 0xfc003fff, 0xa0003d3b, 0 , 0,
19911 CP1_
}, /* POOL32Fxf_0~*(61) */
19912 { reserved_block
, 0 , 0 , 32,
19913 0xfc003fff, 0xa0003e3b, 0 , 0,
19914 CP1_
}, /* POOL32Fxf_0~*(62) */
19915 { reserved_block
, 0 , 0 , 32,
19916 0xfc003fff, 0xa0003f3b, 0 , 0,
19917 CP1_
}, /* POOL32Fxf_0~*(63) */
19921 NMD::Pool
NMD::MOV_fmt
[4] = {
19922 { instruction
, 0 , 0 , 32,
19923 0xfc007fff, 0xa000007b, &NMD::MOV_S
, 0,
19924 CP1_
}, /* MOV.S */
19925 { instruction
, 0 , 0 , 32,
19926 0xfc007fff, 0xa000207b, &NMD::MOV_D
, 0,
19927 CP1_
}, /* MOV.D */
19928 { reserved_block
, 0 , 0 , 32,
19929 0xfc007fff, 0xa000407b, 0 , 0,
19930 CP1_
}, /* MOV.fmt~*(2) */
19931 { reserved_block
, 0 , 0 , 32,
19932 0xfc007fff, 0xa000607b, 0 , 0,
19933 CP1_
}, /* MOV.fmt~*(3) */
19937 NMD::Pool
NMD::ABS_fmt
[4] = {
19938 { instruction
, 0 , 0 , 32,
19939 0xfc007fff, 0xa000037b, &NMD::ABS_S
, 0,
19940 CP1_
}, /* ABS.S */
19941 { instruction
, 0 , 0 , 32,
19942 0xfc007fff, 0xa000237b, &NMD::ABS_D
, 0,
19943 CP1_
}, /* ABS.D */
19944 { reserved_block
, 0 , 0 , 32,
19945 0xfc007fff, 0xa000437b, 0 , 0,
19946 CP1_
}, /* ABS.fmt~*(2) */
19947 { reserved_block
, 0 , 0 , 32,
19948 0xfc007fff, 0xa000637b, 0 , 0,
19949 CP1_
}, /* ABS.fmt~*(3) */
19953 NMD::Pool
NMD::NEG_fmt
[4] = {
19954 { instruction
, 0 , 0 , 32,
19955 0xfc007fff, 0xa0000b7b, &NMD::NEG_S
, 0,
19956 CP1_
}, /* NEG.S */
19957 { instruction
, 0 , 0 , 32,
19958 0xfc007fff, 0xa0002b7b, &NMD::NEG_D
, 0,
19959 CP1_
}, /* NEG.D */
19960 { reserved_block
, 0 , 0 , 32,
19961 0xfc007fff, 0xa0004b7b, 0 , 0,
19962 CP1_
}, /* NEG.fmt~*(2) */
19963 { reserved_block
, 0 , 0 , 32,
19964 0xfc007fff, 0xa0006b7b, 0 , 0,
19965 CP1_
}, /* NEG.fmt~*(3) */
19969 NMD::Pool
NMD::CVT_D_fmt
[4] = {
19970 { instruction
, 0 , 0 , 32,
19971 0xfc007fff, 0xa000137b, &NMD::CVT_D_S
, 0,
19972 CP1_
}, /* CVT.D.S */
19973 { instruction
, 0 , 0 , 32,
19974 0xfc007fff, 0xa000337b, &NMD::CVT_D_W
, 0,
19975 CP1_
}, /* CVT.D.W */
19976 { instruction
, 0 , 0 , 32,
19977 0xfc007fff, 0xa000537b, &NMD::CVT_D_L
, 0,
19978 CP1_
}, /* CVT.D.L */
19979 { reserved_block
, 0 , 0 , 32,
19980 0xfc007fff, 0xa000737b, 0 , 0,
19981 CP1_
}, /* CVT.D.fmt~*(3) */
19985 NMD::Pool
NMD::CVT_S_fmt
[4] = {
19986 { instruction
, 0 , 0 , 32,
19987 0xfc007fff, 0xa0001b7b, &NMD::CVT_S_D
, 0,
19988 CP1_
}, /* CVT.S.D */
19989 { instruction
, 0 , 0 , 32,
19990 0xfc007fff, 0xa0003b7b, &NMD::CVT_S_W
, 0,
19991 CP1_
}, /* CVT.S.W */
19992 { instruction
, 0 , 0 , 32,
19993 0xfc007fff, 0xa0005b7b, &NMD::CVT_S_L
, 0,
19994 CP1_
}, /* CVT.S.L */
19995 { reserved_block
, 0 , 0 , 32,
19996 0xfc007fff, 0xa0007b7b, 0 , 0,
19997 CP1_
}, /* CVT.S.fmt~*(3) */
20001 NMD::Pool
NMD::POOL32Fxf_1
[32] = {
20002 { pool
, MOV_fmt
, 4 , 32,
20003 0xfc001fff, 0xa000007b, 0 , 0,
20004 CP1_
}, /* MOV.fmt */
20005 { reserved_block
, 0 , 0 , 32,
20006 0xfc001fff, 0xa000017b, 0 , 0,
20007 CP1_
}, /* POOL32Fxf_1~*(1) */
20008 { reserved_block
, 0 , 0 , 32,
20009 0xfc001fff, 0xa000027b, 0 , 0,
20010 CP1_
}, /* POOL32Fxf_1~*(2) */
20011 { pool
, ABS_fmt
, 4 , 32,
20012 0xfc001fff, 0xa000037b, 0 , 0,
20013 CP1_
}, /* ABS.fmt */
20014 { reserved_block
, 0 , 0 , 32,
20015 0xfc001fff, 0xa000047b, 0 , 0,
20016 CP1_
}, /* POOL32Fxf_1~*(4) */
20017 { reserved_block
, 0 , 0 , 32,
20018 0xfc001fff, 0xa000057b, 0 , 0,
20019 CP1_
}, /* POOL32Fxf_1~*(5) */
20020 { reserved_block
, 0 , 0 , 32,
20021 0xfc001fff, 0xa000067b, 0 , 0,
20022 CP1_
}, /* POOL32Fxf_1~*(6) */
20023 { reserved_block
, 0 , 0 , 32,
20024 0xfc001fff, 0xa000077b, 0 , 0,
20025 CP1_
}, /* POOL32Fxf_1~*(7) */
20026 { reserved_block
, 0 , 0 , 32,
20027 0xfc001fff, 0xa000087b, 0 , 0,
20028 CP1_
}, /* POOL32Fxf_1~*(8) */
20029 { reserved_block
, 0 , 0 , 32,
20030 0xfc001fff, 0xa000097b, 0 , 0,
20031 CP1_
}, /* POOL32Fxf_1~*(9) */
20032 { reserved_block
, 0 , 0 , 32,
20033 0xfc001fff, 0xa0000a7b, 0 , 0,
20034 CP1_
}, /* POOL32Fxf_1~*(10) */
20035 { pool
, NEG_fmt
, 4 , 32,
20036 0xfc001fff, 0xa0000b7b, 0 , 0,
20037 CP1_
}, /* NEG.fmt */
20038 { reserved_block
, 0 , 0 , 32,
20039 0xfc001fff, 0xa0000c7b, 0 , 0,
20040 CP1_
}, /* POOL32Fxf_1~*(12) */
20041 { reserved_block
, 0 , 0 , 32,
20042 0xfc001fff, 0xa0000d7b, 0 , 0,
20043 CP1_
}, /* POOL32Fxf_1~*(13) */
20044 { reserved_block
, 0 , 0 , 32,
20045 0xfc001fff, 0xa0000e7b, 0 , 0,
20046 CP1_
}, /* POOL32Fxf_1~*(14) */
20047 { reserved_block
, 0 , 0 , 32,
20048 0xfc001fff, 0xa0000f7b, 0 , 0,
20049 CP1_
}, /* POOL32Fxf_1~*(15) */
20050 { reserved_block
, 0 , 0 , 32,
20051 0xfc001fff, 0xa000107b, 0 , 0,
20052 CP1_
}, /* POOL32Fxf_1~*(16) */
20053 { reserved_block
, 0 , 0 , 32,
20054 0xfc001fff, 0xa000117b, 0 , 0,
20055 CP1_
}, /* POOL32Fxf_1~*(17) */
20056 { reserved_block
, 0 , 0 , 32,
20057 0xfc001fff, 0xa000127b, 0 , 0,
20058 CP1_
}, /* POOL32Fxf_1~*(18) */
20059 { pool
, CVT_D_fmt
, 4 , 32,
20060 0xfc001fff, 0xa000137b, 0 , 0,
20061 CP1_
}, /* CVT.D.fmt */
20062 { reserved_block
, 0 , 0 , 32,
20063 0xfc001fff, 0xa000147b, 0 , 0,
20064 CP1_
}, /* POOL32Fxf_1~*(20) */
20065 { reserved_block
, 0 , 0 , 32,
20066 0xfc001fff, 0xa000157b, 0 , 0,
20067 CP1_
}, /* POOL32Fxf_1~*(21) */
20068 { reserved_block
, 0 , 0 , 32,
20069 0xfc001fff, 0xa000167b, 0 , 0,
20070 CP1_
}, /* POOL32Fxf_1~*(22) */
20071 { reserved_block
, 0 , 0 , 32,
20072 0xfc001fff, 0xa000177b, 0 , 0,
20073 CP1_
}, /* POOL32Fxf_1~*(23) */
20074 { reserved_block
, 0 , 0 , 32,
20075 0xfc001fff, 0xa000187b, 0 , 0,
20076 CP1_
}, /* POOL32Fxf_1~*(24) */
20077 { reserved_block
, 0 , 0 , 32,
20078 0xfc001fff, 0xa000197b, 0 , 0,
20079 CP1_
}, /* POOL32Fxf_1~*(25) */
20080 { reserved_block
, 0 , 0 , 32,
20081 0xfc001fff, 0xa0001a7b, 0 , 0,
20082 CP1_
}, /* POOL32Fxf_1~*(26) */
20083 { pool
, CVT_S_fmt
, 4 , 32,
20084 0xfc001fff, 0xa0001b7b, 0 , 0,
20085 CP1_
}, /* CVT.S.fmt */
20086 { reserved_block
, 0 , 0 , 32,
20087 0xfc001fff, 0xa0001c7b, 0 , 0,
20088 CP1_
}, /* POOL32Fxf_1~*(28) */
20089 { reserved_block
, 0 , 0 , 32,
20090 0xfc001fff, 0xa0001d7b, 0 , 0,
20091 CP1_
}, /* POOL32Fxf_1~*(29) */
20092 { reserved_block
, 0 , 0 , 32,
20093 0xfc001fff, 0xa0001e7b, 0 , 0,
20094 CP1_
}, /* POOL32Fxf_1~*(30) */
20095 { reserved_block
, 0 , 0 , 32,
20096 0xfc001fff, 0xa0001f7b, 0 , 0,
20097 CP1_
}, /* POOL32Fxf_1~*(31) */
20101 NMD::Pool
NMD::POOL32Fxf
[4] = {
20102 { pool
, POOL32Fxf_0
, 64 , 32,
20103 0xfc0000ff, 0xa000003b, 0 , 0,
20104 CP1_
}, /* POOL32Fxf_0 */
20105 { pool
, POOL32Fxf_1
, 32 , 32,
20106 0xfc0000ff, 0xa000007b, 0 , 0,
20107 CP1_
}, /* POOL32Fxf_1 */
20108 { reserved_block
, 0 , 0 , 32,
20109 0xfc0000ff, 0xa00000bb, 0 , 0,
20110 CP1_
}, /* POOL32Fxf~*(2) */
20111 { reserved_block
, 0 , 0 , 32,
20112 0xfc0000ff, 0xa00000fb, 0 , 0,
20113 CP1_
}, /* POOL32Fxf~*(3) */
20117 NMD::Pool
NMD::POOL32F_3
[8] = {
20118 { pool
, MIN_fmt
, 2 , 32,
20119 0xfc00003f, 0xa0000003, 0 , 0,
20120 CP1_
}, /* MIN.fmt */
20121 { pool
, MAX_fmt
, 2 , 32,
20122 0xfc00003f, 0xa000000b, 0 , 0,
20123 CP1_
}, /* MAX.fmt */
20124 { reserved_block
, 0 , 0 , 32,
20125 0xfc00003f, 0xa0000013, 0 , 0,
20126 CP1_
}, /* POOL32F_3~*(2) */
20127 { reserved_block
, 0 , 0 , 32,
20128 0xfc00003f, 0xa000001b, 0 , 0,
20129 CP1_
}, /* POOL32F_3~*(3) */
20130 { pool
, MINA_fmt
, 2 , 32,
20131 0xfc00003f, 0xa0000023, 0 , 0,
20132 CP1_
}, /* MINA.fmt */
20133 { pool
, MAXA_fmt
, 2 , 32,
20134 0xfc00003f, 0xa000002b, 0 , 0,
20135 CP1_
}, /* MAXA.fmt */
20136 { reserved_block
, 0 , 0 , 32,
20137 0xfc00003f, 0xa0000033, 0 , 0,
20138 CP1_
}, /* POOL32F_3~*(6) */
20139 { pool
, POOL32Fxf
, 4 , 32,
20140 0xfc00003f, 0xa000003b, 0 , 0,
20141 CP1_
}, /* POOL32Fxf */
20145 NMD::Pool
NMD::CMP_condn_S
[32] = {
20146 { instruction
, 0 , 0 , 32,
20147 0xfc0007ff, 0xa0000005, &NMD::CMP_AF_S
, 0,
20148 CP1_
}, /* CMP.AF.S */
20149 { instruction
, 0 , 0 , 32,
20150 0xfc0007ff, 0xa0000045, &NMD::CMP_UN_S
, 0,
20151 CP1_
}, /* CMP.UN.S */
20152 { instruction
, 0 , 0 , 32,
20153 0xfc0007ff, 0xa0000085, &NMD::CMP_EQ_S
, 0,
20154 CP1_
}, /* CMP.EQ.S */
20155 { instruction
, 0 , 0 , 32,
20156 0xfc0007ff, 0xa00000c5, &NMD::CMP_UEQ_S
, 0,
20157 CP1_
}, /* CMP.UEQ.S */
20158 { instruction
, 0 , 0 , 32,
20159 0xfc0007ff, 0xa0000105, &NMD::CMP_LT_S
, 0,
20160 CP1_
}, /* CMP.LT.S */
20161 { instruction
, 0 , 0 , 32,
20162 0xfc0007ff, 0xa0000145, &NMD::CMP_ULT_S
, 0,
20163 CP1_
}, /* CMP.ULT.S */
20164 { instruction
, 0 , 0 , 32,
20165 0xfc0007ff, 0xa0000185, &NMD::CMP_LE_S
, 0,
20166 CP1_
}, /* CMP.LE.S */
20167 { instruction
, 0 , 0 , 32,
20168 0xfc0007ff, 0xa00001c5, &NMD::CMP_ULE_S
, 0,
20169 CP1_
}, /* CMP.ULE.S */
20170 { instruction
, 0 , 0 , 32,
20171 0xfc0007ff, 0xa0000205, &NMD::CMP_SAF_S
, 0,
20172 CP1_
}, /* CMP.SAF.S */
20173 { instruction
, 0 , 0 , 32,
20174 0xfc0007ff, 0xa0000245, &NMD::CMP_SUN_S
, 0,
20175 CP1_
}, /* CMP.SUN.S */
20176 { instruction
, 0 , 0 , 32,
20177 0xfc0007ff, 0xa0000285, &NMD::CMP_SEQ_S
, 0,
20178 CP1_
}, /* CMP.SEQ.S */
20179 { instruction
, 0 , 0 , 32,
20180 0xfc0007ff, 0xa00002c5, &NMD::CMP_SUEQ_S
, 0,
20181 CP1_
}, /* CMP.SUEQ.S */
20182 { instruction
, 0 , 0 , 32,
20183 0xfc0007ff, 0xa0000305, &NMD::CMP_SLT_S
, 0,
20184 CP1_
}, /* CMP.SLT.S */
20185 { instruction
, 0 , 0 , 32,
20186 0xfc0007ff, 0xa0000345, &NMD::CMP_SULT_S
, 0,
20187 CP1_
}, /* CMP.SULT.S */
20188 { instruction
, 0 , 0 , 32,
20189 0xfc0007ff, 0xa0000385, &NMD::CMP_SLE_S
, 0,
20190 CP1_
}, /* CMP.SLE.S */
20191 { instruction
, 0 , 0 , 32,
20192 0xfc0007ff, 0xa00003c5, &NMD::CMP_SULE_S
, 0,
20193 CP1_
}, /* CMP.SULE.S */
20194 { reserved_block
, 0 , 0 , 32,
20195 0xfc0007ff, 0xa0000405, 0 , 0,
20196 CP1_
}, /* CMP.condn.S~*(16) */
20197 { instruction
, 0 , 0 , 32,
20198 0xfc0007ff, 0xa0000445, &NMD::CMP_OR_S
, 0,
20199 CP1_
}, /* CMP.OR.S */
20200 { instruction
, 0 , 0 , 32,
20201 0xfc0007ff, 0xa0000485, &NMD::CMP_UNE_S
, 0,
20202 CP1_
}, /* CMP.UNE.S */
20203 { instruction
, 0 , 0 , 32,
20204 0xfc0007ff, 0xa00004c5, &NMD::CMP_NE_S
, 0,
20205 CP1_
}, /* CMP.NE.S */
20206 { reserved_block
, 0 , 0 , 32,
20207 0xfc0007ff, 0xa0000505, 0 , 0,
20208 CP1_
}, /* CMP.condn.S~*(20) */
20209 { reserved_block
, 0 , 0 , 32,
20210 0xfc0007ff, 0xa0000545, 0 , 0,
20211 CP1_
}, /* CMP.condn.S~*(21) */
20212 { reserved_block
, 0 , 0 , 32,
20213 0xfc0007ff, 0xa0000585, 0 , 0,
20214 CP1_
}, /* CMP.condn.S~*(22) */
20215 { reserved_block
, 0 , 0 , 32,
20216 0xfc0007ff, 0xa00005c5, 0 , 0,
20217 CP1_
}, /* CMP.condn.S~*(23) */
20218 { reserved_block
, 0 , 0 , 32,
20219 0xfc0007ff, 0xa0000605, 0 , 0,
20220 CP1_
}, /* CMP.condn.S~*(24) */
20221 { instruction
, 0 , 0 , 32,
20222 0xfc0007ff, 0xa0000645, &NMD::CMP_SOR_S
, 0,
20223 CP1_
}, /* CMP.SOR.S */
20224 { instruction
, 0 , 0 , 32,
20225 0xfc0007ff, 0xa0000685, &NMD::CMP_SUNE_S
, 0,
20226 CP1_
}, /* CMP.SUNE.S */
20227 { instruction
, 0 , 0 , 32,
20228 0xfc0007ff, 0xa00006c5, &NMD::CMP_SNE_S
, 0,
20229 CP1_
}, /* CMP.SNE.S */
20230 { reserved_block
, 0 , 0 , 32,
20231 0xfc0007ff, 0xa0000705, 0 , 0,
20232 CP1_
}, /* CMP.condn.S~*(28) */
20233 { reserved_block
, 0 , 0 , 32,
20234 0xfc0007ff, 0xa0000745, 0 , 0,
20235 CP1_
}, /* CMP.condn.S~*(29) */
20236 { reserved_block
, 0 , 0 , 32,
20237 0xfc0007ff, 0xa0000785, 0 , 0,
20238 CP1_
}, /* CMP.condn.S~*(30) */
20239 { reserved_block
, 0 , 0 , 32,
20240 0xfc0007ff, 0xa00007c5, 0 , 0,
20241 CP1_
}, /* CMP.condn.S~*(31) */
20245 NMD::Pool
NMD::CMP_condn_D
[32] = {
20246 { instruction
, 0 , 0 , 32,
20247 0xfc0007ff, 0xa0000015, &NMD::CMP_AF_D
, 0,
20248 CP1_
}, /* CMP.AF.D */
20249 { instruction
, 0 , 0 , 32,
20250 0xfc0007ff, 0xa0000055, &NMD::CMP_UN_D
, 0,
20251 CP1_
}, /* CMP.UN.D */
20252 { instruction
, 0 , 0 , 32,
20253 0xfc0007ff, 0xa0000095, &NMD::CMP_EQ_D
, 0,
20254 CP1_
}, /* CMP.EQ.D */
20255 { instruction
, 0 , 0 , 32,
20256 0xfc0007ff, 0xa00000d5, &NMD::CMP_UEQ_D
, 0,
20257 CP1_
}, /* CMP.UEQ.D */
20258 { instruction
, 0 , 0 , 32,
20259 0xfc0007ff, 0xa0000115, &NMD::CMP_LT_D
, 0,
20260 CP1_
}, /* CMP.LT.D */
20261 { instruction
, 0 , 0 , 32,
20262 0xfc0007ff, 0xa0000155, &NMD::CMP_ULT_D
, 0,
20263 CP1_
}, /* CMP.ULT.D */
20264 { instruction
, 0 , 0 , 32,
20265 0xfc0007ff, 0xa0000195, &NMD::CMP_LE_D
, 0,
20266 CP1_
}, /* CMP.LE.D */
20267 { instruction
, 0 , 0 , 32,
20268 0xfc0007ff, 0xa00001d5, &NMD::CMP_ULE_D
, 0,
20269 CP1_
}, /* CMP.ULE.D */
20270 { instruction
, 0 , 0 , 32,
20271 0xfc0007ff, 0xa0000215, &NMD::CMP_SAF_D
, 0,
20272 CP1_
}, /* CMP.SAF.D */
20273 { instruction
, 0 , 0 , 32,
20274 0xfc0007ff, 0xa0000255, &NMD::CMP_SUN_D
, 0,
20275 CP1_
}, /* CMP.SUN.D */
20276 { instruction
, 0 , 0 , 32,
20277 0xfc0007ff, 0xa0000295, &NMD::CMP_SEQ_D
, 0,
20278 CP1_
}, /* CMP.SEQ.D */
20279 { instruction
, 0 , 0 , 32,
20280 0xfc0007ff, 0xa00002d5, &NMD::CMP_SUEQ_D
, 0,
20281 CP1_
}, /* CMP.SUEQ.D */
20282 { instruction
, 0 , 0 , 32,
20283 0xfc0007ff, 0xa0000315, &NMD::CMP_SLT_D
, 0,
20284 CP1_
}, /* CMP.SLT.D */
20285 { instruction
, 0 , 0 , 32,
20286 0xfc0007ff, 0xa0000355, &NMD::CMP_SULT_D
, 0,
20287 CP1_
}, /* CMP.SULT.D */
20288 { instruction
, 0 , 0 , 32,
20289 0xfc0007ff, 0xa0000395, &NMD::CMP_SLE_D
, 0,
20290 CP1_
}, /* CMP.SLE.D */
20291 { instruction
, 0 , 0 , 32,
20292 0xfc0007ff, 0xa00003d5, &NMD::CMP_SULE_D
, 0,
20293 CP1_
}, /* CMP.SULE.D */
20294 { reserved_block
, 0 , 0 , 32,
20295 0xfc0007ff, 0xa0000415, 0 , 0,
20296 CP1_
}, /* CMP.condn.D~*(16) */
20297 { instruction
, 0 , 0 , 32,
20298 0xfc0007ff, 0xa0000455, &NMD::CMP_OR_D
, 0,
20299 CP1_
}, /* CMP.OR.D */
20300 { instruction
, 0 , 0 , 32,
20301 0xfc0007ff, 0xa0000495, &NMD::CMP_UNE_D
, 0,
20302 CP1_
}, /* CMP.UNE.D */
20303 { instruction
, 0 , 0 , 32,
20304 0xfc0007ff, 0xa00004d5, &NMD::CMP_NE_D
, 0,
20305 CP1_
}, /* CMP.NE.D */
20306 { reserved_block
, 0 , 0 , 32,
20307 0xfc0007ff, 0xa0000515, 0 , 0,
20308 CP1_
}, /* CMP.condn.D~*(20) */
20309 { reserved_block
, 0 , 0 , 32,
20310 0xfc0007ff, 0xa0000555, 0 , 0,
20311 CP1_
}, /* CMP.condn.D~*(21) */
20312 { reserved_block
, 0 , 0 , 32,
20313 0xfc0007ff, 0xa0000595, 0 , 0,
20314 CP1_
}, /* CMP.condn.D~*(22) */
20315 { reserved_block
, 0 , 0 , 32,
20316 0xfc0007ff, 0xa00005d5, 0 , 0,
20317 CP1_
}, /* CMP.condn.D~*(23) */
20318 { reserved_block
, 0 , 0 , 32,
20319 0xfc0007ff, 0xa0000615, 0 , 0,
20320 CP1_
}, /* CMP.condn.D~*(24) */
20321 { instruction
, 0 , 0 , 32,
20322 0xfc0007ff, 0xa0000655, &NMD::CMP_SOR_D
, 0,
20323 CP1_
}, /* CMP.SOR.D */
20324 { instruction
, 0 , 0 , 32,
20325 0xfc0007ff, 0xa0000695, &NMD::CMP_SUNE_D
, 0,
20326 CP1_
}, /* CMP.SUNE.D */
20327 { instruction
, 0 , 0 , 32,
20328 0xfc0007ff, 0xa00006d5, &NMD::CMP_SNE_D
, 0,
20329 CP1_
}, /* CMP.SNE.D */
20330 { reserved_block
, 0 , 0 , 32,
20331 0xfc0007ff, 0xa0000715, 0 , 0,
20332 CP1_
}, /* CMP.condn.D~*(28) */
20333 { reserved_block
, 0 , 0 , 32,
20334 0xfc0007ff, 0xa0000755, 0 , 0,
20335 CP1_
}, /* CMP.condn.D~*(29) */
20336 { reserved_block
, 0 , 0 , 32,
20337 0xfc0007ff, 0xa0000795, 0 , 0,
20338 CP1_
}, /* CMP.condn.D~*(30) */
20339 { reserved_block
, 0 , 0 , 32,
20340 0xfc0007ff, 0xa00007d5, 0 , 0,
20341 CP1_
}, /* CMP.condn.D~*(31) */
20345 NMD::Pool
NMD::POOL32F_5
[8] = {
20346 { pool
, CMP_condn_S
, 32 , 32,
20347 0xfc00003f, 0xa0000005, 0 , 0,
20348 CP1_
}, /* CMP.condn.S */
20349 { reserved_block
, 0 , 0 , 32,
20350 0xfc00003f, 0xa000000d, 0 , 0,
20351 CP1_
}, /* POOL32F_5~*(1) */
20352 { pool
, CMP_condn_D
, 32 , 32,
20353 0xfc00003f, 0xa0000015, 0 , 0,
20354 CP1_
}, /* CMP.condn.D */
20355 { reserved_block
, 0 , 0 , 32,
20356 0xfc00003f, 0xa000001d, 0 , 0,
20357 CP1_
}, /* POOL32F_5~*(3) */
20358 { reserved_block
, 0 , 0 , 32,
20359 0xfc00003f, 0xa0000025, 0 , 0,
20360 CP1_
}, /* POOL32F_5~*(4) */
20361 { reserved_block
, 0 , 0 , 32,
20362 0xfc00003f, 0xa000002d, 0 , 0,
20363 CP1_
}, /* POOL32F_5~*(5) */
20364 { reserved_block
, 0 , 0 , 32,
20365 0xfc00003f, 0xa0000035, 0 , 0,
20366 CP1_
}, /* POOL32F_5~*(6) */
20367 { reserved_block
, 0 , 0 , 32,
20368 0xfc00003f, 0xa000003d, 0 , 0,
20369 CP1_
}, /* POOL32F_5~*(7) */
20373 NMD::Pool
NMD::POOL32F
[8] = {
20374 { pool
, POOL32F_0
, 64 , 32,
20375 0xfc000007, 0xa0000000, 0 , 0,
20376 CP1_
}, /* POOL32F_0 */
20377 { reserved_block
, 0 , 0 , 32,
20378 0xfc000007, 0xa0000001, 0 , 0,
20379 CP1_
}, /* POOL32F~*(1) */
20380 { reserved_block
, 0 , 0 , 32,
20381 0xfc000007, 0xa0000002, 0 , 0,
20382 CP1_
}, /* POOL32F~*(2) */
20383 { pool
, POOL32F_3
, 8 , 32,
20384 0xfc000007, 0xa0000003, 0 , 0,
20385 CP1_
}, /* POOL32F_3 */
20386 { reserved_block
, 0 , 0 , 32,
20387 0xfc000007, 0xa0000004, 0 , 0,
20388 CP1_
}, /* POOL32F~*(4) */
20389 { pool
, POOL32F_5
, 8 , 32,
20390 0xfc000007, 0xa0000005, 0 , 0,
20391 CP1_
}, /* POOL32F_5 */
20392 { reserved_block
, 0 , 0 , 32,
20393 0xfc000007, 0xa0000006, 0 , 0,
20394 CP1_
}, /* POOL32F~*(6) */
20395 { reserved_block
, 0 , 0 , 32,
20396 0xfc000007, 0xa0000007, 0 , 0,
20397 CP1_
}, /* POOL32F~*(7) */
20401 NMD::Pool
NMD::POOL32S_0
[64] = {
20402 { reserved_block
, 0 , 0 , 32,
20403 0xfc0001ff, 0xc0000000, 0 , 0,
20404 0x0 }, /* POOL32S_0~*(0) */
20405 { instruction
, 0 , 0 , 32,
20406 0xfc0001ff, 0xc0000008, &NMD::DLSA
, 0,
20407 MIPS64_
}, /* DLSA */
20408 { instruction
, 0 , 0 , 32,
20409 0xfc0001ff, 0xc0000010, &NMD::DSLLV
, 0,
20410 MIPS64_
}, /* DSLLV */
20411 { instruction
, 0 , 0 , 32,
20412 0xfc0001ff, 0xc0000018, &NMD::DMUL
, 0,
20413 MIPS64_
}, /* DMUL */
20414 { reserved_block
, 0 , 0 , 32,
20415 0xfc0001ff, 0xc0000020, 0 , 0,
20416 0x0 }, /* POOL32S_0~*(4) */
20417 { reserved_block
, 0 , 0 , 32,
20418 0xfc0001ff, 0xc0000028, 0 , 0,
20419 0x0 }, /* POOL32S_0~*(5) */
20420 { reserved_block
, 0 , 0 , 32,
20421 0xfc0001ff, 0xc0000030, 0 , 0,
20422 0x0 }, /* POOL32S_0~*(6) */
20423 { reserved_block
, 0 , 0 , 32,
20424 0xfc0001ff, 0xc0000038, 0 , 0,
20425 0x0 }, /* POOL32S_0~*(7) */
20426 { reserved_block
, 0 , 0 , 32,
20427 0xfc0001ff, 0xc0000040, 0 , 0,
20428 0x0 }, /* POOL32S_0~*(8) */
20429 { reserved_block
, 0 , 0 , 32,
20430 0xfc0001ff, 0xc0000048, 0 , 0,
20431 0x0 }, /* POOL32S_0~*(9) */
20432 { instruction
, 0 , 0 , 32,
20433 0xfc0001ff, 0xc0000050, &NMD::DSRLV
, 0,
20434 MIPS64_
}, /* DSRLV */
20435 { instruction
, 0 , 0 , 32,
20436 0xfc0001ff, 0xc0000058, &NMD::DMUH
, 0,
20437 MIPS64_
}, /* DMUH */
20438 { reserved_block
, 0 , 0 , 32,
20439 0xfc0001ff, 0xc0000060, 0 , 0,
20440 0x0 }, /* POOL32S_0~*(12) */
20441 { reserved_block
, 0 , 0 , 32,
20442 0xfc0001ff, 0xc0000068, 0 , 0,
20443 0x0 }, /* POOL32S_0~*(13) */
20444 { reserved_block
, 0 , 0 , 32,
20445 0xfc0001ff, 0xc0000070, 0 , 0,
20446 0x0 }, /* POOL32S_0~*(14) */
20447 { reserved_block
, 0 , 0 , 32,
20448 0xfc0001ff, 0xc0000078, 0 , 0,
20449 0x0 }, /* POOL32S_0~*(15) */
20450 { reserved_block
, 0 , 0 , 32,
20451 0xfc0001ff, 0xc0000080, 0 , 0,
20452 0x0 }, /* POOL32S_0~*(16) */
20453 { reserved_block
, 0 , 0 , 32,
20454 0xfc0001ff, 0xc0000088, 0 , 0,
20455 0x0 }, /* POOL32S_0~*(17) */
20456 { instruction
, 0 , 0 , 32,
20457 0xfc0001ff, 0xc0000090, &NMD::DSRAV
, 0,
20458 MIPS64_
}, /* DSRAV */
20459 { instruction
, 0 , 0 , 32,
20460 0xfc0001ff, 0xc0000098, &NMD::DMULU
, 0,
20461 MIPS64_
}, /* DMULU */
20462 { reserved_block
, 0 , 0 , 32,
20463 0xfc0001ff, 0xc00000a0, 0 , 0,
20464 0x0 }, /* POOL32S_0~*(20) */
20465 { reserved_block
, 0 , 0 , 32,
20466 0xfc0001ff, 0xc00000a8, 0 , 0,
20467 0x0 }, /* POOL32S_0~*(21) */
20468 { reserved_block
, 0 , 0 , 32,
20469 0xfc0001ff, 0xc00000b0, 0 , 0,
20470 0x0 }, /* POOL32S_0~*(22) */
20471 { reserved_block
, 0 , 0 , 32,
20472 0xfc0001ff, 0xc00000b8, 0 , 0,
20473 0x0 }, /* POOL32S_0~*(23) */
20474 { reserved_block
, 0 , 0 , 32,
20475 0xfc0001ff, 0xc00000c0, 0 , 0,
20476 0x0 }, /* POOL32S_0~*(24) */
20477 { reserved_block
, 0 , 0 , 32,
20478 0xfc0001ff, 0xc00000c8, 0 , 0,
20479 0x0 }, /* POOL32S_0~*(25) */
20480 { instruction
, 0 , 0 , 32,
20481 0xfc0001ff, 0xc00000d0, &NMD::DROTRV
, 0,
20482 MIPS64_
}, /* DROTRV */
20483 { instruction
, 0 , 0 , 32,
20484 0xfc0001ff, 0xc00000d8, &NMD::DMUHU
, 0,
20485 MIPS64_
}, /* DMUHU */
20486 { reserved_block
, 0 , 0 , 32,
20487 0xfc0001ff, 0xc00000e0, 0 , 0,
20488 0x0 }, /* POOL32S_0~*(28) */
20489 { reserved_block
, 0 , 0 , 32,
20490 0xfc0001ff, 0xc00000e8, 0 , 0,
20491 0x0 }, /* POOL32S_0~*(29) */
20492 { reserved_block
, 0 , 0 , 32,
20493 0xfc0001ff, 0xc00000f0, 0 , 0,
20494 0x0 }, /* POOL32S_0~*(30) */
20495 { reserved_block
, 0 , 0 , 32,
20496 0xfc0001ff, 0xc00000f8, 0 , 0,
20497 0x0 }, /* POOL32S_0~*(31) */
20498 { reserved_block
, 0 , 0 , 32,
20499 0xfc0001ff, 0xc0000100, 0 , 0,
20500 0x0 }, /* POOL32S_0~*(32) */
20501 { reserved_block
, 0 , 0 , 32,
20502 0xfc0001ff, 0xc0000108, 0 , 0,
20503 0x0 }, /* POOL32S_0~*(33) */
20504 { instruction
, 0 , 0 , 32,
20505 0xfc0001ff, 0xc0000110, &NMD::DADD
, 0,
20506 MIPS64_
}, /* DADD */
20507 { instruction
, 0 , 0 , 32,
20508 0xfc0001ff, 0xc0000118, &NMD::DDIV
, 0,
20509 MIPS64_
}, /* DDIV */
20510 { reserved_block
, 0 , 0 , 32,
20511 0xfc0001ff, 0xc0000120, 0 , 0,
20512 0x0 }, /* POOL32S_0~*(36) */
20513 { reserved_block
, 0 , 0 , 32,
20514 0xfc0001ff, 0xc0000128, 0 , 0,
20515 0x0 }, /* POOL32S_0~*(37) */
20516 { reserved_block
, 0 , 0 , 32,
20517 0xfc0001ff, 0xc0000130, 0 , 0,
20518 0x0 }, /* POOL32S_0~*(38) */
20519 { reserved_block
, 0 , 0 , 32,
20520 0xfc0001ff, 0xc0000138, 0 , 0,
20521 0x0 }, /* POOL32S_0~*(39) */
20522 { reserved_block
, 0 , 0 , 32,
20523 0xfc0001ff, 0xc0000140, 0 , 0,
20524 0x0 }, /* POOL32S_0~*(40) */
20525 { reserved_block
, 0 , 0 , 32,
20526 0xfc0001ff, 0xc0000148, 0 , 0,
20527 0x0 }, /* POOL32S_0~*(41) */
20528 { instruction
, 0 , 0 , 32,
20529 0xfc0001ff, 0xc0000150, &NMD::DADDU
, 0,
20530 MIPS64_
}, /* DADDU */
20531 { instruction
, 0 , 0 , 32,
20532 0xfc0001ff, 0xc0000158, &NMD::DMOD
, 0,
20533 MIPS64_
}, /* DMOD */
20534 { reserved_block
, 0 , 0 , 32,
20535 0xfc0001ff, 0xc0000160, 0 , 0,
20536 0x0 }, /* POOL32S_0~*(44) */
20537 { reserved_block
, 0 , 0 , 32,
20538 0xfc0001ff, 0xc0000168, 0 , 0,
20539 0x0 }, /* POOL32S_0~*(45) */
20540 { reserved_block
, 0 , 0 , 32,
20541 0xfc0001ff, 0xc0000170, 0 , 0,
20542 0x0 }, /* POOL32S_0~*(46) */
20543 { reserved_block
, 0 , 0 , 32,
20544 0xfc0001ff, 0xc0000178, 0 , 0,
20545 0x0 }, /* POOL32S_0~*(47) */
20546 { reserved_block
, 0 , 0 , 32,
20547 0xfc0001ff, 0xc0000180, 0 , 0,
20548 0x0 }, /* POOL32S_0~*(48) */
20549 { reserved_block
, 0 , 0 , 32,
20550 0xfc0001ff, 0xc0000188, 0 , 0,
20551 0x0 }, /* POOL32S_0~*(49) */
20552 { instruction
, 0 , 0 , 32,
20553 0xfc0001ff, 0xc0000190, &NMD::DSUB
, 0,
20554 MIPS64_
}, /* DSUB */
20555 { instruction
, 0 , 0 , 32,
20556 0xfc0001ff, 0xc0000198, &NMD::DDIVU
, 0,
20557 MIPS64_
}, /* DDIVU */
20558 { reserved_block
, 0 , 0 , 32,
20559 0xfc0001ff, 0xc00001a0, 0 , 0,
20560 0x0 }, /* POOL32S_0~*(52) */
20561 { reserved_block
, 0 , 0 , 32,
20562 0xfc0001ff, 0xc00001a8, 0 , 0,
20563 0x0 }, /* POOL32S_0~*(53) */
20564 { reserved_block
, 0 , 0 , 32,
20565 0xfc0001ff, 0xc00001b0, 0 , 0,
20566 0x0 }, /* POOL32S_0~*(54) */
20567 { reserved_block
, 0 , 0 , 32,
20568 0xfc0001ff, 0xc00001b8, 0 , 0,
20569 0x0 }, /* POOL32S_0~*(55) */
20570 { reserved_block
, 0 , 0 , 32,
20571 0xfc0001ff, 0xc00001c0, 0 , 0,
20572 0x0 }, /* POOL32S_0~*(56) */
20573 { reserved_block
, 0 , 0 , 32,
20574 0xfc0001ff, 0xc00001c8, 0 , 0,
20575 0x0 }, /* POOL32S_0~*(57) */
20576 { instruction
, 0 , 0 , 32,
20577 0xfc0001ff, 0xc00001d0, &NMD::DSUBU
, 0,
20578 MIPS64_
}, /* DSUBU */
20579 { instruction
, 0 , 0 , 32,
20580 0xfc0001ff, 0xc00001d8, &NMD::DMODU
, 0,
20581 MIPS64_
}, /* DMODU */
20582 { reserved_block
, 0 , 0 , 32,
20583 0xfc0001ff, 0xc00001e0, 0 , 0,
20584 0x0 }, /* POOL32S_0~*(60) */
20585 { reserved_block
, 0 , 0 , 32,
20586 0xfc0001ff, 0xc00001e8, 0 , 0,
20587 0x0 }, /* POOL32S_0~*(61) */
20588 { reserved_block
, 0 , 0 , 32,
20589 0xfc0001ff, 0xc00001f0, 0 , 0,
20590 0x0 }, /* POOL32S_0~*(62) */
20591 { reserved_block
, 0 , 0 , 32,
20592 0xfc0001ff, 0xc00001f8, 0 , 0,
20593 0x0 }, /* POOL32S_0~*(63) */
20597 NMD::Pool
NMD::POOL32Sxf_4
[128] = {
20598 { reserved_block
, 0 , 0 , 32,
20599 0xfc00ffff, 0xc000013c, 0 , 0,
20600 0x0 }, /* POOL32Sxf_4~*(0) */
20601 { reserved_block
, 0 , 0 , 32,
20602 0xfc00ffff, 0xc000033c, 0 , 0,
20603 0x0 }, /* POOL32Sxf_4~*(1) */
20604 { reserved_block
, 0 , 0 , 32,
20605 0xfc00ffff, 0xc000053c, 0 , 0,
20606 0x0 }, /* POOL32Sxf_4~*(2) */
20607 { reserved_block
, 0 , 0 , 32,
20608 0xfc00ffff, 0xc000073c, 0 , 0,
20609 0x0 }, /* POOL32Sxf_4~*(3) */
20610 { reserved_block
, 0 , 0 , 32,
20611 0xfc00ffff, 0xc000093c, 0 , 0,
20612 0x0 }, /* POOL32Sxf_4~*(4) */
20613 { reserved_block
, 0 , 0 , 32,
20614 0xfc00ffff, 0xc0000b3c, 0 , 0,
20615 0x0 }, /* POOL32Sxf_4~*(5) */
20616 { reserved_block
, 0 , 0 , 32,
20617 0xfc00ffff, 0xc0000d3c, 0 , 0,
20618 0x0 }, /* POOL32Sxf_4~*(6) */
20619 { reserved_block
, 0 , 0 , 32,
20620 0xfc00ffff, 0xc0000f3c, 0 , 0,
20621 0x0 }, /* POOL32Sxf_4~*(7) */
20622 { reserved_block
, 0 , 0 , 32,
20623 0xfc00ffff, 0xc000113c, 0 , 0,
20624 0x0 }, /* POOL32Sxf_4~*(8) */
20625 { reserved_block
, 0 , 0 , 32,
20626 0xfc00ffff, 0xc000133c, 0 , 0,
20627 0x0 }, /* POOL32Sxf_4~*(9) */
20628 { reserved_block
, 0 , 0 , 32,
20629 0xfc00ffff, 0xc000153c, 0 , 0,
20630 0x0 }, /* POOL32Sxf_4~*(10) */
20631 { reserved_block
, 0 , 0 , 32,
20632 0xfc00ffff, 0xc000173c, 0 , 0,
20633 0x0 }, /* POOL32Sxf_4~*(11) */
20634 { reserved_block
, 0 , 0 , 32,
20635 0xfc00ffff, 0xc000193c, 0 , 0,
20636 0x0 }, /* POOL32Sxf_4~*(12) */
20637 { reserved_block
, 0 , 0 , 32,
20638 0xfc00ffff, 0xc0001b3c, 0 , 0,
20639 0x0 }, /* POOL32Sxf_4~*(13) */
20640 { reserved_block
, 0 , 0 , 32,
20641 0xfc00ffff, 0xc0001d3c, 0 , 0,
20642 0x0 }, /* POOL32Sxf_4~*(14) */
20643 { reserved_block
, 0 , 0 , 32,
20644 0xfc00ffff, 0xc0001f3c, 0 , 0,
20645 0x0 }, /* POOL32Sxf_4~*(15) */
20646 { reserved_block
, 0 , 0 , 32,
20647 0xfc00ffff, 0xc000213c, 0 , 0,
20648 0x0 }, /* POOL32Sxf_4~*(16) */
20649 { reserved_block
, 0 , 0 , 32,
20650 0xfc00ffff, 0xc000233c, 0 , 0,
20651 0x0 }, /* POOL32Sxf_4~*(17) */
20652 { reserved_block
, 0 , 0 , 32,
20653 0xfc00ffff, 0xc000253c, 0 , 0,
20654 0x0 }, /* POOL32Sxf_4~*(18) */
20655 { reserved_block
, 0 , 0 , 32,
20656 0xfc00ffff, 0xc000273c, 0 , 0,
20657 0x0 }, /* POOL32Sxf_4~*(19) */
20658 { reserved_block
, 0 , 0 , 32,
20659 0xfc00ffff, 0xc000293c, 0 , 0,
20660 0x0 }, /* POOL32Sxf_4~*(20) */
20661 { reserved_block
, 0 , 0 , 32,
20662 0xfc00ffff, 0xc0002b3c, 0 , 0,
20663 0x0 }, /* POOL32Sxf_4~*(21) */
20664 { reserved_block
, 0 , 0 , 32,
20665 0xfc00ffff, 0xc0002d3c, 0 , 0,
20666 0x0 }, /* POOL32Sxf_4~*(22) */
20667 { reserved_block
, 0 , 0 , 32,
20668 0xfc00ffff, 0xc0002f3c, 0 , 0,
20669 0x0 }, /* POOL32Sxf_4~*(23) */
20670 { reserved_block
, 0 , 0 , 32,
20671 0xfc00ffff, 0xc000313c, 0 , 0,
20672 0x0 }, /* POOL32Sxf_4~*(24) */
20673 { reserved_block
, 0 , 0 , 32,
20674 0xfc00ffff, 0xc000333c, 0 , 0,
20675 0x0 }, /* POOL32Sxf_4~*(25) */
20676 { reserved_block
, 0 , 0 , 32,
20677 0xfc00ffff, 0xc000353c, 0 , 0,
20678 0x0 }, /* POOL32Sxf_4~*(26) */
20679 { reserved_block
, 0 , 0 , 32,
20680 0xfc00ffff, 0xc000373c, 0 , 0,
20681 0x0 }, /* POOL32Sxf_4~*(27) */
20682 { reserved_block
, 0 , 0 , 32,
20683 0xfc00ffff, 0xc000393c, 0 , 0,
20684 0x0 }, /* POOL32Sxf_4~*(28) */
20685 { reserved_block
, 0 , 0 , 32,
20686 0xfc00ffff, 0xc0003b3c, 0 , 0,
20687 0x0 }, /* POOL32Sxf_4~*(29) */
20688 { reserved_block
, 0 , 0 , 32,
20689 0xfc00ffff, 0xc0003d3c, 0 , 0,
20690 0x0 }, /* POOL32Sxf_4~*(30) */
20691 { reserved_block
, 0 , 0 , 32,
20692 0xfc00ffff, 0xc0003f3c, 0 , 0,
20693 0x0 }, /* POOL32Sxf_4~*(31) */
20694 { reserved_block
, 0 , 0 , 32,
20695 0xfc00ffff, 0xc000413c, 0 , 0,
20696 0x0 }, /* POOL32Sxf_4~*(32) */
20697 { reserved_block
, 0 , 0 , 32,
20698 0xfc00ffff, 0xc000433c, 0 , 0,
20699 0x0 }, /* POOL32Sxf_4~*(33) */
20700 { reserved_block
, 0 , 0 , 32,
20701 0xfc00ffff, 0xc000453c, 0 , 0,
20702 0x0 }, /* POOL32Sxf_4~*(34) */
20703 { reserved_block
, 0 , 0 , 32,
20704 0xfc00ffff, 0xc000473c, 0 , 0,
20705 0x0 }, /* POOL32Sxf_4~*(35) */
20706 { reserved_block
, 0 , 0 , 32,
20707 0xfc00ffff, 0xc000493c, 0 , 0,
20708 0x0 }, /* POOL32Sxf_4~*(36) */
20709 { instruction
, 0 , 0 , 32,
20710 0xfc00ffff, 0xc0004b3c, &NMD::DCLO
, 0,
20711 MIPS64_
}, /* DCLO */
20712 { reserved_block
, 0 , 0 , 32,
20713 0xfc00ffff, 0xc0004d3c, 0 , 0,
20714 0x0 }, /* POOL32Sxf_4~*(38) */
20715 { reserved_block
, 0 , 0 , 32,
20716 0xfc00ffff, 0xc0004f3c, 0 , 0,
20717 0x0 }, /* POOL32Sxf_4~*(39) */
20718 { reserved_block
, 0 , 0 , 32,
20719 0xfc00ffff, 0xc000513c, 0 , 0,
20720 0x0 }, /* POOL32Sxf_4~*(40) */
20721 { reserved_block
, 0 , 0 , 32,
20722 0xfc00ffff, 0xc000533c, 0 , 0,
20723 0x0 }, /* POOL32Sxf_4~*(41) */
20724 { reserved_block
, 0 , 0 , 32,
20725 0xfc00ffff, 0xc000553c, 0 , 0,
20726 0x0 }, /* POOL32Sxf_4~*(42) */
20727 { reserved_block
, 0 , 0 , 32,
20728 0xfc00ffff, 0xc000573c, 0 , 0,
20729 0x0 }, /* POOL32Sxf_4~*(43) */
20730 { reserved_block
, 0 , 0 , 32,
20731 0xfc00ffff, 0xc000593c, 0 , 0,
20732 0x0 }, /* POOL32Sxf_4~*(44) */
20733 { instruction
, 0 , 0 , 32,
20734 0xfc00ffff, 0xc0005b3c, &NMD::DCLZ
, 0,
20735 MIPS64_
}, /* DCLZ */
20736 { reserved_block
, 0 , 0 , 32,
20737 0xfc00ffff, 0xc0005d3c, 0 , 0,
20738 0x0 }, /* POOL32Sxf_4~*(46) */
20739 { reserved_block
, 0 , 0 , 32,
20740 0xfc00ffff, 0xc0005f3c, 0 , 0,
20741 0x0 }, /* POOL32Sxf_4~*(47) */
20742 { reserved_block
, 0 , 0 , 32,
20743 0xfc00ffff, 0xc000613c, 0 , 0,
20744 0x0 }, /* POOL32Sxf_4~*(48) */
20745 { reserved_block
, 0 , 0 , 32,
20746 0xfc00ffff, 0xc000633c, 0 , 0,
20747 0x0 }, /* POOL32Sxf_4~*(49) */
20748 { reserved_block
, 0 , 0 , 32,
20749 0xfc00ffff, 0xc000653c, 0 , 0,
20750 0x0 }, /* POOL32Sxf_4~*(50) */
20751 { reserved_block
, 0 , 0 , 32,
20752 0xfc00ffff, 0xc000673c, 0 , 0,
20753 0x0 }, /* POOL32Sxf_4~*(51) */
20754 { reserved_block
, 0 , 0 , 32,
20755 0xfc00ffff, 0xc000693c, 0 , 0,
20756 0x0 }, /* POOL32Sxf_4~*(52) */
20757 { reserved_block
, 0 , 0 , 32,
20758 0xfc00ffff, 0xc0006b3c, 0 , 0,
20759 0x0 }, /* POOL32Sxf_4~*(53) */
20760 { reserved_block
, 0 , 0 , 32,
20761 0xfc00ffff, 0xc0006d3c, 0 , 0,
20762 0x0 }, /* POOL32Sxf_4~*(54) */
20763 { reserved_block
, 0 , 0 , 32,
20764 0xfc00ffff, 0xc0006f3c, 0 , 0,
20765 0x0 }, /* POOL32Sxf_4~*(55) */
20766 { reserved_block
, 0 , 0 , 32,
20767 0xfc00ffff, 0xc000713c, 0 , 0,
20768 0x0 }, /* POOL32Sxf_4~*(56) */
20769 { reserved_block
, 0 , 0 , 32,
20770 0xfc00ffff, 0xc000733c, 0 , 0,
20771 0x0 }, /* POOL32Sxf_4~*(57) */
20772 { reserved_block
, 0 , 0 , 32,
20773 0xfc00ffff, 0xc000753c, 0 , 0,
20774 0x0 }, /* POOL32Sxf_4~*(58) */
20775 { reserved_block
, 0 , 0 , 32,
20776 0xfc00ffff, 0xc000773c, 0 , 0,
20777 0x0 }, /* POOL32Sxf_4~*(59) */
20778 { reserved_block
, 0 , 0 , 32,
20779 0xfc00ffff, 0xc000793c, 0 , 0,
20780 0x0 }, /* POOL32Sxf_4~*(60) */
20781 { reserved_block
, 0 , 0 , 32,
20782 0xfc00ffff, 0xc0007b3c, 0 , 0,
20783 0x0 }, /* POOL32Sxf_4~*(61) */
20784 { reserved_block
, 0 , 0 , 32,
20785 0xfc00ffff, 0xc0007d3c, 0 , 0,
20786 0x0 }, /* POOL32Sxf_4~*(62) */
20787 { reserved_block
, 0 , 0 , 32,
20788 0xfc00ffff, 0xc0007f3c, 0 , 0,
20789 0x0 }, /* POOL32Sxf_4~*(63) */
20790 { reserved_block
, 0 , 0 , 32,
20791 0xfc00ffff, 0xc000813c, 0 , 0,
20792 0x0 }, /* POOL32Sxf_4~*(64) */
20793 { reserved_block
, 0 , 0 , 32,
20794 0xfc00ffff, 0xc000833c, 0 , 0,
20795 0x0 }, /* POOL32Sxf_4~*(65) */
20796 { reserved_block
, 0 , 0 , 32,
20797 0xfc00ffff, 0xc000853c, 0 , 0,
20798 0x0 }, /* POOL32Sxf_4~*(66) */
20799 { reserved_block
, 0 , 0 , 32,
20800 0xfc00ffff, 0xc000873c, 0 , 0,
20801 0x0 }, /* POOL32Sxf_4~*(67) */
20802 { reserved_block
, 0 , 0 , 32,
20803 0xfc00ffff, 0xc000893c, 0 , 0,
20804 0x0 }, /* POOL32Sxf_4~*(68) */
20805 { reserved_block
, 0 , 0 , 32,
20806 0xfc00ffff, 0xc0008b3c, 0 , 0,
20807 0x0 }, /* POOL32Sxf_4~*(69) */
20808 { reserved_block
, 0 , 0 , 32,
20809 0xfc00ffff, 0xc0008d3c, 0 , 0,
20810 0x0 }, /* POOL32Sxf_4~*(70) */
20811 { reserved_block
, 0 , 0 , 32,
20812 0xfc00ffff, 0xc0008f3c, 0 , 0,
20813 0x0 }, /* POOL32Sxf_4~*(71) */
20814 { reserved_block
, 0 , 0 , 32,
20815 0xfc00ffff, 0xc000913c, 0 , 0,
20816 0x0 }, /* POOL32Sxf_4~*(72) */
20817 { reserved_block
, 0 , 0 , 32,
20818 0xfc00ffff, 0xc000933c, 0 , 0,
20819 0x0 }, /* POOL32Sxf_4~*(73) */
20820 { reserved_block
, 0 , 0 , 32,
20821 0xfc00ffff, 0xc000953c, 0 , 0,
20822 0x0 }, /* POOL32Sxf_4~*(74) */
20823 { reserved_block
, 0 , 0 , 32,
20824 0xfc00ffff, 0xc000973c, 0 , 0,
20825 0x0 }, /* POOL32Sxf_4~*(75) */
20826 { reserved_block
, 0 , 0 , 32,
20827 0xfc00ffff, 0xc000993c, 0 , 0,
20828 0x0 }, /* POOL32Sxf_4~*(76) */
20829 { reserved_block
, 0 , 0 , 32,
20830 0xfc00ffff, 0xc0009b3c, 0 , 0,
20831 0x0 }, /* POOL32Sxf_4~*(77) */
20832 { reserved_block
, 0 , 0 , 32,
20833 0xfc00ffff, 0xc0009d3c, 0 , 0,
20834 0x0 }, /* POOL32Sxf_4~*(78) */
20835 { reserved_block
, 0 , 0 , 32,
20836 0xfc00ffff, 0xc0009f3c, 0 , 0,
20837 0x0 }, /* POOL32Sxf_4~*(79) */
20838 { reserved_block
, 0 , 0 , 32,
20839 0xfc00ffff, 0xc000a13c, 0 , 0,
20840 0x0 }, /* POOL32Sxf_4~*(80) */
20841 { reserved_block
, 0 , 0 , 32,
20842 0xfc00ffff, 0xc000a33c, 0 , 0,
20843 0x0 }, /* POOL32Sxf_4~*(81) */
20844 { reserved_block
, 0 , 0 , 32,
20845 0xfc00ffff, 0xc000a53c, 0 , 0,
20846 0x0 }, /* POOL32Sxf_4~*(82) */
20847 { reserved_block
, 0 , 0 , 32,
20848 0xfc00ffff, 0xc000a73c, 0 , 0,
20849 0x0 }, /* POOL32Sxf_4~*(83) */
20850 { reserved_block
, 0 , 0 , 32,
20851 0xfc00ffff, 0xc000a93c, 0 , 0,
20852 0x0 }, /* POOL32Sxf_4~*(84) */
20853 { reserved_block
, 0 , 0 , 32,
20854 0xfc00ffff, 0xc000ab3c, 0 , 0,
20855 0x0 }, /* POOL32Sxf_4~*(85) */
20856 { reserved_block
, 0 , 0 , 32,
20857 0xfc00ffff, 0xc000ad3c, 0 , 0,
20858 0x0 }, /* POOL32Sxf_4~*(86) */
20859 { reserved_block
, 0 , 0 , 32,
20860 0xfc00ffff, 0xc000af3c, 0 , 0,
20861 0x0 }, /* POOL32Sxf_4~*(87) */
20862 { reserved_block
, 0 , 0 , 32,
20863 0xfc00ffff, 0xc000b13c, 0 , 0,
20864 0x0 }, /* POOL32Sxf_4~*(88) */
20865 { reserved_block
, 0 , 0 , 32,
20866 0xfc00ffff, 0xc000b33c, 0 , 0,
20867 0x0 }, /* POOL32Sxf_4~*(89) */
20868 { reserved_block
, 0 , 0 , 32,
20869 0xfc00ffff, 0xc000b53c, 0 , 0,
20870 0x0 }, /* POOL32Sxf_4~*(90) */
20871 { reserved_block
, 0 , 0 , 32,
20872 0xfc00ffff, 0xc000b73c, 0 , 0,
20873 0x0 }, /* POOL32Sxf_4~*(91) */
20874 { reserved_block
, 0 , 0 , 32,
20875 0xfc00ffff, 0xc000b93c, 0 , 0,
20876 0x0 }, /* POOL32Sxf_4~*(92) */
20877 { reserved_block
, 0 , 0 , 32,
20878 0xfc00ffff, 0xc000bb3c, 0 , 0,
20879 0x0 }, /* POOL32Sxf_4~*(93) */
20880 { reserved_block
, 0 , 0 , 32,
20881 0xfc00ffff, 0xc000bd3c, 0 , 0,
20882 0x0 }, /* POOL32Sxf_4~*(94) */
20883 { reserved_block
, 0 , 0 , 32,
20884 0xfc00ffff, 0xc000bf3c, 0 , 0,
20885 0x0 }, /* POOL32Sxf_4~*(95) */
20886 { reserved_block
, 0 , 0 , 32,
20887 0xfc00ffff, 0xc000c13c, 0 , 0,
20888 0x0 }, /* POOL32Sxf_4~*(96) */
20889 { reserved_block
, 0 , 0 , 32,
20890 0xfc00ffff, 0xc000c33c, 0 , 0,
20891 0x0 }, /* POOL32Sxf_4~*(97) */
20892 { reserved_block
, 0 , 0 , 32,
20893 0xfc00ffff, 0xc000c53c, 0 , 0,
20894 0x0 }, /* POOL32Sxf_4~*(98) */
20895 { reserved_block
, 0 , 0 , 32,
20896 0xfc00ffff, 0xc000c73c, 0 , 0,
20897 0x0 }, /* POOL32Sxf_4~*(99) */
20898 { reserved_block
, 0 , 0 , 32,
20899 0xfc00ffff, 0xc000c93c, 0 , 0,
20900 0x0 }, /* POOL32Sxf_4~*(100) */
20901 { reserved_block
, 0 , 0 , 32,
20902 0xfc00ffff, 0xc000cb3c, 0 , 0,
20903 0x0 }, /* POOL32Sxf_4~*(101) */
20904 { reserved_block
, 0 , 0 , 32,
20905 0xfc00ffff, 0xc000cd3c, 0 , 0,
20906 0x0 }, /* POOL32Sxf_4~*(102) */
20907 { reserved_block
, 0 , 0 , 32,
20908 0xfc00ffff, 0xc000cf3c, 0 , 0,
20909 0x0 }, /* POOL32Sxf_4~*(103) */
20910 { reserved_block
, 0 , 0 , 32,
20911 0xfc00ffff, 0xc000d13c, 0 , 0,
20912 0x0 }, /* POOL32Sxf_4~*(104) */
20913 { reserved_block
, 0 , 0 , 32,
20914 0xfc00ffff, 0xc000d33c, 0 , 0,
20915 0x0 }, /* POOL32Sxf_4~*(105) */
20916 { reserved_block
, 0 , 0 , 32,
20917 0xfc00ffff, 0xc000d53c, 0 , 0,
20918 0x0 }, /* POOL32Sxf_4~*(106) */
20919 { reserved_block
, 0 , 0 , 32,
20920 0xfc00ffff, 0xc000d73c, 0 , 0,
20921 0x0 }, /* POOL32Sxf_4~*(107) */
20922 { reserved_block
, 0 , 0 , 32,
20923 0xfc00ffff, 0xc000d93c, 0 , 0,
20924 0x0 }, /* POOL32Sxf_4~*(108) */
20925 { reserved_block
, 0 , 0 , 32,
20926 0xfc00ffff, 0xc000db3c, 0 , 0,
20927 0x0 }, /* POOL32Sxf_4~*(109) */
20928 { reserved_block
, 0 , 0 , 32,
20929 0xfc00ffff, 0xc000dd3c, 0 , 0,
20930 0x0 }, /* POOL32Sxf_4~*(110) */
20931 { reserved_block
, 0 , 0 , 32,
20932 0xfc00ffff, 0xc000df3c, 0 , 0,
20933 0x0 }, /* POOL32Sxf_4~*(111) */
20934 { reserved_block
, 0 , 0 , 32,
20935 0xfc00ffff, 0xc000e13c, 0 , 0,
20936 0x0 }, /* POOL32Sxf_4~*(112) */
20937 { reserved_block
, 0 , 0 , 32,
20938 0xfc00ffff, 0xc000e33c, 0 , 0,
20939 0x0 }, /* POOL32Sxf_4~*(113) */
20940 { reserved_block
, 0 , 0 , 32,
20941 0xfc00ffff, 0xc000e53c, 0 , 0,
20942 0x0 }, /* POOL32Sxf_4~*(114) */
20943 { reserved_block
, 0 , 0 , 32,
20944 0xfc00ffff, 0xc000e73c, 0 , 0,
20945 0x0 }, /* POOL32Sxf_4~*(115) */
20946 { reserved_block
, 0 , 0 , 32,
20947 0xfc00ffff, 0xc000e93c, 0 , 0,
20948 0x0 }, /* POOL32Sxf_4~*(116) */
20949 { reserved_block
, 0 , 0 , 32,
20950 0xfc00ffff, 0xc000eb3c, 0 , 0,
20951 0x0 }, /* POOL32Sxf_4~*(117) */
20952 { reserved_block
, 0 , 0 , 32,
20953 0xfc00ffff, 0xc000ed3c, 0 , 0,
20954 0x0 }, /* POOL32Sxf_4~*(118) */
20955 { reserved_block
, 0 , 0 , 32,
20956 0xfc00ffff, 0xc000ef3c, 0 , 0,
20957 0x0 }, /* POOL32Sxf_4~*(119) */
20958 { reserved_block
, 0 , 0 , 32,
20959 0xfc00ffff, 0xc000f13c, 0 , 0,
20960 0x0 }, /* POOL32Sxf_4~*(120) */
20961 { reserved_block
, 0 , 0 , 32,
20962 0xfc00ffff, 0xc000f33c, 0 , 0,
20963 0x0 }, /* POOL32Sxf_4~*(121) */
20964 { reserved_block
, 0 , 0 , 32,
20965 0xfc00ffff, 0xc000f53c, 0 , 0,
20966 0x0 }, /* POOL32Sxf_4~*(122) */
20967 { reserved_block
, 0 , 0 , 32,
20968 0xfc00ffff, 0xc000f73c, 0 , 0,
20969 0x0 }, /* POOL32Sxf_4~*(123) */
20970 { reserved_block
, 0 , 0 , 32,
20971 0xfc00ffff, 0xc000f93c, 0 , 0,
20972 0x0 }, /* POOL32Sxf_4~*(124) */
20973 { reserved_block
, 0 , 0 , 32,
20974 0xfc00ffff, 0xc000fb3c, 0 , 0,
20975 0x0 }, /* POOL32Sxf_4~*(125) */
20976 { reserved_block
, 0 , 0 , 32,
20977 0xfc00ffff, 0xc000fd3c, 0 , 0,
20978 0x0 }, /* POOL32Sxf_4~*(126) */
20979 { reserved_block
, 0 , 0 , 32,
20980 0xfc00ffff, 0xc000ff3c, 0 , 0,
20981 0x0 }, /* POOL32Sxf_4~*(127) */
20985 NMD::Pool
NMD::POOL32Sxf
[8] = {
20986 { reserved_block
, 0 , 0 , 32,
20987 0xfc0001ff, 0xc000003c, 0 , 0,
20988 0x0 }, /* POOL32Sxf~*(0) */
20989 { reserved_block
, 0 , 0 , 32,
20990 0xfc0001ff, 0xc000007c, 0 , 0,
20991 0x0 }, /* POOL32Sxf~*(1) */
20992 { reserved_block
, 0 , 0 , 32,
20993 0xfc0001ff, 0xc00000bc, 0 , 0,
20994 0x0 }, /* POOL32Sxf~*(2) */
20995 { reserved_block
, 0 , 0 , 32,
20996 0xfc0001ff, 0xc00000fc, 0 , 0,
20997 0x0 }, /* POOL32Sxf~*(3) */
20998 { pool
, POOL32Sxf_4
, 128 , 32,
20999 0xfc0001ff, 0xc000013c, 0 , 0,
21000 0x0 }, /* POOL32Sxf_4 */
21001 { reserved_block
, 0 , 0 , 32,
21002 0xfc0001ff, 0xc000017c, 0 , 0,
21003 0x0 }, /* POOL32Sxf~*(5) */
21004 { reserved_block
, 0 , 0 , 32,
21005 0xfc0001ff, 0xc00001bc, 0 , 0,
21006 0x0 }, /* POOL32Sxf~*(6) */
21007 { reserved_block
, 0 , 0 , 32,
21008 0xfc0001ff, 0xc00001fc, 0 , 0,
21009 0x0 }, /* POOL32Sxf~*(7) */
21013 NMD::Pool
NMD::POOL32S_4
[8] = {
21014 { instruction
, 0 , 0 , 32,
21015 0xfc00003f, 0xc0000004, &NMD::EXTD
, 0,
21016 MIPS64_
}, /* EXTD */
21017 { instruction
, 0 , 0 , 32,
21018 0xfc00003f, 0xc000000c, &NMD::EXTD32
, 0,
21019 MIPS64_
}, /* EXTD32 */
21020 { reserved_block
, 0 , 0 , 32,
21021 0xfc00003f, 0xc0000014, 0 , 0,
21022 0x0 }, /* POOL32S_4~*(2) */
21023 { reserved_block
, 0 , 0 , 32,
21024 0xfc00003f, 0xc000001c, 0 , 0,
21025 0x0 }, /* POOL32S_4~*(3) */
21026 { reserved_block
, 0 , 0 , 32,
21027 0xfc00003f, 0xc0000024, 0 , 0,
21028 0x0 }, /* POOL32S_4~*(4) */
21029 { reserved_block
, 0 , 0 , 32,
21030 0xfc00003f, 0xc000002c, 0 , 0,
21031 0x0 }, /* POOL32S_4~*(5) */
21032 { reserved_block
, 0 , 0 , 32,
21033 0xfc00003f, 0xc0000034, 0 , 0,
21034 0x0 }, /* POOL32S_4~*(6) */
21035 { pool
, POOL32Sxf
, 8 , 32,
21036 0xfc00003f, 0xc000003c, 0 , 0,
21037 0x0 }, /* POOL32Sxf */
21041 NMD::Pool
NMD::POOL32S
[8] = {
21042 { pool
, POOL32S_0
, 64 , 32,
21043 0xfc000007, 0xc0000000, 0 , 0,
21044 0x0 }, /* POOL32S_0 */
21045 { reserved_block
, 0 , 0 , 32,
21046 0xfc000007, 0xc0000001, 0 , 0,
21047 0x0 }, /* POOL32S~*(1) */
21048 { reserved_block
, 0 , 0 , 32,
21049 0xfc000007, 0xc0000002, 0 , 0,
21050 0x0 }, /* POOL32S~*(2) */
21051 { reserved_block
, 0 , 0 , 32,
21052 0xfc000007, 0xc0000003, 0 , 0,
21053 0x0 }, /* POOL32S~*(3) */
21054 { pool
, POOL32S_4
, 8 , 32,
21055 0xfc000007, 0xc0000004, 0 , 0,
21056 0x0 }, /* POOL32S_4 */
21057 { reserved_block
, 0 , 0 , 32,
21058 0xfc000007, 0xc0000005, 0 , 0,
21059 0x0 }, /* POOL32S~*(5) */
21060 { reserved_block
, 0 , 0 , 32,
21061 0xfc000007, 0xc0000006, 0 , 0,
21062 0x0 }, /* POOL32S~*(6) */
21063 { reserved_block
, 0 , 0 , 32,
21064 0xfc000007, 0xc0000007, 0 , 0,
21065 0x0 }, /* POOL32S~*(7) */
21069 NMD::Pool
NMD::P_LUI
[2] = {
21070 { instruction
, 0 , 0 , 32,
21071 0xfc000002, 0xe0000000, &NMD::LUI
, 0,
21073 { instruction
, 0 , 0 , 32,
21074 0xfc000002, 0xe0000002, &NMD::ALUIPC
, 0,
21075 0x0 }, /* ALUIPC */
21079 NMD::Pool
NMD::P_GP_LH
[2] = {
21080 { instruction
, 0 , 0 , 32,
21081 0xfc1c0001, 0x44100000, &NMD::LH_GP_
, 0,
21082 0x0 }, /* LH[GP] */
21083 { instruction
, 0 , 0 , 32,
21084 0xfc1c0001, 0x44100001, &NMD::LHU_GP_
, 0,
21085 0x0 }, /* LHU[GP] */
21089 NMD::Pool
NMD::P_GP_SH
[2] = {
21090 { instruction
, 0 , 0 , 32,
21091 0xfc1c0001, 0x44140000, &NMD::SH_GP_
, 0,
21092 0x0 }, /* SH[GP] */
21093 { reserved_block
, 0 , 0 , 32,
21094 0xfc1c0001, 0x44140001, 0 , 0,
21095 0x0 }, /* P.GP.SH~*(1) */
21099 NMD::Pool
NMD::P_GP_CP1
[4] = {
21100 { instruction
, 0 , 0 , 32,
21101 0xfc1c0003, 0x44180000, &NMD::LWC1_GP_
, 0,
21102 CP1_
}, /* LWC1[GP] */
21103 { instruction
, 0 , 0 , 32,
21104 0xfc1c0003, 0x44180001, &NMD::SWC1_GP_
, 0,
21105 CP1_
}, /* SWC1[GP] */
21106 { instruction
, 0 , 0 , 32,
21107 0xfc1c0003, 0x44180002, &NMD::LDC1_GP_
, 0,
21108 CP1_
}, /* LDC1[GP] */
21109 { instruction
, 0 , 0 , 32,
21110 0xfc1c0003, 0x44180003, &NMD::SDC1_GP_
, 0,
21111 CP1_
}, /* SDC1[GP] */
21115 NMD::Pool
NMD::P_GP_M64
[4] = {
21116 { instruction
, 0 , 0 , 32,
21117 0xfc1c0003, 0x441c0000, &NMD::LWU_GP_
, 0,
21118 MIPS64_
}, /* LWU[GP] */
21119 { reserved_block
, 0 , 0 , 32,
21120 0xfc1c0003, 0x441c0001, 0 , 0,
21121 0x0 }, /* P.GP.M64~*(1) */
21122 { reserved_block
, 0 , 0 , 32,
21123 0xfc1c0003, 0x441c0002, 0 , 0,
21124 0x0 }, /* P.GP.M64~*(2) */
21125 { reserved_block
, 0 , 0 , 32,
21126 0xfc1c0003, 0x441c0003, 0 , 0,
21127 0x0 }, /* P.GP.M64~*(3) */
21131 NMD::Pool
NMD::P_GP_BH
[8] = {
21132 { instruction
, 0 , 0 , 32,
21133 0xfc1c0000, 0x44000000, &NMD::LB_GP_
, 0,
21134 0x0 }, /* LB[GP] */
21135 { instruction
, 0 , 0 , 32,
21136 0xfc1c0000, 0x44040000, &NMD::SB_GP_
, 0,
21137 0x0 }, /* SB[GP] */
21138 { instruction
, 0 , 0 , 32,
21139 0xfc1c0000, 0x44080000, &NMD::LBU_GP_
, 0,
21140 0x0 }, /* LBU[GP] */
21141 { instruction
, 0 , 0 , 32,
21142 0xfc1c0000, 0x440c0000, &NMD::ADDIU_GP_B_
, 0,
21143 0x0 }, /* ADDIU[GP.B] */
21144 { pool
, P_GP_LH
, 2 , 32,
21145 0xfc1c0000, 0x44100000, 0 , 0,
21146 0x0 }, /* P.GP.LH */
21147 { pool
, P_GP_SH
, 2 , 32,
21148 0xfc1c0000, 0x44140000, 0 , 0,
21149 0x0 }, /* P.GP.SH */
21150 { pool
, P_GP_CP1
, 4 , 32,
21151 0xfc1c0000, 0x44180000, 0 , 0,
21152 0x0 }, /* P.GP.CP1 */
21153 { pool
, P_GP_M64
, 4 , 32,
21154 0xfc1c0000, 0x441c0000, 0 , 0,
21155 0x0 }, /* P.GP.M64 */
21159 NMD::Pool
NMD::P_LS_U12
[16] = {
21160 { instruction
, 0 , 0 , 32,
21161 0xfc00f000, 0x84000000, &NMD::LB_U12_
, 0,
21162 0x0 }, /* LB[U12] */
21163 { instruction
, 0 , 0 , 32,
21164 0xfc00f000, 0x84001000, &NMD::SB_U12_
, 0,
21165 0x0 }, /* SB[U12] */
21166 { instruction
, 0 , 0 , 32,
21167 0xfc00f000, 0x84002000, &NMD::LBU_U12_
, 0,
21168 0x0 }, /* LBU[U12] */
21169 { instruction
, 0 , 0 , 32,
21170 0xfc00f000, 0x84003000, &NMD::PREF_U12_
, 0,
21171 0x0 }, /* PREF[U12] */
21172 { instruction
, 0 , 0 , 32,
21173 0xfc00f000, 0x84004000, &NMD::LH_U12_
, 0,
21174 0x0 }, /* LH[U12] */
21175 { instruction
, 0 , 0 , 32,
21176 0xfc00f000, 0x84005000, &NMD::SH_U12_
, 0,
21177 0x0 }, /* SH[U12] */
21178 { instruction
, 0 , 0 , 32,
21179 0xfc00f000, 0x84006000, &NMD::LHU_U12_
, 0,
21180 0x0 }, /* LHU[U12] */
21181 { instruction
, 0 , 0 , 32,
21182 0xfc00f000, 0x84007000, &NMD::LWU_U12_
, 0,
21183 MIPS64_
}, /* LWU[U12] */
21184 { instruction
, 0 , 0 , 32,
21185 0xfc00f000, 0x84008000, &NMD::LW_U12_
, 0,
21186 0x0 }, /* LW[U12] */
21187 { instruction
, 0 , 0 , 32,
21188 0xfc00f000, 0x84009000, &NMD::SW_U12_
, 0,
21189 0x0 }, /* SW[U12] */
21190 { instruction
, 0 , 0 , 32,
21191 0xfc00f000, 0x8400a000, &NMD::LWC1_U12_
, 0,
21192 CP1_
}, /* LWC1[U12] */
21193 { instruction
, 0 , 0 , 32,
21194 0xfc00f000, 0x8400b000, &NMD::SWC1_U12_
, 0,
21195 CP1_
}, /* SWC1[U12] */
21196 { instruction
, 0 , 0 , 32,
21197 0xfc00f000, 0x8400c000, &NMD::LD_U12_
, 0,
21198 MIPS64_
}, /* LD[U12] */
21199 { instruction
, 0 , 0 , 32,
21200 0xfc00f000, 0x8400d000, &NMD::SD_U12_
, 0,
21201 MIPS64_
}, /* SD[U12] */
21202 { instruction
, 0 , 0 , 32,
21203 0xfc00f000, 0x8400e000, &NMD::LDC1_U12_
, 0,
21204 CP1_
}, /* LDC1[U12] */
21205 { instruction
, 0 , 0 , 32,
21206 0xfc00f000, 0x8400f000, &NMD::SDC1_U12_
, 0,
21207 CP1_
}, /* SDC1[U12] */
21211 NMD::Pool
NMD::P_PREF_S9_
[2] = {
21212 { instruction
, 0 , 0 , 32,
21213 0xffe07f00, 0xa7e01800, &NMD::SYNCI
, 0,
21215 { instruction
, 0 , 0 , 32,
21216 0xfc007f00, 0xa4001800, &NMD::PREF_S9_
, &NMD::PREF_S9__cond
,
21217 0x0 }, /* PREF[S9] */
21221 NMD::Pool
NMD::P_LS_S0
[16] = {
21222 { instruction
, 0 , 0 , 32,
21223 0xfc007f00, 0xa4000000, &NMD::LB_S9_
, 0,
21224 0x0 }, /* LB[S9] */
21225 { instruction
, 0 , 0 , 32,
21226 0xfc007f00, 0xa4000800, &NMD::SB_S9_
, 0,
21227 0x0 }, /* SB[S9] */
21228 { instruction
, 0 , 0 , 32,
21229 0xfc007f00, 0xa4001000, &NMD::LBU_S9_
, 0,
21230 0x0 }, /* LBU[S9] */
21231 { pool
, P_PREF_S9_
, 2 , 32,
21232 0xfc007f00, 0xa4001800, 0 , 0,
21233 0x0 }, /* P.PREF[S9] */
21234 { instruction
, 0 , 0 , 32,
21235 0xfc007f00, 0xa4002000, &NMD::LH_S9_
, 0,
21236 0x0 }, /* LH[S9] */
21237 { instruction
, 0 , 0 , 32,
21238 0xfc007f00, 0xa4002800, &NMD::SH_S9_
, 0,
21239 0x0 }, /* SH[S9] */
21240 { instruction
, 0 , 0 , 32,
21241 0xfc007f00, 0xa4003000, &NMD::LHU_S9_
, 0,
21242 0x0 }, /* LHU[S9] */
21243 { instruction
, 0 , 0 , 32,
21244 0xfc007f00, 0xa4003800, &NMD::LWU_S9_
, 0,
21245 MIPS64_
}, /* LWU[S9] */
21246 { instruction
, 0 , 0 , 32,
21247 0xfc007f00, 0xa4004000, &NMD::LW_S9_
, 0,
21248 0x0 }, /* LW[S9] */
21249 { instruction
, 0 , 0 , 32,
21250 0xfc007f00, 0xa4004800, &NMD::SW_S9_
, 0,
21251 0x0 }, /* SW[S9] */
21252 { instruction
, 0 , 0 , 32,
21253 0xfc007f00, 0xa4005000, &NMD::LWC1_S9_
, 0,
21254 CP1_
}, /* LWC1[S9] */
21255 { instruction
, 0 , 0 , 32,
21256 0xfc007f00, 0xa4005800, &NMD::SWC1_S9_
, 0,
21257 CP1_
}, /* SWC1[S9] */
21258 { instruction
, 0 , 0 , 32,
21259 0xfc007f00, 0xa4006000, &NMD::LD_S9_
, 0,
21260 MIPS64_
}, /* LD[S9] */
21261 { instruction
, 0 , 0 , 32,
21262 0xfc007f00, 0xa4006800, &NMD::SD_S9_
, 0,
21263 MIPS64_
}, /* SD[S9] */
21264 { instruction
, 0 , 0 , 32,
21265 0xfc007f00, 0xa4007000, &NMD::LDC1_S9_
, 0,
21266 CP1_
}, /* LDC1[S9] */
21267 { instruction
, 0 , 0 , 32,
21268 0xfc007f00, 0xa4007800, &NMD::SDC1_S9_
, 0,
21269 CP1_
}, /* SDC1[S9] */
21273 NMD::Pool
NMD::ASET_ACLR
[2] = {
21274 { instruction
, 0 , 0 , 32,
21275 0xfe007f00, 0xa4001100, &NMD::ASET
, 0,
21277 { instruction
, 0 , 0 , 32,
21278 0xfe007f00, 0xa6001100, &NMD::ACLR
, 0,
21283 NMD::Pool
NMD::P_LL
[4] = {
21284 { instruction
, 0 , 0 , 32,
21285 0xfc007f03, 0xa4005100, &NMD::LL
, 0,
21287 { instruction
, 0 , 0 , 32,
21288 0xfc007f03, 0xa4005101, &NMD::LLWP
, 0,
21290 { reserved_block
, 0 , 0 , 32,
21291 0xfc007f03, 0xa4005102, 0 , 0,
21292 0x0 }, /* P.LL~*(2) */
21293 { reserved_block
, 0 , 0 , 32,
21294 0xfc007f03, 0xa4005103, 0 , 0,
21295 0x0 }, /* P.LL~*(3) */
21299 NMD::Pool
NMD::P_SC
[4] = {
21300 { instruction
, 0 , 0 , 32,
21301 0xfc007f03, 0xa4005900, &NMD::SC
, 0,
21303 { instruction
, 0 , 0 , 32,
21304 0xfc007f03, 0xa4005901, &NMD::SCWP
, 0,
21306 { reserved_block
, 0 , 0 , 32,
21307 0xfc007f03, 0xa4005902, 0 , 0,
21308 0x0 }, /* P.SC~*(2) */
21309 { reserved_block
, 0 , 0 , 32,
21310 0xfc007f03, 0xa4005903, 0 , 0,
21311 0x0 }, /* P.SC~*(3) */
21315 NMD::Pool
NMD::P_LLD
[8] = {
21316 { instruction
, 0 , 0 , 32,
21317 0xfc007f07, 0xa4007100, &NMD::LLD
, 0,
21318 MIPS64_
}, /* LLD */
21319 { instruction
, 0 , 0 , 32,
21320 0xfc007f07, 0xa4007101, &NMD::LLDP
, 0,
21321 MIPS64_
}, /* LLDP */
21322 { reserved_block
, 0 , 0 , 32,
21323 0xfc007f07, 0xa4007102, 0 , 0,
21324 0x0 }, /* P.LLD~*(2) */
21325 { reserved_block
, 0 , 0 , 32,
21326 0xfc007f07, 0xa4007103, 0 , 0,
21327 0x0 }, /* P.LLD~*(3) */
21328 { reserved_block
, 0 , 0 , 32,
21329 0xfc007f07, 0xa4007104, 0 , 0,
21330 0x0 }, /* P.LLD~*(4) */
21331 { reserved_block
, 0 , 0 , 32,
21332 0xfc007f07, 0xa4007105, 0 , 0,
21333 0x0 }, /* P.LLD~*(5) */
21334 { reserved_block
, 0 , 0 , 32,
21335 0xfc007f07, 0xa4007106, 0 , 0,
21336 0x0 }, /* P.LLD~*(6) */
21337 { reserved_block
, 0 , 0 , 32,
21338 0xfc007f07, 0xa4007107, 0 , 0,
21339 0x0 }, /* P.LLD~*(7) */
21343 NMD::Pool
NMD::P_SCD
[8] = {
21344 { instruction
, 0 , 0 , 32,
21345 0xfc007f07, 0xa4007900, &NMD::SCD
, 0,
21346 MIPS64_
}, /* SCD */
21347 { instruction
, 0 , 0 , 32,
21348 0xfc007f07, 0xa4007901, &NMD::SCDP
, 0,
21349 MIPS64_
}, /* SCDP */
21350 { reserved_block
, 0 , 0 , 32,
21351 0xfc007f07, 0xa4007902, 0 , 0,
21352 0x0 }, /* P.SCD~*(2) */
21353 { reserved_block
, 0 , 0 , 32,
21354 0xfc007f07, 0xa4007903, 0 , 0,
21355 0x0 }, /* P.SCD~*(3) */
21356 { reserved_block
, 0 , 0 , 32,
21357 0xfc007f07, 0xa4007904, 0 , 0,
21358 0x0 }, /* P.SCD~*(4) */
21359 { reserved_block
, 0 , 0 , 32,
21360 0xfc007f07, 0xa4007905, 0 , 0,
21361 0x0 }, /* P.SCD~*(5) */
21362 { reserved_block
, 0 , 0 , 32,
21363 0xfc007f07, 0xa4007906, 0 , 0,
21364 0x0 }, /* P.SCD~*(6) */
21365 { reserved_block
, 0 , 0 , 32,
21366 0xfc007f07, 0xa4007907, 0 , 0,
21367 0x0 }, /* P.SCD~*(7) */
21371 NMD::Pool
NMD::P_LS_S1
[16] = {
21372 { reserved_block
, 0 , 0 , 32,
21373 0xfc007f00, 0xa4000100, 0 , 0,
21374 0x0 }, /* P.LS.S1~*(0) */
21375 { reserved_block
, 0 , 0 , 32,
21376 0xfc007f00, 0xa4000900, 0 , 0,
21377 0x0 }, /* P.LS.S1~*(1) */
21378 { pool
, ASET_ACLR
, 2 , 32,
21379 0xfc007f00, 0xa4001100, 0 , 0,
21380 0x0 }, /* ASET_ACLR */
21381 { reserved_block
, 0 , 0 , 32,
21382 0xfc007f00, 0xa4001900, 0 , 0,
21383 0x0 }, /* P.LS.S1~*(3) */
21384 { instruction
, 0 , 0 , 32,
21385 0xfc007f00, 0xa4002100, &NMD::UALH
, 0,
21386 XMMS_
}, /* UALH */
21387 { instruction
, 0 , 0 , 32,
21388 0xfc007f00, 0xa4002900, &NMD::UASH
, 0,
21389 XMMS_
}, /* UASH */
21390 { reserved_block
, 0 , 0 , 32,
21391 0xfc007f00, 0xa4003100, 0 , 0,
21392 0x0 }, /* P.LS.S1~*(6) */
21393 { instruction
, 0 , 0 , 32,
21394 0xfc007f00, 0xa4003900, &NMD::CACHE
, 0,
21395 CP0_
}, /* CACHE */
21396 { instruction
, 0 , 0 , 32,
21397 0xfc007f00, 0xa4004100, &NMD::LWC2
, 0,
21399 { instruction
, 0 , 0 , 32,
21400 0xfc007f00, 0xa4004900, &NMD::SWC2
, 0,
21402 { pool
, P_LL
, 4 , 32,
21403 0xfc007f00, 0xa4005100, 0 , 0,
21405 { pool
, P_SC
, 4 , 32,
21406 0xfc007f00, 0xa4005900, 0 , 0,
21408 { instruction
, 0 , 0 , 32,
21409 0xfc007f00, 0xa4006100, &NMD::LDC2
, 0,
21411 { instruction
, 0 , 0 , 32,
21412 0xfc007f00, 0xa4006900, &NMD::SDC2
, 0,
21414 { pool
, P_LLD
, 8 , 32,
21415 0xfc007f00, 0xa4007100, 0 , 0,
21417 { pool
, P_SCD
, 8 , 32,
21418 0xfc007f00, 0xa4007900, 0 , 0,
21423 NMD::Pool
NMD::P_PREFE
[2] = {
21424 { instruction
, 0 , 0 , 32,
21425 0xffe07f00, 0xa7e01a00, &NMD::SYNCIE
, 0,
21426 CP0_
| EVA_
}, /* SYNCIE */
21427 { instruction
, 0 , 0 , 32,
21428 0xfc007f00, 0xa4001a00, &NMD::PREFE
, &NMD::PREFE_cond
,
21429 CP0_
| EVA_
}, /* PREFE */
21433 NMD::Pool
NMD::P_LLE
[4] = {
21434 { instruction
, 0 , 0 , 32,
21435 0xfc007f03, 0xa4005200, &NMD::LLE
, 0,
21436 CP0_
| EVA_
}, /* LLE */
21437 { instruction
, 0 , 0 , 32,
21438 0xfc007f03, 0xa4005201, &NMD::LLWPE
, 0,
21439 CP0_
| EVA_
}, /* LLWPE */
21440 { reserved_block
, 0 , 0 , 32,
21441 0xfc007f03, 0xa4005202, 0 , 0,
21442 0x0 }, /* P.LLE~*(2) */
21443 { reserved_block
, 0 , 0 , 32,
21444 0xfc007f03, 0xa4005203, 0 , 0,
21445 0x0 }, /* P.LLE~*(3) */
21449 NMD::Pool
NMD::P_SCE
[4] = {
21450 { instruction
, 0 , 0 , 32,
21451 0xfc007f03, 0xa4005a00, &NMD::SCE
, 0,
21452 CP0_
| EVA_
}, /* SCE */
21453 { instruction
, 0 , 0 , 32,
21454 0xfc007f03, 0xa4005a01, &NMD::SCWPE
, 0,
21455 CP0_
| EVA_
}, /* SCWPE */
21456 { reserved_block
, 0 , 0 , 32,
21457 0xfc007f03, 0xa4005a02, 0 , 0,
21458 0x0 }, /* P.SCE~*(2) */
21459 { reserved_block
, 0 , 0 , 32,
21460 0xfc007f03, 0xa4005a03, 0 , 0,
21461 0x0 }, /* P.SCE~*(3) */
21465 NMD::Pool
NMD::P_LS_E0
[16] = {
21466 { instruction
, 0 , 0 , 32,
21467 0xfc007f00, 0xa4000200, &NMD::LBE
, 0,
21468 CP0_
| EVA_
}, /* LBE */
21469 { instruction
, 0 , 0 , 32,
21470 0xfc007f00, 0xa4000a00, &NMD::SBE
, 0,
21471 CP0_
| EVA_
}, /* SBE */
21472 { instruction
, 0 , 0 , 32,
21473 0xfc007f00, 0xa4001200, &NMD::LBUE
, 0,
21474 CP0_
| EVA_
}, /* LBUE */
21475 { pool
, P_PREFE
, 2 , 32,
21476 0xfc007f00, 0xa4001a00, 0 , 0,
21477 0x0 }, /* P.PREFE */
21478 { instruction
, 0 , 0 , 32,
21479 0xfc007f00, 0xa4002200, &NMD::LHE
, 0,
21480 CP0_
| EVA_
}, /* LHE */
21481 { instruction
, 0 , 0 , 32,
21482 0xfc007f00, 0xa4002a00, &NMD::SHE
, 0,
21483 CP0_
| EVA_
}, /* SHE */
21484 { instruction
, 0 , 0 , 32,
21485 0xfc007f00, 0xa4003200, &NMD::LHUE
, 0,
21486 CP0_
| EVA_
}, /* LHUE */
21487 { instruction
, 0 , 0 , 32,
21488 0xfc007f00, 0xa4003a00, &NMD::CACHEE
, 0,
21489 CP0_
| EVA_
}, /* CACHEE */
21490 { instruction
, 0 , 0 , 32,
21491 0xfc007f00, 0xa4004200, &NMD::LWE
, 0,
21492 CP0_
| EVA_
}, /* LWE */
21493 { instruction
, 0 , 0 , 32,
21494 0xfc007f00, 0xa4004a00, &NMD::SWE
, 0,
21495 CP0_
| EVA_
}, /* SWE */
21496 { pool
, P_LLE
, 4 , 32,
21497 0xfc007f00, 0xa4005200, 0 , 0,
21499 { pool
, P_SCE
, 4 , 32,
21500 0xfc007f00, 0xa4005a00, 0 , 0,
21502 { reserved_block
, 0 , 0 , 32,
21503 0xfc007f00, 0xa4006200, 0 , 0,
21504 0x0 }, /* P.LS.E0~*(12) */
21505 { reserved_block
, 0 , 0 , 32,
21506 0xfc007f00, 0xa4006a00, 0 , 0,
21507 0x0 }, /* P.LS.E0~*(13) */
21508 { reserved_block
, 0 , 0 , 32,
21509 0xfc007f00, 0xa4007200, 0 , 0,
21510 0x0 }, /* P.LS.E0~*(14) */
21511 { reserved_block
, 0 , 0 , 32,
21512 0xfc007f00, 0xa4007a00, 0 , 0,
21513 0x0 }, /* P.LS.E0~*(15) */
21517 NMD::Pool
NMD::P_LS_WM
[2] = {
21518 { instruction
, 0 , 0 , 32,
21519 0xfc000f00, 0xa4000400, &NMD::LWM
, 0,
21521 { instruction
, 0 , 0 , 32,
21522 0xfc000f00, 0xa4000c00, &NMD::SWM
, 0,
21527 NMD::Pool
NMD::P_LS_UAWM
[2] = {
21528 { instruction
, 0 , 0 , 32,
21529 0xfc000f00, 0xa4000500, &NMD::UALWM
, 0,
21530 XMMS_
}, /* UALWM */
21531 { instruction
, 0 , 0 , 32,
21532 0xfc000f00, 0xa4000d00, &NMD::UASWM
, 0,
21533 XMMS_
}, /* UASWM */
21537 NMD::Pool
NMD::P_LS_DM
[2] = {
21538 { instruction
, 0 , 0 , 32,
21539 0xfc000f00, 0xa4000600, &NMD::LDM
, 0,
21540 MIPS64_
}, /* LDM */
21541 { instruction
, 0 , 0 , 32,
21542 0xfc000f00, 0xa4000e00, &NMD::SDM
, 0,
21543 MIPS64_
}, /* SDM */
21547 NMD::Pool
NMD::P_LS_UADM
[2] = {
21548 { instruction
, 0 , 0 , 32,
21549 0xfc000f00, 0xa4000700, &NMD::UALDM
, 0,
21550 MIPS64_
}, /* UALDM */
21551 { instruction
, 0 , 0 , 32,
21552 0xfc000f00, 0xa4000f00, &NMD::UASDM
, 0,
21553 MIPS64_
}, /* UASDM */
21557 NMD::Pool
NMD::P_LS_S9
[8] = {
21558 { pool
, P_LS_S0
, 16 , 32,
21559 0xfc000700, 0xa4000000, 0 , 0,
21560 0x0 }, /* P.LS.S0 */
21561 { pool
, P_LS_S1
, 16 , 32,
21562 0xfc000700, 0xa4000100, 0 , 0,
21563 0x0 }, /* P.LS.S1 */
21564 { pool
, P_LS_E0
, 16 , 32,
21565 0xfc000700, 0xa4000200, 0 , 0,
21566 0x0 }, /* P.LS.E0 */
21567 { reserved_block
, 0 , 0 , 32,
21568 0xfc000700, 0xa4000300, 0 , 0,
21569 0x0 }, /* P.LS.S9~*(3) */
21570 { pool
, P_LS_WM
, 2 , 32,
21571 0xfc000700, 0xa4000400, 0 , 0,
21572 0x0 }, /* P.LS.WM */
21573 { pool
, P_LS_UAWM
, 2 , 32,
21574 0xfc000700, 0xa4000500, 0 , 0,
21575 0x0 }, /* P.LS.UAWM */
21576 { pool
, P_LS_DM
, 2 , 32,
21577 0xfc000700, 0xa4000600, 0 , 0,
21578 0x0 }, /* P.LS.DM */
21579 { pool
, P_LS_UADM
, 2 , 32,
21580 0xfc000700, 0xa4000700, 0 , 0,
21581 0x0 }, /* P.LS.UADM */
21585 NMD::Pool
NMD::P_BAL
[2] = {
21586 { branch_instruction
, 0 , 0 , 32,
21587 0xfe000000, 0x28000000, &NMD::BC_32_
, 0,
21588 0x0 }, /* BC[32] */
21589 { call_instruction
, 0 , 0 , 32,
21590 0xfe000000, 0x2a000000, &NMD::BALC_32_
, 0,
21591 0x0 }, /* BALC[32] */
21595 NMD::Pool
NMD::P_BALRSC
[2] = {
21596 { branch_instruction
, 0 , 0 , 32,
21597 0xffe0f000, 0x48008000, &NMD::BRSC
, 0,
21599 { call_instruction
, 0 , 0 , 32,
21600 0xfc00f000, 0x48008000, &NMD::BALRSC
, &NMD::BALRSC_cond
,
21601 0x0 }, /* BALRSC */
21605 NMD::Pool
NMD::P_J
[16] = {
21606 { call_instruction
, 0 , 0 , 32,
21607 0xfc00f000, 0x48000000, &NMD::JALRC_32_
, 0,
21608 0x0 }, /* JALRC[32] */
21609 { call_instruction
, 0 , 0 , 32,
21610 0xfc00f000, 0x48001000, &NMD::JALRC_HB
, 0,
21611 0x0 }, /* JALRC.HB */
21612 { reserved_block
, 0 , 0 , 32,
21613 0xfc00f000, 0x48002000, 0 , 0,
21614 0x0 }, /* P.J~*(2) */
21615 { reserved_block
, 0 , 0 , 32,
21616 0xfc00f000, 0x48003000, 0 , 0,
21617 0x0 }, /* P.J~*(3) */
21618 { reserved_block
, 0 , 0 , 32,
21619 0xfc00f000, 0x48004000, 0 , 0,
21620 0x0 }, /* P.J~*(4) */
21621 { reserved_block
, 0 , 0 , 32,
21622 0xfc00f000, 0x48005000, 0 , 0,
21623 0x0 }, /* P.J~*(5) */
21624 { reserved_block
, 0 , 0 , 32,
21625 0xfc00f000, 0x48006000, 0 , 0,
21626 0x0 }, /* P.J~*(6) */
21627 { reserved_block
, 0 , 0 , 32,
21628 0xfc00f000, 0x48007000, 0 , 0,
21629 0x0 }, /* P.J~*(7) */
21630 { pool
, P_BALRSC
, 2 , 32,
21631 0xfc00f000, 0x48008000, 0 , 0,
21632 0x0 }, /* P.BALRSC */
21633 { reserved_block
, 0 , 0 , 32,
21634 0xfc00f000, 0x48009000, 0 , 0,
21635 0x0 }, /* P.J~*(9) */
21636 { reserved_block
, 0 , 0 , 32,
21637 0xfc00f000, 0x4800a000, 0 , 0,
21638 0x0 }, /* P.J~*(10) */
21639 { reserved_block
, 0 , 0 , 32,
21640 0xfc00f000, 0x4800b000, 0 , 0,
21641 0x0 }, /* P.J~*(11) */
21642 { reserved_block
, 0 , 0 , 32,
21643 0xfc00f000, 0x4800c000, 0 , 0,
21644 0x0 }, /* P.J~*(12) */
21645 { reserved_block
, 0 , 0 , 32,
21646 0xfc00f000, 0x4800d000, 0 , 0,
21647 0x0 }, /* P.J~*(13) */
21648 { reserved_block
, 0 , 0 , 32,
21649 0xfc00f000, 0x4800e000, 0 , 0,
21650 0x0 }, /* P.J~*(14) */
21651 { reserved_block
, 0 , 0 , 32,
21652 0xfc00f000, 0x4800f000, 0 , 0,
21653 0x0 }, /* P.J~*(15) */
21657 NMD::Pool
NMD::P_BR3A
[32] = {
21658 { branch_instruction
, 0 , 0 , 32,
21659 0xfc1fc000, 0x88004000, &NMD::BC1EQZC
, 0,
21660 CP1_
}, /* BC1EQZC */
21661 { branch_instruction
, 0 , 0 , 32,
21662 0xfc1fc000, 0x88014000, &NMD::BC1NEZC
, 0,
21663 CP1_
}, /* BC1NEZC */
21664 { branch_instruction
, 0 , 0 , 32,
21665 0xfc1fc000, 0x88024000, &NMD::BC2EQZC
, 0,
21666 CP2_
}, /* BC2EQZC */
21667 { branch_instruction
, 0 , 0 , 32,
21668 0xfc1fc000, 0x88034000, &NMD::BC2NEZC
, 0,
21669 CP2_
}, /* BC2NEZC */
21670 { branch_instruction
, 0 , 0 , 32,
21671 0xfc1fc000, 0x88044000, &NMD::BPOSGE32C
, 0,
21672 DSP_
}, /* BPOSGE32C */
21673 { reserved_block
, 0 , 0 , 32,
21674 0xfc1fc000, 0x88054000, 0 , 0,
21675 0x0 }, /* P.BR3A~*(5) */
21676 { reserved_block
, 0 , 0 , 32,
21677 0xfc1fc000, 0x88064000, 0 , 0,
21678 0x0 }, /* P.BR3A~*(6) */
21679 { reserved_block
, 0 , 0 , 32,
21680 0xfc1fc000, 0x88074000, 0 , 0,
21681 0x0 }, /* P.BR3A~*(7) */
21682 { reserved_block
, 0 , 0 , 32,
21683 0xfc1fc000, 0x88084000, 0 , 0,
21684 0x0 }, /* P.BR3A~*(8) */
21685 { reserved_block
, 0 , 0 , 32,
21686 0xfc1fc000, 0x88094000, 0 , 0,
21687 0x0 }, /* P.BR3A~*(9) */
21688 { reserved_block
, 0 , 0 , 32,
21689 0xfc1fc000, 0x880a4000, 0 , 0,
21690 0x0 }, /* P.BR3A~*(10) */
21691 { reserved_block
, 0 , 0 , 32,
21692 0xfc1fc000, 0x880b4000, 0 , 0,
21693 0x0 }, /* P.BR3A~*(11) */
21694 { reserved_block
, 0 , 0 , 32,
21695 0xfc1fc000, 0x880c4000, 0 , 0,
21696 0x0 }, /* P.BR3A~*(12) */
21697 { reserved_block
, 0 , 0 , 32,
21698 0xfc1fc000, 0x880d4000, 0 , 0,
21699 0x0 }, /* P.BR3A~*(13) */
21700 { reserved_block
, 0 , 0 , 32,
21701 0xfc1fc000, 0x880e4000, 0 , 0,
21702 0x0 }, /* P.BR3A~*(14) */
21703 { reserved_block
, 0 , 0 , 32,
21704 0xfc1fc000, 0x880f4000, 0 , 0,
21705 0x0 }, /* P.BR3A~*(15) */
21706 { reserved_block
, 0 , 0 , 32,
21707 0xfc1fc000, 0x88104000, 0 , 0,
21708 0x0 }, /* P.BR3A~*(16) */
21709 { reserved_block
, 0 , 0 , 32,
21710 0xfc1fc000, 0x88114000, 0 , 0,
21711 0x0 }, /* P.BR3A~*(17) */
21712 { reserved_block
, 0 , 0 , 32,
21713 0xfc1fc000, 0x88124000, 0 , 0,
21714 0x0 }, /* P.BR3A~*(18) */
21715 { reserved_block
, 0 , 0 , 32,
21716 0xfc1fc000, 0x88134000, 0 , 0,
21717 0x0 }, /* P.BR3A~*(19) */
21718 { reserved_block
, 0 , 0 , 32,
21719 0xfc1fc000, 0x88144000, 0 , 0,
21720 0x0 }, /* P.BR3A~*(20) */
21721 { reserved_block
, 0 , 0 , 32,
21722 0xfc1fc000, 0x88154000, 0 , 0,
21723 0x0 }, /* P.BR3A~*(21) */
21724 { reserved_block
, 0 , 0 , 32,
21725 0xfc1fc000, 0x88164000, 0 , 0,
21726 0x0 }, /* P.BR3A~*(22) */
21727 { reserved_block
, 0 , 0 , 32,
21728 0xfc1fc000, 0x88174000, 0 , 0,
21729 0x0 }, /* P.BR3A~*(23) */
21730 { reserved_block
, 0 , 0 , 32,
21731 0xfc1fc000, 0x88184000, 0 , 0,
21732 0x0 }, /* P.BR3A~*(24) */
21733 { reserved_block
, 0 , 0 , 32,
21734 0xfc1fc000, 0x88194000, 0 , 0,
21735 0x0 }, /* P.BR3A~*(25) */
21736 { reserved_block
, 0 , 0 , 32,
21737 0xfc1fc000, 0x881a4000, 0 , 0,
21738 0x0 }, /* P.BR3A~*(26) */
21739 { reserved_block
, 0 , 0 , 32,
21740 0xfc1fc000, 0x881b4000, 0 , 0,
21741 0x0 }, /* P.BR3A~*(27) */
21742 { reserved_block
, 0 , 0 , 32,
21743 0xfc1fc000, 0x881c4000, 0 , 0,
21744 0x0 }, /* P.BR3A~*(28) */
21745 { reserved_block
, 0 , 0 , 32,
21746 0xfc1fc000, 0x881d4000, 0 , 0,
21747 0x0 }, /* P.BR3A~*(29) */
21748 { reserved_block
, 0 , 0 , 32,
21749 0xfc1fc000, 0x881e4000, 0 , 0,
21750 0x0 }, /* P.BR3A~*(30) */
21751 { reserved_block
, 0 , 0 , 32,
21752 0xfc1fc000, 0x881f4000, 0 , 0,
21753 0x0 }, /* P.BR3A~*(31) */
21757 NMD::Pool
NMD::P_BR1
[4] = {
21758 { branch_instruction
, 0 , 0 , 32,
21759 0xfc00c000, 0x88000000, &NMD::BEQC_32_
, 0,
21760 0x0 }, /* BEQC[32] */
21761 { pool
, P_BR3A
, 32 , 32,
21762 0xfc00c000, 0x88004000, 0 , 0,
21763 0x0 }, /* P.BR3A */
21764 { branch_instruction
, 0 , 0 , 32,
21765 0xfc00c000, 0x88008000, &NMD::BGEC
, 0,
21767 { branch_instruction
, 0 , 0 , 32,
21768 0xfc00c000, 0x8800c000, &NMD::BGEUC
, 0,
21773 NMD::Pool
NMD::P_BR2
[4] = {
21774 { branch_instruction
, 0 , 0 , 32,
21775 0xfc00c000, 0xa8000000, &NMD::BNEC_32_
, 0,
21776 0x0 }, /* BNEC[32] */
21777 { reserved_block
, 0 , 0 , 32,
21778 0xfc00c000, 0xa8004000, 0 , 0,
21779 0x0 }, /* P.BR2~*(1) */
21780 { branch_instruction
, 0 , 0 , 32,
21781 0xfc00c000, 0xa8008000, &NMD::BLTC
, 0,
21783 { branch_instruction
, 0 , 0 , 32,
21784 0xfc00c000, 0xa800c000, &NMD::BLTUC
, 0,
21789 NMD::Pool
NMD::P_BRI
[8] = {
21790 { branch_instruction
, 0 , 0 , 32,
21791 0xfc1c0000, 0xc8000000, &NMD::BEQIC
, 0,
21793 { branch_instruction
, 0 , 0 , 32,
21794 0xfc1c0000, 0xc8040000, &NMD::BBEQZC
, 0,
21795 XMMS_
}, /* BBEQZC */
21796 { branch_instruction
, 0 , 0 , 32,
21797 0xfc1c0000, 0xc8080000, &NMD::BGEIC
, 0,
21799 { branch_instruction
, 0 , 0 , 32,
21800 0xfc1c0000, 0xc80c0000, &NMD::BGEIUC
, 0,
21801 0x0 }, /* BGEIUC */
21802 { branch_instruction
, 0 , 0 , 32,
21803 0xfc1c0000, 0xc8100000, &NMD::BNEIC
, 0,
21805 { branch_instruction
, 0 , 0 , 32,
21806 0xfc1c0000, 0xc8140000, &NMD::BBNEZC
, 0,
21807 XMMS_
}, /* BBNEZC */
21808 { branch_instruction
, 0 , 0 , 32,
21809 0xfc1c0000, 0xc8180000, &NMD::BLTIC
, 0,
21811 { branch_instruction
, 0 , 0 , 32,
21812 0xfc1c0000, 0xc81c0000, &NMD::BLTIUC
, 0,
21813 0x0 }, /* BLTIUC */
21817 NMD::Pool
NMD::P32
[32] = {
21818 { pool
, P_ADDIU
, 2 , 32,
21819 0xfc000000, 0x00000000, 0 , 0,
21820 0x0 }, /* P.ADDIU */
21821 { pool
, P32A
, 8 , 32,
21822 0xfc000000, 0x20000000, 0 , 0,
21824 { pool
, P_GP_W
, 4 , 32,
21825 0xfc000000, 0x40000000, 0 , 0,
21826 0x0 }, /* P.GP.W */
21827 { pool
, POOL48I
, 32 , 48,
21828 0xfc0000000000ull
, 0x600000000000ull
, 0 , 0,
21829 0x0 }, /* POOL48I */
21830 { pool
, P_U12
, 16 , 32,
21831 0xfc000000, 0x80000000, 0 , 0,
21833 { pool
, POOL32F
, 8 , 32,
21834 0xfc000000, 0xa0000000, 0 , 0,
21835 CP1_
}, /* POOL32F */
21836 { pool
, POOL32S
, 8 , 32,
21837 0xfc000000, 0xc0000000, 0 , 0,
21838 0x0 }, /* POOL32S */
21839 { pool
, P_LUI
, 2 , 32,
21840 0xfc000000, 0xe0000000, 0 , 0,
21842 { instruction
, 0 , 0 , 32,
21843 0xfc000000, 0x04000000, &NMD::ADDIUPC_32_
, 0,
21844 0x0 }, /* ADDIUPC[32] */
21845 { reserved_block
, 0 , 0 , 32,
21846 0xfc000000, 0x24000000, 0 , 0,
21847 0x0 }, /* P32~*(5) */
21848 { pool
, P_GP_BH
, 8 , 32,
21849 0xfc000000, 0x44000000, 0 , 0,
21850 0x0 }, /* P.GP.BH */
21851 { reserved_block
, 0 , 0 , 32,
21852 0xfc000000, 0x64000000, 0 , 0,
21853 0x0 }, /* P32~*(13) */
21854 { pool
, P_LS_U12
, 16 , 32,
21855 0xfc000000, 0x84000000, 0 , 0,
21856 0x0 }, /* P.LS.U12 */
21857 { pool
, P_LS_S9
, 8 , 32,
21858 0xfc000000, 0xa4000000, 0 , 0,
21859 0x0 }, /* P.LS.S9 */
21860 { reserved_block
, 0 , 0 , 32,
21861 0xfc000000, 0xc4000000, 0 , 0,
21862 0x0 }, /* P32~*(25) */
21863 { reserved_block
, 0 , 0 , 32,
21864 0xfc000000, 0xe4000000, 0 , 0,
21865 0x0 }, /* P32~*(29) */
21866 { call_instruction
, 0 , 0 , 32,
21867 0xfc000000, 0x08000000, &NMD::MOVE_BALC
, 0,
21868 XMMS_
}, /* MOVE.BALC */
21869 { pool
, P_BAL
, 2 , 32,
21870 0xfc000000, 0x28000000, 0 , 0,
21872 { pool
, P_J
, 16 , 32,
21873 0xfc000000, 0x48000000, 0 , 0,
21875 { reserved_block
, 0 , 0 , 32,
21876 0xfc000000, 0x68000000, 0 , 0,
21877 0x0 }, /* P32~*(14) */
21878 { pool
, P_BR1
, 4 , 32,
21879 0xfc000000, 0x88000000, 0 , 0,
21881 { pool
, P_BR2
, 4 , 32,
21882 0xfc000000, 0xa8000000, 0 , 0,
21884 { pool
, P_BRI
, 8 , 32,
21885 0xfc000000, 0xc8000000, 0 , 0,
21887 { reserved_block
, 0 , 0 , 32,
21888 0xfc000000, 0xe8000000, 0 , 0,
21889 0x0 }, /* P32~*(30) */
21890 { reserved_block
, 0 , 0 , 32,
21891 0xfc000000, 0x0c000000, 0 , 0,
21892 0x0 }, /* P32~*(3) */
21893 { reserved_block
, 0 , 0 , 32,
21894 0xfc000000, 0x2c000000, 0 , 0,
21895 0x0 }, /* P32~*(7) */
21896 { reserved_block
, 0 , 0 , 32,
21897 0xfc000000, 0x4c000000, 0 , 0,
21898 0x0 }, /* P32~*(11) */
21899 { reserved_block
, 0 , 0 , 32,
21900 0xfc000000, 0x6c000000, 0 , 0,
21901 0x0 }, /* P32~*(15) */
21902 { reserved_block
, 0 , 0 , 32,
21903 0xfc000000, 0x8c000000, 0 , 0,
21904 0x0 }, /* P32~*(19) */
21905 { reserved_block
, 0 , 0 , 32,
21906 0xfc000000, 0xac000000, 0 , 0,
21907 0x0 }, /* P32~*(23) */
21908 { reserved_block
, 0 , 0 , 32,
21909 0xfc000000, 0xcc000000, 0 , 0,
21910 0x0 }, /* P32~*(27) */
21911 { reserved_block
, 0 , 0 , 32,
21912 0xfc000000, 0xec000000, 0 , 0,
21913 0x0 }, /* P32~*(31) */
21917 NMD::Pool
NMD::P16_SYSCALL
[2] = {
21918 { instruction
, 0 , 0 , 16,
21919 0xfffc , 0x1008 , &NMD::SYSCALL_16_
, 0,
21920 0x0 }, /* SYSCALL[16] */
21921 { instruction
, 0 , 0 , 16,
21922 0xfffc , 0x100c , &NMD::HYPCALL_16_
, 0,
21923 CP0_
| VZ_
}, /* HYPCALL[16] */
21927 NMD::Pool
NMD::P16_RI
[4] = {
21928 { reserved_block
, 0 , 0 , 16,
21929 0xfff8 , 0x1000 , 0 , 0,
21930 0x0 }, /* P16.RI~*(0) */
21931 { pool
, P16_SYSCALL
, 2 , 16,
21932 0xfff8 , 0x1008 , 0 , 0,
21933 0x0 }, /* P16.SYSCALL */
21934 { instruction
, 0 , 0 , 16,
21935 0xfff8 , 0x1010 , &NMD::BREAK_16_
, 0,
21936 0x0 }, /* BREAK[16] */
21937 { instruction
, 0 , 0 , 16,
21938 0xfff8 , 0x1018 , &NMD::SDBBP_16_
, 0,
21939 EJTAG_
}, /* SDBBP[16] */
21943 NMD::Pool
NMD::P16_MV
[2] = {
21944 { pool
, P16_RI
, 4 , 16,
21945 0xffe0 , 0x1000 , 0 , 0,
21946 0x0 }, /* P16.RI */
21947 { instruction
, 0 , 0 , 16,
21948 0xfc00 , 0x1000 , &NMD::MOVE
, &NMD::MOVE_cond
,
21953 NMD::Pool
NMD::P16_SHIFT
[2] = {
21954 { instruction
, 0 , 0 , 16,
21955 0xfc08 , 0x3000 , &NMD::SLL_16_
, 0,
21956 0x0 }, /* SLL[16] */
21957 { instruction
, 0 , 0 , 16,
21958 0xfc08 , 0x3008 , &NMD::SRL_16_
, 0,
21959 0x0 }, /* SRL[16] */
21963 NMD::Pool
NMD::POOL16C_00
[4] = {
21964 { instruction
, 0 , 0 , 16,
21965 0xfc0f , 0x5000 , &NMD::NOT_16_
, 0,
21966 0x0 }, /* NOT[16] */
21967 { instruction
, 0 , 0 , 16,
21968 0xfc0f , 0x5004 , &NMD::XOR_16_
, 0,
21969 0x0 }, /* XOR[16] */
21970 { instruction
, 0 , 0 , 16,
21971 0xfc0f , 0x5008 , &NMD::AND_16_
, 0,
21972 0x0 }, /* AND[16] */
21973 { instruction
, 0 , 0 , 16,
21974 0xfc0f , 0x500c , &NMD::OR_16_
, 0,
21975 0x0 }, /* OR[16] */
21979 NMD::Pool
NMD::POOL16C_0
[2] = {
21980 { pool
, POOL16C_00
, 4 , 16,
21981 0xfc03 , 0x5000 , 0 , 0,
21982 0x0 }, /* POOL16C_00 */
21983 { reserved_block
, 0 , 0 , 16,
21984 0xfc03 , 0x5002 , 0 , 0,
21985 0x0 }, /* POOL16C_0~*(1) */
21989 NMD::Pool
NMD::P16C
[2] = {
21990 { pool
, POOL16C_0
, 2 , 16,
21991 0xfc01 , 0x5000 , 0 , 0,
21992 0x0 }, /* POOL16C_0 */
21993 { instruction
, 0 , 0 , 16,
21994 0xfc01 , 0x5001 , &NMD::LWXS_16_
, 0,
21995 0x0 }, /* LWXS[16] */
21999 NMD::Pool
NMD::P16_A1
[2] = {
22000 { reserved_block
, 0 , 0 , 16,
22001 0xfc40 , 0x7000 , 0 , 0,
22002 0x0 }, /* P16.A1~*(0) */
22003 { instruction
, 0 , 0 , 16,
22004 0xfc40 , 0x7040 , &NMD::ADDIU_R1_SP_
, 0,
22005 0x0 }, /* ADDIU[R1.SP] */
22009 NMD::Pool
NMD::P_ADDIU_RS5_
[2] = {
22010 { instruction
, 0 , 0 , 16,
22011 0xffe8 , 0x9008 , &NMD::NOP_16_
, 0,
22012 0x0 }, /* NOP[16] */
22013 { instruction
, 0 , 0 , 16,
22014 0xfc08 , 0x9008 , &NMD::ADDIU_RS5_
, &NMD::ADDIU_RS5__cond
,
22015 0x0 }, /* ADDIU[RS5] */
22019 NMD::Pool
NMD::P16_A2
[2] = {
22020 { instruction
, 0 , 0 , 16,
22021 0xfc08 , 0x9000 , &NMD::ADDIU_R2_
, 0,
22022 0x0 }, /* ADDIU[R2] */
22023 { pool
, P_ADDIU_RS5_
, 2 , 16,
22024 0xfc08 , 0x9008 , 0 , 0,
22025 0x0 }, /* P.ADDIU[RS5] */
22029 NMD::Pool
NMD::P16_ADDU
[2] = {
22030 { instruction
, 0 , 0 , 16,
22031 0xfc01 , 0xb000 , &NMD::ADDU_16_
, 0,
22032 0x0 }, /* ADDU[16] */
22033 { instruction
, 0 , 0 , 16,
22034 0xfc01 , 0xb001 , &NMD::SUBU_16_
, 0,
22035 0x0 }, /* SUBU[16] */
22039 NMD::Pool
NMD::P16_JRC
[2] = {
22040 { branch_instruction
, 0 , 0 , 16,
22041 0xfc1f , 0xd800 , &NMD::JRC
, 0,
22043 { call_instruction
, 0 , 0 , 16,
22044 0xfc1f , 0xd810 , &NMD::JALRC_16_
, 0,
22045 0x0 }, /* JALRC[16] */
22049 NMD::Pool
NMD::P16_BR1
[2] = {
22050 { branch_instruction
, 0 , 0 , 16,
22051 0xfc00 , 0xd800 , &NMD::BEQC_16_
, &NMD::BEQC_16__cond
,
22052 XMMS_
}, /* BEQC[16] */
22053 { branch_instruction
, 0 , 0 , 16,
22054 0xfc00 , 0xd800 , &NMD::BNEC_16_
, &NMD::BNEC_16__cond
,
22055 XMMS_
}, /* BNEC[16] */
22059 NMD::Pool
NMD::P16_BR
[2] = {
22060 { pool
, P16_JRC
, 2 , 16,
22061 0xfc0f , 0xd800 , 0 , 0,
22062 0x0 }, /* P16.JRC */
22063 { pool
, P16_BR1
, 2 , 16,
22064 0xfc00 , 0xd800 , 0 , &NMD::P16_BR1_cond
,
22065 0x0 }, /* P16.BR1 */
22069 NMD::Pool
NMD::P16_SR
[2] = {
22070 { instruction
, 0 , 0 , 16,
22071 0xfd00 , 0x1c00 , &NMD::SAVE_16_
, 0,
22072 0x0 }, /* SAVE[16] */
22073 { return_instruction
, 0 , 0 , 16,
22074 0xfd00 , 0x1d00 , &NMD::RESTORE_JRC_16_
, 0,
22075 0x0 }, /* RESTORE.JRC[16] */
22079 NMD::Pool
NMD::P16_4X4
[4] = {
22080 { instruction
, 0 , 0 , 16,
22081 0xfd08 , 0x3c00 , &NMD::ADDU_4X4_
, 0,
22082 XMMS_
}, /* ADDU[4X4] */
22083 { instruction
, 0 , 0 , 16,
22084 0xfd08 , 0x3c08 , &NMD::MUL_4X4_
, 0,
22085 XMMS_
}, /* MUL[4X4] */
22086 { reserved_block
, 0 , 0 , 16,
22087 0xfd08 , 0x3d00 , 0 , 0,
22088 0x0 }, /* P16.4X4~*(2) */
22089 { reserved_block
, 0 , 0 , 16,
22090 0xfd08 , 0x3d08 , 0 , 0,
22091 0x0 }, /* P16.4X4~*(3) */
22095 NMD::Pool
NMD::P16_LB
[4] = {
22096 { instruction
, 0 , 0 , 16,
22097 0xfc0c , 0x5c00 , &NMD::LB_16_
, 0,
22098 0x0 }, /* LB[16] */
22099 { instruction
, 0 , 0 , 16,
22100 0xfc0c , 0x5c04 , &NMD::SB_16_
, 0,
22101 0x0 }, /* SB[16] */
22102 { instruction
, 0 , 0 , 16,
22103 0xfc0c , 0x5c08 , &NMD::LBU_16_
, 0,
22104 0x0 }, /* LBU[16] */
22105 { reserved_block
, 0 , 0 , 16,
22106 0xfc0c , 0x5c0c , 0 , 0,
22107 0x0 }, /* P16.LB~*(3) */
22111 NMD::Pool
NMD::P16_LH
[4] = {
22112 { instruction
, 0 , 0 , 16,
22113 0xfc09 , 0x7c00 , &NMD::LH_16_
, 0,
22114 0x0 }, /* LH[16] */
22115 { instruction
, 0 , 0 , 16,
22116 0xfc09 , 0x7c01 , &NMD::SH_16_
, 0,
22117 0x0 }, /* SH[16] */
22118 { instruction
, 0 , 0 , 16,
22119 0xfc09 , 0x7c08 , &NMD::LHU_16_
, 0,
22120 0x0 }, /* LHU[16] */
22121 { reserved_block
, 0 , 0 , 16,
22122 0xfc09 , 0x7c09 , 0 , 0,
22123 0x0 }, /* P16.LH~*(3) */
22127 NMD::Pool
NMD::P16
[32] = {
22128 { pool
, P16_MV
, 2 , 16,
22129 0xfc00 , 0x1000 , 0 , 0,
22130 0x0 }, /* P16.MV */
22131 { pool
, P16_SHIFT
, 2 , 16,
22132 0xfc00 , 0x3000 , 0 , 0,
22133 0x0 }, /* P16.SHIFT */
22134 { pool
, P16C
, 2 , 16,
22135 0xfc00 , 0x5000 , 0 , 0,
22137 { pool
, P16_A1
, 2 , 16,
22138 0xfc00 , 0x7000 , 0 , 0,
22139 0x0 }, /* P16.A1 */
22140 { pool
, P16_A2
, 2 , 16,
22141 0xfc00 , 0x9000 , 0 , 0,
22142 0x0 }, /* P16.A2 */
22143 { pool
, P16_ADDU
, 2 , 16,
22144 0xfc00 , 0xb000 , 0 , 0,
22145 0x0 }, /* P16.ADDU */
22146 { instruction
, 0 , 0 , 16,
22147 0xfc00 , 0xd000 , &NMD::LI_16_
, 0,
22148 0x0 }, /* LI[16] */
22149 { instruction
, 0 , 0 , 16,
22150 0xfc00 , 0xf000 , &NMD::ANDI_16_
, 0,
22151 0x0 }, /* ANDI[16] */
22152 { instruction
, 0 , 0 , 16,
22153 0xfc00 , 0x1400 , &NMD::LW_16_
, 0,
22154 0x0 }, /* LW[16] */
22155 { instruction
, 0 , 0 , 16,
22156 0xfc00 , 0x3400 , &NMD::LW_SP_
, 0,
22157 0x0 }, /* LW[SP] */
22158 { instruction
, 0 , 0 , 16,
22159 0xfc00 , 0x5400 , &NMD::LW_GP16_
, 0,
22160 0x0 }, /* LW[GP16] */
22161 { instruction
, 0 , 0 , 16,
22162 0xfc00 , 0x7400 , &NMD::LW_4X4_
, 0,
22163 XMMS_
}, /* LW[4X4] */
22164 { instruction
, 0 , 0 , 16,
22165 0xfc00 , 0x9400 , &NMD::SW_16_
, 0,
22166 0x0 }, /* SW[16] */
22167 { instruction
, 0 , 0 , 16,
22168 0xfc00 , 0xb400 , &NMD::SW_SP_
, 0,
22169 0x0 }, /* SW[SP] */
22170 { instruction
, 0 , 0 , 16,
22171 0xfc00 , 0xd400 , &NMD::SW_GP16_
, 0,
22172 0x0 }, /* SW[GP16] */
22173 { instruction
, 0 , 0 , 16,
22174 0xfc00 , 0xf400 , &NMD::SW_4X4_
, 0,
22175 XMMS_
}, /* SW[4X4] */
22176 { branch_instruction
, 0 , 0 , 16,
22177 0xfc00 , 0x1800 , &NMD::BC_16_
, 0,
22178 0x0 }, /* BC[16] */
22179 { call_instruction
, 0 , 0 , 16,
22180 0xfc00 , 0x3800 , &NMD::BALC_16_
, 0,
22181 0x0 }, /* BALC[16] */
22182 { reserved_block
, 0 , 0 , 16,
22183 0xfc00 , 0x5800 , 0 , 0,
22184 0x0 }, /* P16~*(10) */
22185 { reserved_block
, 0 , 0 , 16,
22186 0xfc00 , 0x7800 , 0 , 0,
22187 0x0 }, /* P16~*(14) */
22188 { branch_instruction
, 0 , 0 , 16,
22189 0xfc00 , 0x9800 , &NMD::BEQZC_16_
, 0,
22190 0x0 }, /* BEQZC[16] */
22191 { branch_instruction
, 0 , 0 , 16,
22192 0xfc00 , 0xb800 , &NMD::BNEZC_16_
, 0,
22193 0x0 }, /* BNEZC[16] */
22194 { pool
, P16_BR
, 2 , 16,
22195 0xfc00 , 0xd800 , 0 , 0,
22196 0x0 }, /* P16.BR */
22197 { reserved_block
, 0 , 0 , 16,
22198 0xfc00 , 0xf800 , 0 , 0,
22199 0x0 }, /* P16~*(30) */
22200 { pool
, P16_SR
, 2 , 16,
22201 0xfc00 , 0x1c00 , 0 , 0,
22202 0x0 }, /* P16.SR */
22203 { pool
, P16_4X4
, 4 , 16,
22204 0xfc00 , 0x3c00 , 0 , 0,
22205 0x0 }, /* P16.4X4 */
22206 { pool
, P16_LB
, 4 , 16,
22207 0xfc00 , 0x5c00 , 0 , 0,
22208 0x0 }, /* P16.LB */
22209 { pool
, P16_LH
, 4 , 16,
22210 0xfc00 , 0x7c00 , 0 , 0,
22211 0x0 }, /* P16.LH */
22212 { reserved_block
, 0 , 0 , 16,
22213 0xfc00 , 0x9c00 , 0 , 0,
22214 0x0 }, /* P16~*(19) */
22215 { instruction
, 0 , 0 , 16,
22216 0xfc00 , 0xbc00 , &NMD::MOVEP
, 0,
22217 XMMS_
}, /* MOVEP */
22218 { reserved_block
, 0 , 0 , 16,
22219 0xfc00 , 0xdc00 , 0 , 0,
22220 0x0 }, /* P16~*(27) */
22221 { instruction
, 0 , 0 , 16,
22222 0xfc00 , 0xfc00 , &NMD::MOVEP_REV_
, 0,
22223 XMMS_
}, /* MOVEP[REV] */
22227 NMD::Pool
NMD::MAJOR
[2] = {
22228 { pool
, P32
, 32 , 32,
22229 0x10000000, 0x00000000, 0 , 0,
22231 { pool
, P16
, 32 , 16,
22232 0x1000 , 0x1000 , 0 , 0,