2 * Source file for nanoMIPS disassembler component of QEMU
4 * Copyright (C) 2018 Wave Computing
5 * Copyright (C) 2018 Matthew Fortune <matthew.fortune@mips.com>
6 * Copyright (C) 2018 Aleksandar Markovic <aleksandar.markovic@wavecomp.com>
8 * This program is free software: you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation, either version 3 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23 #include "qemu/osdep.h"
24 #include "disas/bfd.h"
35 #define IMGASSERTONCE(test)
38 int nanomips_dis(char *buf
,
45 uint16 bits
[3] = {one
, two
, three
};
47 NMD::TABLE_ENTRY_TYPE type
;
48 NMD
d(address
, NMD::ALL_ATTRIBUTES
);
49 int size
= d
.Disassemble(bits
, disasm
, type
);
51 strcpy(buf
, disasm
.c_str());
55 int print_insn_nanomips(bfd_vma memaddr
, struct disassemble_info
*info
)
59 uint16_t insn1
= 0, insn2
= 0, insn3
= 0;
62 info
->bytes_per_chunk
= 2;
63 info
->display_endian
= info
->endian
;
64 info
->insn_info_valid
= 1;
65 info
->branch_delay_insns
= 0;
67 info
->insn_type
= dis_nonbranch
;
71 status
= (*info
->read_memory_func
)(memaddr
, buffer
, 2, info
);
73 (*info
->memory_error_func
)(status
, memaddr
, info
);
77 if (info
->endian
== BFD_ENDIAN_BIG
) {
78 insn1
= bfd_getb16(buffer
);
80 insn1
= bfd_getl16(buffer
);
82 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn1
);
84 /* Handle 32-bit opcodes. */
85 if ((insn1
& 0x1000) == 0) {
86 status
= (*info
->read_memory_func
)(memaddr
+ 2, buffer
, 2, info
);
88 (*info
->memory_error_func
)(status
, memaddr
+ 2, info
);
92 if (info
->endian
== BFD_ENDIAN_BIG
) {
93 insn2
= bfd_getb16(buffer
);
95 insn2
= bfd_getl16(buffer
);
97 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn2
);
99 (*info
->fprintf_func
)(info
->stream
, " ");
101 /* Handle 48-bit opcodes. */
102 if ((insn1
>> 10) == 0x18) {
103 status
= (*info
->read_memory_func
)(memaddr
+ 4, buffer
, 2, info
);
105 (*info
->memory_error_func
)(status
, memaddr
+ 4, info
);
109 if (info
->endian
== BFD_ENDIAN_BIG
) {
110 insn3
= bfd_getb16(buffer
);
112 insn3
= bfd_getl16(buffer
);
114 (*info
->fprintf_func
)(info
->stream
, "%04x ", insn3
);
116 (*info
->fprintf_func
)(info
->stream
, " ");
119 int length
= nanomips_dis(buf
, memaddr
, insn1
, insn2
, insn3
);
121 /* FIXME: Should probably use a hash table on the major opcode here. */
123 (*info
->fprintf_func
) (info
->stream
, "%s", buf
);
128 info
->insn_type
= dis_noninsn
;
130 return insn3
? 6 : insn2
? 4 : 2;
136 address
addr32(address a
)
141 std::string
format(const char *format
, ...)
145 va_start(args
, format
);
146 int err
= vsprintf(buffer
, format
, args
);
154 std::string
format(const char *format
,
159 sprintf(buffer
, format
, s
.c_str());
164 std::string
format(const char *format
,
170 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str());
175 std::string
format(const char *format
,
182 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str());
187 std::string
format(const char *format
,
195 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str(),
201 std::string
format(const char *format
,
210 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), s3
.c_str(),
211 s4
.c_str(), s5
.c_str());
216 std::string
format(const char *format
,
222 sprintf(buffer
, format
, d
, s2
.c_str());
227 std::string
format(const char *format
,
234 sprintf(buffer
, format
, s1
.c_str(), d
, s2
.c_str());
239 std::string
format(const char *format
,
246 sprintf(buffer
, format
, s1
.c_str(), s2
.c_str(), d
);
253 return static_cast<char>(c
);
258 std::string
to_string(img::address a
)
261 sprintf(buffer
, "0x%08llx", a
);
266 uint64
extract_bits(uint64 data
, uint32 bit_offset
, uint32 bit_size
)
268 return (data
<< (64 - (bit_size
+ bit_offset
))) >> (64 - bit_size
);
272 int64
sign_extend(int64 data
, int msb
)
274 uint64 shift
= 63 - msb
;
275 return (data
<< shift
) >> shift
;
279 uint64
NMD::renumber_registers(uint64 index
, uint64
*register_list
,
280 size_t register_list_size
)
282 if (index
< register_list_size
) {
283 return register_list
[index
];
286 throw std::runtime_error(img::format(
287 "Invalid register mapping index %d, size of list = %d",
288 index
, register_list_size
));
293 * these functions should be decode functions but the json does not have
294 * decode sections so they are based on the encode, the equivalent decode
295 * functions need writing eventually.
297 uint64
NMD::encode_gpr3(uint64 d
)
299 static uint64 register_list
[] = { 16, 17, 18, 19, 4, 5, 6, 7 };
300 return renumber_registers(d
, register_list
,
301 sizeof(register_list
) / sizeof(register_list
[0]));
305 uint64
NMD::encode_gpr3_store(uint64 d
)
307 static uint64 register_list
[] = { 0, 17, 18, 19, 4, 5, 6, 7 };
308 return renumber_registers(d
, register_list
,
309 sizeof(register_list
) / sizeof(register_list
[0]));
313 uint64
NMD::encode_rd1_from_rd(uint64 d
)
315 static uint64 register_list
[] = { 4, 5 };
316 return renumber_registers(d
, register_list
,
317 sizeof(register_list
) / sizeof(register_list
[0]));
321 uint64
NMD::encode_gpr4_zero(uint64 d
)
323 static uint64 register_list
[] = { 8, 9, 10, 0, 4, 5, 6, 7,
324 16, 17, 18, 19, 20, 21, 22, 23 };
325 return renumber_registers(d
, register_list
,
326 sizeof(register_list
) / sizeof(register_list
[0]));
330 uint64
NMD::encode_gpr4(uint64 d
)
332 static uint64 register_list
[] = { 8, 9, 10, 11, 4, 5, 6, 7,
333 16, 17, 18, 19, 20, 21, 22, 23 };
334 return renumber_registers(d
, register_list
,
335 sizeof(register_list
) / sizeof(register_list
[0]));
339 uint64
NMD::encode_rd2_reg1(uint64 d
)
341 static uint64 register_list
[] = { 4, 5, 6, 7 };
342 return renumber_registers(d
, register_list
,
343 sizeof(register_list
) / sizeof(register_list
[0]));
347 uint64
NMD::encode_rd2_reg2(uint64 d
)
349 static uint64 register_list
[] = { 5, 6, 7, 8 };
350 return renumber_registers(d
, register_list
,
351 sizeof(register_list
) / sizeof(register_list
[0]));
355 uint64
NMD::copy(uint64 d
)
361 int64
NMD::copy(int64 d
)
367 int64
NMD::neg_copy(uint64 d
)
373 int64
NMD::neg_copy(int64 d
)
379 /* strange wrapper around gpr3 */
380 uint64
NMD::encode_rs3_and_check_rs3_ge_rt3(uint64 d
)
382 return encode_gpr3(d
);
386 /* strange wrapper around gpr3 */
387 uint64
NMD::encode_rs3_and_check_rs3_lt_rt3(uint64 d
)
389 return encode_gpr3(d
);
393 /* nop - done by extraction function */
394 uint64
NMD::encode_s_from_address(uint64 d
)
400 /* nop - done by extraction function */
401 uint64
NMD::encode_u_from_address(uint64 d
)
407 /* nop - done by extraction function */
408 uint64
NMD::encode_s_from_s_hi(uint64 d
)
414 uint64
NMD::encode_count3_from_count(uint64 d
)
416 IMGASSERTONCE(d
< 8);
417 return d
== 0ull ? 8ull : d
;
421 uint64
NMD::encode_shift3_from_shift(uint64 d
)
423 IMGASSERTONCE(d
< 8);
424 return d
== 0ull ? 8ull : d
;
428 /* special value for load literal */
429 int64
NMD::encode_eu_from_s_li16(uint64 d
)
431 IMGASSERTONCE(d
< 128);
432 return d
== 127 ? -1 : (int64
)d
;
436 uint64
NMD::encode_msbd_from_size(uint64 d
)
438 IMGASSERTONCE(d
< 32);
443 uint64
NMD::encode_eu_from_u_andi16(uint64 d
)
445 IMGASSERTONCE(d
< 16);
456 uint64
NMD::encode_msbd_from_pos_and_size(uint64 d
)
463 /* save16 / restore16 ???? */
464 uint64
NMD::encode_rt1_from_rt(uint64 d
)
471 uint64
NMD::encode_lsb_from_pos_and_size(uint64 d
)
477 std::string
NMD::save_restore_list(uint64 rt
, uint64 count
, uint64 gp
)
481 for (uint64 counter
= 0; counter
!= count
; counter
++) {
482 bool use_gp
= gp
&& (counter
== count
- 1);
483 uint64 this_rt
= use_gp
? 28 : ((rt
& 0x10) | (rt
+ counter
)) & 0x1f;
484 str
+= img::format(",%s", GPR(this_rt
));
491 std::string
NMD::GPR(uint64 reg
)
493 static const char *gpr_reg
[32] = {
494 "zero", "at", "v0", "v1", "a0", "a1", "a2", "a3",
495 "a4", "a5", "a6", "a7", "r12", "r13", "r14", "r15",
496 "s0", "s1", "s2", "s3", "s4", "s5", "s6", "s7",
497 "r24", "r25", "k0", "k1", "gp", "sp", "fp", "ra"
504 throw std::runtime_error(img::format("Invalid GPR register index %d", reg
));
508 std::string
NMD::FPR(uint64 reg
)
510 static const char *fpr_reg
[32] = {
511 "f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
512 "f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",
513 "f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",
514 "f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31"
521 throw std::runtime_error(img::format("Invalid FPR register index %d", reg
));
525 std::string
NMD::AC(uint64 reg
)
527 static const char *ac_reg
[4] = {
528 "ac0", "ac1", "ac2", "ac3"
535 throw std::runtime_error(img::format("Invalid AC register index %d", reg
));
539 std::string
NMD::IMMEDIATE(uint64 value
)
541 return img::format("0x%x", value
);
545 std::string
NMD::IMMEDIATE(int64 value
)
547 return img::format("%d", value
);
551 std::string
NMD::CPR(uint64 reg
)
553 /* needs more work */
554 return img::format("CP%d", reg
);
558 std::string
NMD::ADDRESS(uint64 value
, int instruction_size
)
560 /* token for string replace */
561 /* const char TOKEN_REPLACE = (char)0xa2; */
562 img::address address
= m_pc
+ value
+ instruction_size
;
563 /* symbol replacement */
564 /* return img::as_char(TOKEN_REPLACE) + to_string(address); */
565 return to_string(address
);
569 uint64
NMD::extract_op_code_value(const uint16
* data
, int size
)
575 return ((uint64
)data
[0] << 16) | data
[1];
577 return ((uint64
)data
[0] << 32) | ((uint64
)data
[1] << 16) | data
[2];
584 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
585 NMD::TABLE_ENTRY_TYPE
& type
)
587 return Disassemble(data
, dis
, type
, MAJOR
, 2);
592 * Recurse through tables until the instruction is found then return
593 * the string and size
596 * pointer to a word stream,
597 * disassember table and size
599 * instruction size - negative is error
600 * disassembly string - on error will constain error string
602 int NMD::Disassemble(const uint16
* data
, std::string
& dis
,
603 NMD::TABLE_ENTRY_TYPE
& type
, const Pool
*table
,
608 for (int i
= 0; i
< table_size
; i
++) {
609 uint64 op_code
= extract_op_code_value(data
,
610 table
[i
].instructions_size
);
611 if ((op_code
& table
[i
].mask
) == table
[i
].value
) {
613 conditional_function cond
= table
[i
].condition
;
614 if ((cond
== 0) || (this->*cond
)(op_code
)) {
617 if (table
[i
].type
== pool
) {
618 return Disassemble(data
, dis
, type
,
620 table
[i
].next_table_size
);
621 } else if ((table
[i
].type
== instruction
) ||
622 (table
[i
].type
== call_instruction
) ||
623 (table
[i
].type
== branch_instruction
) ||
624 (table
[i
].type
== return_instruction
)) {
625 if ((table
[i
].attributes
!= 0) &&
626 (m_requested_instruction_categories
&
627 table
[i
].attributes
) == 0) {
629 * failed due to instruction having
630 * an ASE attribute and the requested version
631 * not having that attribute
633 dis
= "ASE attribute missmatch";
636 disassembly_function dis_fn
= table
[i
].disassembly
;
638 dis
= "disassembler failure - bad table entry";
641 type
= table
[i
].type
;
642 dis
= (this->*dis_fn
)(op_code
);
643 return table
[i
].instructions_size
;
645 dis
= "reserved instruction";
649 catch (std::runtime_error
& e
)
652 return -3; /* runtime error */
658 catch (std::exception
& e
)
661 return -4; /* runtime error */
664 dis
= "failed to disassemble";
665 return -1; /* failed to disassemble */
669 uint64
NMD::extract_code_18_to_0(uint64 instruction
)
672 value
|= extract_bits(instruction
, 0, 19);
677 uint64
NMD::extract_shift3_2_1_0(uint64 instruction
)
680 value
|= extract_bits(instruction
, 0, 3);
685 uint64
NMD::extr_uil3il3bs9Fmsb11(uint64 instruction
)
688 value
|= extract_bits(instruction
, 3, 9) << 3;
693 uint64
NMD::extract_count_3_2_1_0(uint64 instruction
)
696 value
|= extract_bits(instruction
, 0, 4);
701 uint64
NMD::extract_rtz3_9_8_7(uint64 instruction
)
704 value
|= extract_bits(instruction
, 7, 3);
709 uint64
NMD::extr_uil1il1bs17Fmsb17(uint64 instruction
)
712 value
|= extract_bits(instruction
, 1, 17) << 1;
717 int64
NMD::extr_sil11il0bs10Tmsb9(uint64 instruction
)
720 value
|= extract_bits(instruction
, 11, 10);
721 value
= sign_extend(value
, 9);
726 int64
NMD::extr_sil0il11bs1_il1il1bs10Tmsb11(uint64 instruction
)
729 value
|= extract_bits(instruction
, 0, 1) << 11;
730 value
|= extract_bits(instruction
, 1, 10) << 1;
731 value
= sign_extend(value
, 11);
736 uint64
NMD::extract_u_10(uint64 instruction
)
739 value
|= extract_bits(instruction
, 10, 1);
744 uint64
NMD::extract_rtz4_27_26_25_23_22_21(uint64 instruction
)
747 value
|= extract_bits(instruction
, 21, 3);
748 value
|= extract_bits(instruction
, 25, 1) << 3;
753 uint64
NMD::extract_sa_15_14_13_12_11(uint64 instruction
)
756 value
|= extract_bits(instruction
, 11, 5);
761 uint64
NMD::extract_shift_4_3_2_1_0(uint64 instruction
)
764 value
|= extract_bits(instruction
, 0, 5);
769 uint64
NMD::extr_shiftxil7il1bs4Fmsb4(uint64 instruction
)
772 value
|= extract_bits(instruction
, 7, 4) << 1;
777 uint64
NMD::extract_hint_25_24_23_22_21(uint64 instruction
)
780 value
|= extract_bits(instruction
, 21, 5);
785 uint64
NMD::extract_count3_14_13_12(uint64 instruction
)
788 value
|= extract_bits(instruction
, 12, 3);
793 int64
NMD::extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(uint64 instruction
)
796 value
|= extract_bits(instruction
, 0, 1) << 31;
797 value
|= extract_bits(instruction
, 2, 10) << 21;
798 value
|= extract_bits(instruction
, 12, 9) << 12;
799 value
= sign_extend(value
, 31);
804 int64
NMD::extr_sil0il7bs1_il1il1bs6Tmsb7(uint64 instruction
)
807 value
|= extract_bits(instruction
, 0, 1) << 7;
808 value
|= extract_bits(instruction
, 1, 6) << 1;
809 value
= sign_extend(value
, 7);
814 uint64
NMD::extract_u2_10_9(uint64 instruction
)
817 value
|= extract_bits(instruction
, 9, 2);
822 uint64
NMD::extract_code_25_24_23_22_21_20_19_18_17_16(uint64 instruction
)
825 value
|= extract_bits(instruction
, 16, 10);
830 uint64
NMD::extract_rs_20_19_18_17_16(uint64 instruction
)
833 value
|= extract_bits(instruction
, 16, 5);
838 uint64
NMD::extr_uil1il1bs2Fmsb2(uint64 instruction
)
841 value
|= extract_bits(instruction
, 1, 2) << 1;
846 uint64
NMD::extract_stripe_6(uint64 instruction
)
849 value
|= extract_bits(instruction
, 6, 1);
854 uint64
NMD::extr_xil17il0bs1Fmsb0(uint64 instruction
)
857 value
|= extract_bits(instruction
, 17, 1);
862 uint64
NMD::extr_xil2il0bs1_il15il0bs1Fmsb0(uint64 instruction
)
865 value
|= extract_bits(instruction
, 2, 1);
866 value
|= extract_bits(instruction
, 15, 1);
871 uint64
NMD::extract_ac_13_12(uint64 instruction
)
874 value
|= extract_bits(instruction
, 14, 2);
879 uint64
NMD::extract_shift_20_19_18_17_16(uint64 instruction
)
882 value
|= extract_bits(instruction
, 16, 5);
887 uint64
NMD::extract_rdl_25_24(uint64 instruction
)
890 value
|= extract_bits(instruction
, 24, 1);
895 int64
NMD::extr_sil0il10bs1_il1il1bs9Tmsb10(uint64 instruction
)
898 value
|= extract_bits(instruction
, 0, 1) << 10;
899 value
|= extract_bits(instruction
, 1, 9) << 1;
900 value
= sign_extend(value
, 10);
905 uint64
NMD::extract_eu_6_5_4_3_2_1_0(uint64 instruction
)
908 value
|= extract_bits(instruction
, 0, 7);
913 uint64
NMD::extract_shift_5_4_3_2_1_0(uint64 instruction
)
916 value
|= extract_bits(instruction
, 0, 6);
921 uint64
NMD::extr_xil10il0bs6Fmsb5(uint64 instruction
)
924 value
|= extract_bits(instruction
, 10, 6);
929 uint64
NMD::extract_count_19_18_17_16(uint64 instruction
)
932 value
|= extract_bits(instruction
, 16, 4);
937 uint64
NMD::extract_code_2_1_0(uint64 instruction
)
940 value
|= extract_bits(instruction
, 0, 3);
945 uint64
NMD::extr_xil10il0bs4_il22il0bs4Fmsb3(uint64 instruction
)
948 value
|= extract_bits(instruction
, 10, 4);
949 value
|= extract_bits(instruction
, 22, 4);
954 uint64
NMD::extract_u_11_10_9_8_7_6_5_4_3_2_1_0(uint64 instruction
)
957 value
|= extract_bits(instruction
, 0, 12);
962 uint64
NMD::extract_rs_4_3_2_1_0(uint64 instruction
)
965 value
|= extract_bits(instruction
, 0, 5);
970 uint64
NMD::extr_uil3il3bs18Fmsb20(uint64 instruction
)
973 value
|= extract_bits(instruction
, 3, 18) << 3;
978 uint64
NMD::extr_xil12il0bs1Fmsb0(uint64 instruction
)
981 value
|= extract_bits(instruction
, 12, 1);
986 uint64
NMD::extr_uil0il2bs4Fmsb5(uint64 instruction
)
989 value
|= extract_bits(instruction
, 0, 4) << 2;
994 uint64
NMD::extract_cofun_25_24_23(uint64 instruction
)
997 value
|= extract_bits(instruction
, 3, 23);
1002 uint64
NMD::extr_uil0il2bs3Fmsb4(uint64 instruction
)
1005 value
|= extract_bits(instruction
, 0, 3) << 2;
1010 uint64
NMD::extr_xil10il0bs1Fmsb0(uint64 instruction
)
1013 value
|= extract_bits(instruction
, 10, 1);
1018 uint64
NMD::extract_rd3_3_2_1(uint64 instruction
)
1021 value
|= extract_bits(instruction
, 1, 3);
1026 uint64
NMD::extract_sa_15_14_13_12(uint64 instruction
)
1029 value
|= extract_bits(instruction
, 12, 4);
1034 uint64
NMD::extract_rt_25_24_23_22_21(uint64 instruction
)
1037 value
|= extract_bits(instruction
, 21, 5);
1042 uint64
NMD::extract_ru_7_6_5_4_3(uint64 instruction
)
1045 value
|= extract_bits(instruction
, 3, 5);
1050 uint64
NMD::extr_xil21il0bs5Fmsb4(uint64 instruction
)
1053 value
|= extract_bits(instruction
, 21, 5);
1058 uint64
NMD::extr_xil9il0bs3Fmsb2(uint64 instruction
)
1061 value
|= extract_bits(instruction
, 9, 3);
1066 uint64
NMD::extract_u_17_to_0(uint64 instruction
)
1069 value
|= extract_bits(instruction
, 0, 18);
1074 uint64
NMD::extr_xil14il0bs1_il15il0bs1Fmsb0(uint64 instruction
)
1077 value
|= extract_bits(instruction
, 14, 1);
1078 value
|= extract_bits(instruction
, 15, 1);
1083 uint64
NMD::extract_rsz4_4_2_1_0(uint64 instruction
)
1086 value
|= extract_bits(instruction
, 0, 3);
1087 value
|= extract_bits(instruction
, 4, 1) << 3;
1092 uint64
NMD::extr_xil24il0bs1Fmsb0(uint64 instruction
)
1095 value
|= extract_bits(instruction
, 24, 1);
1100 int64
NMD::extr_sil0il21bs1_il1il1bs20Tmsb21(uint64 instruction
)
1103 value
|= extract_bits(instruction
, 0, 1) << 21;
1104 value
|= extract_bits(instruction
, 1, 20) << 1;
1105 value
= sign_extend(value
, 21);
1110 uint64
NMD::extract_op_25_to_3(uint64 instruction
)
1113 value
|= extract_bits(instruction
, 3, 23);
1118 uint64
NMD::extract_rs4_4_2_1_0(uint64 instruction
)
1121 value
|= extract_bits(instruction
, 0, 3);
1122 value
|= extract_bits(instruction
, 4, 1) << 3;
1127 uint64
NMD::extract_bit_23_22_21(uint64 instruction
)
1130 value
|= extract_bits(instruction
, 21, 3);
1135 uint64
NMD::extract_rt_41_40_39_38_37(uint64 instruction
)
1138 value
|= extract_bits(instruction
, 37, 5);
1143 int64
NMD::extract_shift_21_20_19_18_17_16(uint64 instruction
)
1146 value
|= extract_bits(instruction
, 16, 6);
1147 value
= sign_extend(value
, 5);
1152 uint64
NMD::extr_xil6il0bs3_il10il0bs1Fmsb2(uint64 instruction
)
1155 value
|= extract_bits(instruction
, 6, 3);
1156 value
|= extract_bits(instruction
, 10, 1);
1161 uint64
NMD::extract_rd2_3_8(uint64 instruction
)
1164 value
|= extract_bits(instruction
, 3, 1) << 1;
1165 value
|= extract_bits(instruction
, 8, 1);
1170 uint64
NMD::extr_xil16il0bs5Fmsb4(uint64 instruction
)
1173 value
|= extract_bits(instruction
, 16, 5);
1178 uint64
NMD::extract_code_17_to_0(uint64 instruction
)
1181 value
|= extract_bits(instruction
, 0, 18);
1186 uint64
NMD::extr_xil0il0bs12Fmsb11(uint64 instruction
)
1189 value
|= extract_bits(instruction
, 0, 12);
1194 uint64
NMD::extract_size_20_19_18_17_16(uint64 instruction
)
1197 value
|= extract_bits(instruction
, 16, 5);
1202 int64
NMD::extr_sil2il2bs6_il15il8bs1Tmsb8(uint64 instruction
)
1205 value
|= extract_bits(instruction
, 2, 6) << 2;
1206 value
|= extract_bits(instruction
, 15, 1) << 8;
1207 value
= sign_extend(value
, 8);
1212 uint64
NMD::extract_u_15_to_0(uint64 instruction
)
1215 value
|= extract_bits(instruction
, 0, 16);
1220 uint64
NMD::extract_fs_15_14_13_12_11(uint64 instruction
)
1223 value
|= extract_bits(instruction
, 16, 5);
1228 int64
NMD::extr_sil0il0bs8_il15il8bs1Tmsb8(uint64 instruction
)
1231 value
|= extract_bits(instruction
, 0, 8);
1232 value
|= extract_bits(instruction
, 15, 1) << 8;
1233 value
= sign_extend(value
, 8);
1238 uint64
NMD::extract_stype_20_19_18_17_16(uint64 instruction
)
1241 value
|= extract_bits(instruction
, 16, 5);
1246 uint64
NMD::extract_rtl_11(uint64 instruction
)
1249 value
|= extract_bits(instruction
, 9, 1);
1254 uint64
NMD::extract_hs_20_19_18_17_16(uint64 instruction
)
1257 value
|= extract_bits(instruction
, 16, 5);
1262 uint64
NMD::extr_xil10il0bs1_il14il0bs2Fmsb1(uint64 instruction
)
1265 value
|= extract_bits(instruction
, 10, 1);
1266 value
|= extract_bits(instruction
, 14, 2);
1271 uint64
NMD::extract_sel_13_12_11(uint64 instruction
)
1274 value
|= extract_bits(instruction
, 11, 3);
1279 uint64
NMD::extract_lsb_4_3_2_1_0(uint64 instruction
)
1282 value
|= extract_bits(instruction
, 0, 5);
1287 uint64
NMD::extr_xil14il0bs2Fmsb1(uint64 instruction
)
1290 value
|= extract_bits(instruction
, 14, 2);
1295 uint64
NMD::extract_gp_2(uint64 instruction
)
1298 value
|= extract_bits(instruction
, 2, 1);
1303 uint64
NMD::extract_rt3_9_8_7(uint64 instruction
)
1306 value
|= extract_bits(instruction
, 7, 3);
1311 uint64
NMD::extract_ft_20_19_18_17_16(uint64 instruction
)
1314 value
|= extract_bits(instruction
, 21, 5);
1319 uint64
NMD::extract_u_17_16_15_14_13_12_11(uint64 instruction
)
1322 value
|= extract_bits(instruction
, 11, 7);
1327 uint64
NMD::extract_cs_20_19_18_17_16(uint64 instruction
)
1330 value
|= extract_bits(instruction
, 16, 5);
1335 uint64
NMD::extr_xil16il0bs10Fmsb9(uint64 instruction
)
1338 value
|= extract_bits(instruction
, 16, 10);
1343 uint64
NMD::extract_rt4_9_7_6_5(uint64 instruction
)
1346 value
|= extract_bits(instruction
, 5, 3);
1347 value
|= extract_bits(instruction
, 9, 1) << 3;
1352 uint64
NMD::extract_msbt_10_9_8_7_6(uint64 instruction
)
1355 value
|= extract_bits(instruction
, 6, 5);
1360 uint64
NMD::extr_uil0il2bs6Fmsb7(uint64 instruction
)
1363 value
|= extract_bits(instruction
, 0, 6) << 2;
1368 uint64
NMD::extr_xil17il0bs9Fmsb8(uint64 instruction
)
1371 value
|= extract_bits(instruction
, 17, 9);
1376 uint64
NMD::extract_sa_15_14_13(uint64 instruction
)
1379 value
|= extract_bits(instruction
, 13, 3);
1384 int64
NMD::extr_sil0il14bs1_il1il1bs13Tmsb14(uint64 instruction
)
1387 value
|= extract_bits(instruction
, 0, 1) << 14;
1388 value
|= extract_bits(instruction
, 1, 13) << 1;
1389 value
= sign_extend(value
, 14);
1394 uint64
NMD::extract_rs3_6_5_4(uint64 instruction
)
1397 value
|= extract_bits(instruction
, 4, 3);
1402 uint64
NMD::extr_uil0il32bs32Fmsb63(uint64 instruction
)
1405 value
|= extract_bits(instruction
, 0, 32) << 32;
1410 uint64
NMD::extract_shift_10_9_8_7_6(uint64 instruction
)
1413 value
|= extract_bits(instruction
, 6, 5);
1418 uint64
NMD::extract_cs_25_24_23_22_21(uint64 instruction
)
1421 value
|= extract_bits(instruction
, 21, 5);
1426 uint64
NMD::extract_shiftx_11_10_9_8_7_6(uint64 instruction
)
1429 value
|= extract_bits(instruction
, 6, 6);
1434 uint64
NMD::extract_rt_9_8_7_6_5(uint64 instruction
)
1437 value
|= extract_bits(instruction
, 5, 5);
1442 uint64
NMD::extract_op_25_24_23_22_21(uint64 instruction
)
1445 value
|= extract_bits(instruction
, 21, 5);
1450 uint64
NMD::extr_uil0il2bs7Fmsb8(uint64 instruction
)
1453 value
|= extract_bits(instruction
, 0, 7) << 2;
1458 uint64
NMD::extract_bit_16_15_14_13_12_11(uint64 instruction
)
1461 value
|= extract_bits(instruction
, 11, 6);
1466 uint64
NMD::extr_xil10il0bs1_il11il0bs5Fmsb4(uint64 instruction
)
1469 value
|= extract_bits(instruction
, 10, 1);
1470 value
|= extract_bits(instruction
, 11, 5);
1475 uint64
NMD::extract_mask_20_19_18_17_16_15_14(uint64 instruction
)
1478 value
|= extract_bits(instruction
, 14, 7);
1483 uint64
NMD::extract_eu_3_2_1_0(uint64 instruction
)
1486 value
|= extract_bits(instruction
, 0, 4);
1491 uint64
NMD::extr_uil4il4bs4Fmsb7(uint64 instruction
)
1494 value
|= extract_bits(instruction
, 4, 4) << 4;
1499 int64
NMD::extr_sil3il3bs5_il15il8bs1Tmsb8(uint64 instruction
)
1502 value
|= extract_bits(instruction
, 3, 5) << 3;
1503 value
|= extract_bits(instruction
, 15, 1) << 8;
1504 value
= sign_extend(value
, 8);
1509 uint64
NMD::extract_ft_15_14_13_12_11(uint64 instruction
)
1512 value
|= extract_bits(instruction
, 11, 5);
1517 int64
NMD::extr_sil0il16bs16_il16il0bs16Tmsb31(uint64 instruction
)
1520 value
|= extract_bits(instruction
, 0, 16) << 16;
1521 value
|= extract_bits(instruction
, 16, 16);
1522 value
= sign_extend(value
, 31);
1527 uint64
NMD::extract_u_20_19_18_17_16_15_14_13(uint64 instruction
)
1530 value
|= extract_bits(instruction
, 13, 8);
1535 uint64
NMD::extr_xil15il0bs1Fmsb0(uint64 instruction
)
1538 value
|= extract_bits(instruction
, 15, 1);
1543 uint64
NMD::extr_xil11il0bs5Fmsb4(uint64 instruction
)
1546 value
|= extract_bits(instruction
, 11, 5);
1551 uint64
NMD::extr_uil2il2bs16Fmsb17(uint64 instruction
)
1554 value
|= extract_bits(instruction
, 2, 16) << 2;
1559 uint64
NMD::extract_rd_20_19_18_17_16(uint64 instruction
)
1562 value
|= extract_bits(instruction
, 11, 5);
1567 uint64
NMD::extract_c0s_20_19_18_17_16(uint64 instruction
)
1570 value
|= extract_bits(instruction
, 16, 5);
1575 uint64
NMD::extract_code_1_0(uint64 instruction
)
1578 value
|= extract_bits(instruction
, 0, 2);
1583 int64
NMD::extr_sil0il25bs1_il1il1bs24Tmsb25(uint64 instruction
)
1586 value
|= extract_bits(instruction
, 0, 1) << 25;
1587 value
|= extract_bits(instruction
, 1, 24) << 1;
1588 value
= sign_extend(value
, 25);
1593 uint64
NMD::extr_xil0il0bs3_il4il0bs1Fmsb2(uint64 instruction
)
1596 value
|= extract_bits(instruction
, 0, 3);
1597 value
|= extract_bits(instruction
, 4, 1);
1602 uint64
NMD::extract_u_1_0(uint64 instruction
)
1605 value
|= extract_bits(instruction
, 0, 2);
1610 uint64
NMD::extr_uil3il3bs1_il8il2bs1Fmsb3(uint64 instruction
)
1613 value
|= extract_bits(instruction
, 3, 1) << 3;
1614 value
|= extract_bits(instruction
, 8, 1) << 2;
1619 uint64
NMD::extr_xil9il0bs3_il16il0bs5Fmsb4(uint64 instruction
)
1622 value
|= extract_bits(instruction
, 9, 3);
1623 value
|= extract_bits(instruction
, 16, 5);
1628 uint64
NMD::extract_fd_10_9_8_7_6(uint64 instruction
)
1631 value
|= extract_bits(instruction
, 11, 5);
1636 uint64
NMD::extr_xil6il0bs3Fmsb2(uint64 instruction
)
1639 value
|= extract_bits(instruction
, 6, 3);
1644 uint64
NMD::extr_uil0il2bs5Fmsb6(uint64 instruction
)
1647 value
|= extract_bits(instruction
, 0, 5) << 2;
1652 uint64
NMD::extract_rtz4_9_7_6_5(uint64 instruction
)
1655 value
|= extract_bits(instruction
, 5, 3);
1656 value
|= extract_bits(instruction
, 9, 1) << 3;
1661 uint64
NMD::extract_sel_15_14_13_12_11(uint64 instruction
)
1664 value
|= extract_bits(instruction
, 11, 5);
1669 uint64
NMD::extract_ct_25_24_23_22_21(uint64 instruction
)
1672 value
|= extract_bits(instruction
, 21, 5);
1677 uint64
NMD::extr_xil11il0bs1Fmsb0(uint64 instruction
)
1680 value
|= extract_bits(instruction
, 11, 1);
1685 uint64
NMD::extr_uil2il2bs19Fmsb20(uint64 instruction
)
1688 value
|= extract_bits(instruction
, 2, 19) << 2;
1693 int64
NMD::extract_s_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::extr_uil0il1bs4Fmsb4(uint64 instruction
)
1706 value
|= extract_bits(instruction
, 0, 4) << 1;
1711 uint64
NMD::extr_xil9il0bs2Fmsb1(uint64 instruction
)
1714 value
|= extract_bits(instruction
, 9, 2);
1720 bool NMD::ADDIU_32__cond(uint64 instruction
)
1722 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1727 bool NMD::ADDIU_RS5__cond(uint64 instruction
)
1729 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1734 bool NMD::BALRSC_cond(uint64 instruction
)
1736 uint64 rt
= extract_rt_25_24_23_22_21(instruction
);
1741 bool NMD::BEQC_16__cond(uint64 instruction
)
1743 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1744 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1745 uint64 u
= extr_uil0il1bs4Fmsb4(instruction
);
1746 return rs3
< rt3
&& u
!= 0;
1750 bool NMD::BNEC_16__cond(uint64 instruction
)
1752 uint64 rs3
= extract_rs3_6_5_4(instruction
);
1753 uint64 rt3
= extract_rt3_9_8_7(instruction
);
1754 uint64 u
= extr_uil0il1bs4Fmsb4(instruction
);
1755 return rs3
>= rt3
&& u
!= 0;
1759 bool NMD::MOVE_cond(uint64 instruction
)
1761 uint64 rt
= extract_rt_9_8_7_6_5(instruction
);
1766 bool NMD::P16_BR1_cond(uint64 instruction
)
1768 uint64 u
= extr_uil0il1bs4Fmsb4(instruction
);
1773 bool NMD::PREF_S9__cond(uint64 instruction
)
1775 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1780 bool NMD::PREFE_cond(uint64 instruction
)
1782 uint64 hint
= extract_hint_25_24_23_22_21(instruction
);
1787 bool NMD::SLTU_cond(uint64 instruction
)
1789 uint64 rd
= extract_rd_20_19_18_17_16(instruction
);
1796 * ABS.D fd, fs - Floating Point Absolute Value
1799 * 10987654321098765432109876543210
1800 * 010001 00000 000101
1805 std::string
NMD::ABS_D(uint64 instruction
)
1807 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
1808 uint64 fd_value
= extract_ft_20_19_18_17_16(instruction
);
1810 std::string fs
= FPR(copy(fs_value
));
1811 std::string fd
= FPR(copy(fd_value
));
1813 return img::format("ABS.D %s, %s", fd
, fs
);
1818 * ABS.S fd, fs - Floating Point Absolute Value
1821 * 10987654321098765432109876543210
1822 * 010001 00000 000101
1827 std::string
NMD::ABS_S(uint64 instruction
)
1829 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
1830 uint64 fd_value
= extract_ft_20_19_18_17_16(instruction
);
1832 std::string fs
= FPR(copy(fs_value
));
1833 std::string fd
= FPR(copy(fd_value
));
1835 return img::format("ABS.S %s, %s", fd
, fs
);
1840 * ABSQ_S.PH rt, rs - Find Absolute Value of Two Fractional Halfwords
1843 * 10987654321098765432109876543210
1844 * 001000 0001000100111111
1848 std::string
NMD::ABSQ_S_PH(uint64 instruction
)
1850 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1851 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1853 std::string rt
= GPR(copy(rt_value
));
1854 std::string rs
= GPR(copy(rs_value
));
1856 return img::format("ABSQ_S.PH %s, %s", rt
, rs
);
1861 * ABSQ_S.QB rt, rs - Find Absolute Value of Four Fractional Byte Values
1864 * 10987654321098765432109876543210
1865 * 001000 0000000100111111
1869 std::string
NMD::ABSQ_S_QB(uint64 instruction
)
1871 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1872 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1874 std::string rt
= GPR(copy(rt_value
));
1875 std::string rs
= GPR(copy(rs_value
));
1877 return img::format("ABSQ_S.QB %s, %s", rt
, rs
);
1885 * 10987654321098765432109876543210
1886 * 001000 0010000100111111
1890 std::string
NMD::ABSQ_S_W(uint64 instruction
)
1892 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1893 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1895 std::string rt
= GPR(copy(rt_value
));
1896 std::string rs
= GPR(copy(rs_value
));
1898 return img::format("ABSQ_S.W %s, %s", rt
, rs
);
1906 * 10987654321098765432109876543210
1907 * 001000 0010000100111111
1911 std::string
NMD::ACLR(uint64 instruction
)
1913 uint64 bit_value
= extract_bit_23_22_21(instruction
);
1914 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
1915 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1917 std::string bit
= IMMEDIATE(copy(bit_value
));
1918 std::string s
= IMMEDIATE(copy(s_value
));
1919 std::string rs
= GPR(copy(rs_value
));
1921 return img::format("ACLR %s, %s(%s)", bit
, s
, rs
);
1929 * 10987654321098765432109876543210
1930 * 001000 0010000100111111
1934 std::string
NMD::ADD(uint64 instruction
)
1936 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
1937 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
1938 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
1940 std::string rd
= GPR(copy(rd_value
));
1941 std::string rs
= GPR(copy(rs_value
));
1942 std::string rt
= GPR(copy(rt_value
));
1944 return img::format("ADD %s, %s, %s", rd
, rs
, rt
);
1949 * ADD.D fd, fs, ft - Floating Point Add
1952 * 10987654321098765432109876543210
1959 std::string
NMD::ADD_D(uint64 instruction
)
1961 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
1962 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
1963 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
1965 std::string ft
= FPR(copy(ft_value
));
1966 std::string fs
= FPR(copy(fs_value
));
1967 std::string fd
= FPR(copy(fd_value
));
1969 return img::format("ADD.D %s, %s, %s", fd
, fs
, ft
);
1974 * ADD.S fd, fs, ft - Floating Point Add
1977 * 10987654321098765432109876543210
1984 std::string
NMD::ADD_S(uint64 instruction
)
1986 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
1987 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
1988 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
1990 std::string ft
= FPR(copy(ft_value
));
1991 std::string fs
= FPR(copy(fs_value
));
1992 std::string fd
= FPR(copy(fd_value
));
1994 return img::format("ADD.S %s, %s, %s", fd
, fs
, ft
);
2002 * 10987654321098765432109876543210
2003 * 001000 0010000100111111
2007 std::string
NMD::ADDIU_32_(uint64 instruction
)
2009 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2010 uint64 u_value
= extract_u_15_to_0(instruction
);
2011 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2013 std::string rt
= GPR(copy(rt_value
));
2014 std::string rs
= GPR(copy(rs_value
));
2015 std::string u
= IMMEDIATE(copy(u_value
));
2017 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
2025 * 10987654321098765432109876543210
2026 * 001000 0010000100111111
2030 std::string
NMD::ADDIU_48_(uint64 instruction
)
2032 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2033 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
2035 std::string rt
= GPR(copy(rt_value
));
2036 std::string s
= IMMEDIATE(copy(s_value
));
2038 return img::format("ADDIU %s, %s", rt
, s
);
2046 * 10987654321098765432109876543210
2047 * 001000 0010000100111111
2051 std::string
NMD::ADDIU_GP48_(uint64 instruction
)
2053 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2054 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
2056 std::string rt
= GPR(copy(rt_value
));
2057 std::string s
= IMMEDIATE(copy(s_value
));
2059 return img::format("ADDIU %s, $%d, %s", rt
, 28, s
);
2067 * 10987654321098765432109876543210
2068 * 001000 0010000100111111
2072 std::string
NMD::ADDIU_GP_B_(uint64 instruction
)
2074 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2075 uint64 u_value
= extract_u_17_to_0(instruction
);
2077 std::string rt
= GPR(copy(rt_value
));
2078 std::string u
= IMMEDIATE(copy(u_value
));
2080 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
2088 * 10987654321098765432109876543210
2089 * 001000 0010000100111111
2093 std::string
NMD::ADDIU_GP_W_(uint64 instruction
)
2095 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2096 uint64 u_value
= extr_uil2il2bs19Fmsb20(instruction
);
2098 std::string rt
= GPR(copy(rt_value
));
2099 std::string u
= IMMEDIATE(copy(u_value
));
2101 return img::format("ADDIU %s, $%d, %s", rt
, 28, u
);
2109 * 10987654321098765432109876543210
2110 * 001000 0010000100111111
2114 std::string
NMD::ADDIU_NEG_(uint64 instruction
)
2116 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2117 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
2118 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2120 std::string rt
= GPR(copy(rt_value
));
2121 std::string rs
= GPR(copy(rs_value
));
2122 std::string u
= IMMEDIATE(neg_copy(u_value
));
2124 return img::format("ADDIU %s, %s, %s", rt
, rs
, u
);
2132 * 10987654321098765432109876543210
2133 * 001000 0010000100111111
2137 std::string
NMD::ADDIU_R1_SP_(uint64 instruction
)
2139 uint64 u_value
= extr_uil0il2bs6Fmsb7(instruction
);
2140 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2142 std::string rt3
= GPR(encode_gpr3(rt3_value
));
2143 std::string u
= IMMEDIATE(copy(u_value
));
2145 return img::format("ADDIU %s, $%d, %s", rt3
, 29, u
);
2153 * 10987654321098765432109876543210
2154 * 001000 0010000100111111
2158 std::string
NMD::ADDIU_R2_(uint64 instruction
)
2160 uint64 u_value
= extr_uil0il2bs3Fmsb4(instruction
);
2161 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2162 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2164 std::string rt3
= GPR(encode_gpr3(rt3_value
));
2165 std::string rs3
= GPR(encode_gpr3(rs3_value
));
2166 std::string u
= IMMEDIATE(copy(u_value
));
2168 return img::format("ADDIU %s, %s, %s", rt3
, rs3
, u
);
2173 * ADDIU[RS5] rt, s5 - Add Signed Word and Set Carry Bit
2180 std::string
NMD::ADDIU_RS5_(uint64 instruction
)
2182 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
2183 int64 s_value
= extract_s_4_2_1_0(instruction
);
2185 std::string rt
= GPR(copy(rt_value
));
2186 std::string s
= IMMEDIATE(copy(s_value
));
2188 return img::format("ADDIU %s, %s", rt
, s
);
2196 * 10987654321098765432109876543210
2197 * 001000 x1110000101
2202 std::string
NMD::ADDIUPC_32_(uint64 instruction
)
2204 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2205 int64 s_value
= extr_sil0il21bs1_il1il1bs20Tmsb21(instruction
);
2207 std::string rt
= GPR(copy(rt_value
));
2208 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2210 return img::format("ADDIUPC %s, %s", rt
, s
);
2218 * 10987654321098765432109876543210
2219 * 001000 x1110000101
2224 std::string
NMD::ADDIUPC_48_(uint64 instruction
)
2226 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
2227 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
2229 std::string rt
= GPR(copy(rt_value
));
2230 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
2232 return img::format("ADDIUPC %s, %s", rt
, s
);
2237 * ADDQ.PH rd, rt, rs - Add Fractional Halfword Vectors
2240 * 10987654321098765432109876543210
2241 * 001000 00000001101
2246 std::string
NMD::ADDQ_PH(uint64 instruction
)
2248 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2249 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2250 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2252 std::string rd
= GPR(copy(rd_value
));
2253 std::string rs
= GPR(copy(rs_value
));
2254 std::string rt
= GPR(copy(rt_value
));
2256 return img::format("ADDQ.PH %s, %s, %s", rd
, rs
, rt
);
2261 * ADDQ_S.PH rd, rt, rs - Add Fractional Halfword Vectors
2264 * 10987654321098765432109876543210
2265 * 001000 10000001101
2270 std::string
NMD::ADDQ_S_PH(uint64 instruction
)
2272 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2273 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2274 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2276 std::string rd
= GPR(copy(rd_value
));
2277 std::string rs
= GPR(copy(rs_value
));
2278 std::string rt
= GPR(copy(rt_value
));
2280 return img::format("ADDQ_S.PH %s, %s, %s", rd
, rs
, rt
);
2285 * ADDQ_S.W rd, rt, rs - Add Fractional Words
2288 * 10987654321098765432109876543210
2289 * 001000 x1100000101
2294 std::string
NMD::ADDQ_S_W(uint64 instruction
)
2296 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2297 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2298 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2300 std::string rd
= GPR(copy(rd_value
));
2301 std::string rs
= GPR(copy(rs_value
));
2302 std::string rt
= GPR(copy(rt_value
));
2304 return img::format("ADDQ_S.W %s, %s, %s", rd
, rs
, rt
);
2309 * ADDQH.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2313 * 10987654321098765432109876543210
2314 * 001000 00001001101
2319 std::string
NMD::ADDQH_PH(uint64 instruction
)
2321 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2322 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2323 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2325 std::string rd
= GPR(copy(rd_value
));
2326 std::string rs
= GPR(copy(rs_value
));
2327 std::string rt
= GPR(copy(rt_value
));
2329 return img::format("ADDQH.PH %s, %s, %s", rd
, rs
, rt
);
2334 * ADDQH_R.PH rd, rt, rs - Add Fractional Halfword Vectors And Shift Right
2338 * 10987654321098765432109876543210
2339 * 001000 10001001101
2344 std::string
NMD::ADDQH_R_PH(uint64 instruction
)
2346 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2347 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2348 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2350 std::string rd
= GPR(copy(rd_value
));
2351 std::string rs
= GPR(copy(rs_value
));
2352 std::string rt
= GPR(copy(rt_value
));
2354 return img::format("ADDQH_R.PH %s, %s, %s", rd
, rs
, rt
);
2359 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2362 * 10987654321098765432109876543210
2363 * 001000 00010001101
2368 std::string
NMD::ADDQH_R_W(uint64 instruction
)
2370 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2371 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2372 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2374 std::string rd
= GPR(copy(rd_value
));
2375 std::string rs
= GPR(copy(rs_value
));
2376 std::string rt
= GPR(copy(rt_value
));
2378 return img::format("ADDQH_R.W %s, %s, %s", rd
, rs
, rt
);
2383 * ADDQH.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
2386 * 10987654321098765432109876543210
2387 * 001000 10010001101
2392 std::string
NMD::ADDQH_W(uint64 instruction
)
2394 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2395 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2396 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2398 std::string rd
= GPR(copy(rd_value
));
2399 std::string rs
= GPR(copy(rs_value
));
2400 std::string rt
= GPR(copy(rt_value
));
2402 return img::format("ADDQH.W %s, %s, %s", rd
, rs
, rt
);
2407 * ADDSC rd, rt, rs - Add Signed Word and Set Carry Bit
2410 * 10987654321098765432109876543210
2411 * 001000 x1110000101
2416 std::string
NMD::ADDSC(uint64 instruction
)
2418 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2419 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2420 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2422 std::string rd
= GPR(copy(rd_value
));
2423 std::string rs
= GPR(copy(rs_value
));
2424 std::string rt
= GPR(copy(rt_value
));
2426 return img::format("ADDSC %s, %s, %s", rd
, rs
, rt
);
2431 * ADDU[16] rd3, rs3, rt3 -
2439 std::string
NMD::ADDU_16_(uint64 instruction
)
2441 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2442 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2443 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
2445 std::string rt3
= GPR(encode_gpr3(rt3_value
));
2446 std::string rs3
= GPR(encode_gpr3(rs3_value
));
2447 std::string rd3
= GPR(encode_gpr3(rd3_value
));
2449 return img::format("ADDU %s, %s, %s", rd3
, rs3
, rt3
);
2457 * 10987654321098765432109876543210
2458 * 001000 x1110000101
2463 std::string
NMD::ADDU_32_(uint64 instruction
)
2465 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2466 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2467 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2469 std::string rd
= GPR(copy(rd_value
));
2470 std::string rs
= GPR(copy(rs_value
));
2471 std::string rt
= GPR(copy(rt_value
));
2473 return img::format("ADDU %s, %s, %s", rd
, rs
, rt
);
2481 * 10987654321098765432109876543210
2482 * 001000 x1110000101
2487 std::string
NMD::ADDU_4X4_(uint64 instruction
)
2489 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
2490 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
2492 std::string rs4
= GPR(encode_gpr4(rs4_value
));
2493 std::string rt4
= GPR(encode_gpr4(rt4_value
));
2495 return img::format("ADDU %s, %s", rs4
, rt4
);
2500 * ADDU.PH rd, rt, rs - Unsigned Add Integer Halfwords
2503 * 10987654321098765432109876543210
2504 * 001000 00100001101
2509 std::string
NMD::ADDU_PH(uint64 instruction
)
2511 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2512 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2513 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2515 std::string rd
= GPR(copy(rd_value
));
2516 std::string rs
= GPR(copy(rs_value
));
2517 std::string rt
= GPR(copy(rt_value
));
2519 return img::format("ADDU.PH %s, %s, %s", rd
, rs
, rt
);
2524 * ADDU.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2527 * 10987654321098765432109876543210
2528 * 001000 00011001101
2533 std::string
NMD::ADDU_QB(uint64 instruction
)
2535 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2536 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2537 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2539 std::string rd
= GPR(copy(rd_value
));
2540 std::string rs
= GPR(copy(rs_value
));
2541 std::string rt
= GPR(copy(rt_value
));
2543 return img::format("ADDU.QB %s, %s, %s", rd
, rs
, rt
);
2548 * ADDU_S.PH rd, rt, rs - Unsigned Add Integer Halfwords
2551 * 10987654321098765432109876543210
2552 * 001000 10100001101
2557 std::string
NMD::ADDU_S_PH(uint64 instruction
)
2559 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2560 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2561 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2563 std::string rd
= GPR(copy(rd_value
));
2564 std::string rs
= GPR(copy(rs_value
));
2565 std::string rt
= GPR(copy(rt_value
));
2567 return img::format("ADDU_S.PH %s, %s, %s", rd
, rs
, rt
);
2572 * ADDU_S.QB rd, rt, rs - Unsigned Add Quad Byte Vectors
2575 * 10987654321098765432109876543210
2576 * 001000 10011001101
2581 std::string
NMD::ADDU_S_QB(uint64 instruction
)
2583 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2584 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2585 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2587 std::string rd
= GPR(copy(rd_value
));
2588 std::string rs
= GPR(copy(rs_value
));
2589 std::string rt
= GPR(copy(rt_value
));
2591 return img::format("ADDU_S.QB %s, %s, %s", rd
, rs
, rt
);
2596 * ADDUH.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2600 * 10987654321098765432109876543210
2601 * 001000 00101001101
2606 std::string
NMD::ADDUH_QB(uint64 instruction
)
2608 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2609 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2610 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2612 std::string rd
= GPR(copy(rd_value
));
2613 std::string rs
= GPR(copy(rs_value
));
2614 std::string rt
= GPR(copy(rt_value
));
2616 return img::format("ADDUH.QB %s, %s, %s", rd
, rs
, rt
);
2621 * ADDUH_R.QB rd, rt, rs - Unsigned Add Vector Quad-Bytes And Right Shift
2625 * 10987654321098765432109876543210
2626 * 001000 10101001101
2631 std::string
NMD::ADDUH_R_QB(uint64 instruction
)
2633 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2634 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2635 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2637 std::string rd
= GPR(copy(rd_value
));
2638 std::string rs
= GPR(copy(rs_value
));
2639 std::string rt
= GPR(copy(rt_value
));
2641 return img::format("ADDUH_R.QB %s, %s, %s", rd
, rs
, rt
);
2645 * ADDWC rd, rt, rs - Add Word with Carry Bit
2648 * 10987654321098765432109876543210
2649 * 001000 x1111000101
2654 std::string
NMD::ADDWC(uint64 instruction
)
2656 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2657 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2658 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2660 std::string rd
= GPR(copy(rd_value
));
2661 std::string rs
= GPR(copy(rs_value
));
2662 std::string rt
= GPR(copy(rt_value
));
2664 return img::format("ADDWC %s, %s, %s", rd
, rs
, rt
);
2672 * 10987654321098765432109876543210
2673 * 001000 x1110000101
2678 std::string
NMD::ALUIPC(uint64 instruction
)
2680 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2681 int64 s_value
= extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(instruction
);
2683 std::string rt
= GPR(copy(rt_value
));
2684 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2686 return img::format("ALUIPC %s, %%pcrel_hi(%s)", rt
, s
);
2691 * AND[16] rt3, rs3 -
2699 std::string
NMD::AND_16_(uint64 instruction
)
2701 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2702 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2704 std::string rt3
= GPR(encode_gpr3(rt3_value
));
2705 std::string rs3
= GPR(encode_gpr3(rs3_value
));
2707 return img::format("AND %s, %s", rs3
, rt3
);
2715 * 10987654321098765432109876543210
2716 * 001000 x1110000101
2721 std::string
NMD::AND_32_(uint64 instruction
)
2723 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2724 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
2725 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2727 std::string rd
= GPR(copy(rd_value
));
2728 std::string rs
= GPR(copy(rs_value
));
2729 std::string rt
= GPR(copy(rt_value
));
2731 return img::format("AND %s, %s, %s", rd
, rs
, rt
);
2744 std::string
NMD::ANDI_16_(uint64 instruction
)
2746 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
2747 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
2748 uint64 eu_value
= extract_eu_3_2_1_0(instruction
);
2750 std::string rt3
= GPR(encode_gpr3(rt3_value
));
2751 std::string rs3
= GPR(encode_gpr3(rs3_value
));
2752 std::string eu
= IMMEDIATE(encode_eu_from_u_andi16(eu_value
));
2754 return img::format("ANDI %s, %s, %s", rt3
, rs3
, eu
);
2762 * 10987654321098765432109876543210
2763 * 001000 x1110000101
2768 std::string
NMD::ANDI_32_(uint64 instruction
)
2770 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2771 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
2772 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2774 std::string rt
= GPR(copy(rt_value
));
2775 std::string rs
= GPR(copy(rs_value
));
2776 std::string u
= IMMEDIATE(copy(u_value
));
2778 return img::format("ANDI %s, %s, %s", rt
, rs
, u
);
2786 * 10987654321098765432109876543210
2787 * 001000 x1110000101
2792 std::string
NMD::APPEND(uint64 instruction
)
2794 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2795 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
2796 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2798 std::string rt
= GPR(copy(rt_value
));
2799 std::string rs
= GPR(copy(rs_value
));
2800 std::string sa
= IMMEDIATE(copy(sa_value
));
2802 return img::format("APPEND %s, %s, %s", rt
, rs
, sa
);
2810 * 10987654321098765432109876543210
2811 * 001000 x1110000101
2816 std::string
NMD::ASET(uint64 instruction
)
2818 uint64 bit_value
= extract_bit_23_22_21(instruction
);
2819 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
2820 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2822 std::string bit
= IMMEDIATE(copy(bit_value
));
2823 std::string s
= IMMEDIATE(copy(s_value
));
2824 std::string rs
= GPR(copy(rs_value
));
2826 return img::format("ASET %s, %s(%s)", bit
, s
, rs
);
2834 * 10987654321098765432109876543210
2835 * 001000 x1110000101
2840 std::string
NMD::BALC_16_(uint64 instruction
)
2842 int64 s_value
= extr_sil0il10bs1_il1il1bs9Tmsb10(instruction
);
2844 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2846 return img::format("BALC %s", s
);
2854 * 10987654321098765432109876543210
2855 * 001000 x1110000101
2860 std::string
NMD::BALC_32_(uint64 instruction
)
2862 int64 s_value
= extr_sil0il25bs1_il1il1bs24Tmsb25(instruction
);
2864 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2866 return img::format("BALC %s", s
);
2874 * 10987654321098765432109876543210
2875 * 001000 x1110000101
2880 std::string
NMD::BALRSC(uint64 instruction
)
2882 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2883 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
2885 std::string rt
= GPR(copy(rt_value
));
2886 std::string rs
= GPR(copy(rs_value
));
2888 return img::format("BALRSC %s, %s", rt
, rs
);
2896 * 10987654321098765432109876543210
2897 * 001000 x1110000101
2902 std::string
NMD::BBEQZC(uint64 instruction
)
2904 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2905 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2906 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
2908 std::string rt
= GPR(copy(rt_value
));
2909 std::string bit
= IMMEDIATE(copy(bit_value
));
2910 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2912 return img::format("BBEQZC %s, %s, %s", rt
, bit
, s
);
2920 * 10987654321098765432109876543210
2921 * 001000 x1110000101
2926 std::string
NMD::BBNEZC(uint64 instruction
)
2928 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
2929 uint64 bit_value
= extract_bit_16_15_14_13_12_11(instruction
);
2930 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
2932 std::string rt
= GPR(copy(rt_value
));
2933 std::string bit
= IMMEDIATE(copy(bit_value
));
2934 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2936 return img::format("BBNEZC %s, %s, %s", rt
, bit
, s
);
2944 * 10987654321098765432109876543210
2945 * 001000 x1110000101
2950 std::string
NMD::BC_16_(uint64 instruction
)
2952 int64 s_value
= extr_sil0il10bs1_il1il1bs9Tmsb10(instruction
);
2954 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
2956 return img::format("BC %s", s
);
2964 * 10987654321098765432109876543210
2965 * 001000 x1110000101
2970 std::string
NMD::BC_32_(uint64 instruction
)
2972 int64 s_value
= extr_sil0il25bs1_il1il1bs24Tmsb25(instruction
);
2974 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2976 return img::format("BC %s", s
);
2984 * 10987654321098765432109876543210
2985 * 001000 x1110000101
2990 std::string
NMD::BC1EQZC(uint64 instruction
)
2992 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
2993 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
2995 std::string ft
= FPR(copy(ft_value
));
2996 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
2998 return img::format("BC1EQZC %s, %s", ft
, s
);
3006 * 10987654321098765432109876543210
3007 * 001000 x1110000101
3012 std::string
NMD::BC1NEZC(uint64 instruction
)
3014 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3015 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3017 std::string ft
= FPR(copy(ft_value
));
3018 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3020 return img::format("BC1NEZC %s, %s", ft
, s
);
3028 * 10987654321098765432109876543210
3029 * 001000 x1110000101
3034 std::string
NMD::BC2EQZC(uint64 instruction
)
3036 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3037 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
3039 std::string ct
= CPR(copy(ct_value
));
3040 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3042 return img::format("BC2EQZC %s, %s", ct
, s
);
3050 * 10987654321098765432109876543210
3051 * 001000 x1110000101
3056 std::string
NMD::BC2NEZC(uint64 instruction
)
3058 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3059 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
3061 std::string ct
= CPR(copy(ct_value
));
3062 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3064 return img::format("BC2NEZC %s, %s", ct
, s
);
3072 * 10987654321098765432109876543210
3073 * 001000 x1110000101
3078 std::string
NMD::BEQC_16_(uint64 instruction
)
3080 uint64 u_value
= extr_uil0il1bs4Fmsb4(instruction
);
3081 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3082 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
3084 std::string rs3
= GPR(encode_rs3_and_check_rs3_lt_rt3(rs3_value
));
3085 std::string rt3
= GPR(encode_gpr3(rt3_value
));
3086 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
3088 return img::format("BEQC %s, %s, %s", rs3
, rt3
, u
);
3096 * 10987654321098765432109876543210
3097 * 001000 x1110000101
3102 std::string
NMD::BEQC_32_(uint64 instruction
)
3104 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3105 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3106 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3108 std::string rs
= GPR(copy(rs_value
));
3109 std::string rt
= GPR(copy(rt_value
));
3110 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3112 return img::format("BEQC %s, %s, %s", rs
, rt
, s
);
3120 * 10987654321098765432109876543210
3121 * 001000 x1110000101
3126 std::string
NMD::BEQIC(uint64 instruction
)
3128 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3129 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3130 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3132 std::string rt
= GPR(copy(rt_value
));
3133 std::string u
= IMMEDIATE(copy(u_value
));
3134 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3136 return img::format("BEQIC %s, %s, %s", rt
, u
, s
);
3144 * 10987654321098765432109876543210
3145 * 001000 x1110000101
3150 std::string
NMD::BEQZC_16_(uint64 instruction
)
3152 int64 s_value
= extr_sil0il7bs1_il1il1bs6Tmsb7(instruction
);
3153 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3155 std::string rt3
= GPR(encode_gpr3(rt3_value
));
3156 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3158 return img::format("BEQZC %s, %s", rt3
, s
);
3166 * 10987654321098765432109876543210
3167 * 001000 x1110000101
3172 std::string
NMD::BGEC(uint64 instruction
)
3174 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3175 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3176 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3178 std::string rs
= GPR(copy(rs_value
));
3179 std::string rt
= GPR(copy(rt_value
));
3180 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3182 return img::format("BGEC %s, %s, %s", rs
, rt
, s
);
3190 * 10987654321098765432109876543210
3191 * 001000 x1110000101
3196 std::string
NMD::BGEIC(uint64 instruction
)
3198 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3199 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3200 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3202 std::string rt
= GPR(copy(rt_value
));
3203 std::string u
= IMMEDIATE(copy(u_value
));
3204 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3206 return img::format("BGEIC %s, %s, %s", rt
, u
, s
);
3214 * 10987654321098765432109876543210
3215 * 001000 x1110000101
3220 std::string
NMD::BGEIUC(uint64 instruction
)
3222 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3223 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3224 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3226 std::string rt
= GPR(copy(rt_value
));
3227 std::string u
= IMMEDIATE(copy(u_value
));
3228 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3230 return img::format("BGEIUC %s, %s, %s", rt
, u
, s
);
3238 * 10987654321098765432109876543210
3239 * 001000 x1110000101
3244 std::string
NMD::BGEUC(uint64 instruction
)
3246 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3247 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3248 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3250 std::string rs
= GPR(copy(rs_value
));
3251 std::string rt
= GPR(copy(rt_value
));
3252 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3254 return img::format("BGEUC %s, %s, %s", rs
, rt
, s
);
3262 * 10987654321098765432109876543210
3263 * 001000 x1110000101
3268 std::string
NMD::BLTC(uint64 instruction
)
3270 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3271 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3272 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3274 std::string rs
= GPR(copy(rs_value
));
3275 std::string rt
= GPR(copy(rt_value
));
3276 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3278 return img::format("BLTC %s, %s, %s", rs
, rt
, s
);
3286 * 10987654321098765432109876543210
3287 * 001000 x1110000101
3292 std::string
NMD::BLTIC(uint64 instruction
)
3294 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3295 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3296 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3298 std::string rt
= GPR(copy(rt_value
));
3299 std::string u
= IMMEDIATE(copy(u_value
));
3300 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3302 return img::format("BLTIC %s, %s, %s", rt
, u
, s
);
3310 * 10987654321098765432109876543210
3311 * 001000 x1110000101
3316 std::string
NMD::BLTIUC(uint64 instruction
)
3318 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3319 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3320 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3322 std::string rt
= GPR(copy(rt_value
));
3323 std::string u
= IMMEDIATE(copy(u_value
));
3324 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3326 return img::format("BLTIUC %s, %s, %s", rt
, u
, s
);
3334 * 10987654321098765432109876543210
3335 * 001000 x1110000101
3340 std::string
NMD::BLTUC(uint64 instruction
)
3342 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3343 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3344 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3346 std::string rs
= GPR(copy(rs_value
));
3347 std::string rt
= GPR(copy(rt_value
));
3348 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3350 return img::format("BLTUC %s, %s, %s", rs
, rt
, s
);
3358 * 10987654321098765432109876543210
3359 * 001000 x1110000101
3364 std::string
NMD::BNEC_16_(uint64 instruction
)
3366 uint64 u_value
= extr_uil0il1bs4Fmsb4(instruction
);
3367 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3368 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
3370 std::string rs3
= GPR(encode_rs3_and_check_rs3_ge_rt3(rs3_value
));
3371 std::string rt3
= GPR(encode_gpr3(rt3_value
));
3372 std::string u
= ADDRESS(encode_u_from_address(u_value
), 2);
3374 return img::format("BNEC %s, %s, %s", rs3
, rt3
, u
);
3382 * 10987654321098765432109876543210
3383 * 001000 x1110000101
3388 std::string
NMD::BNEC_32_(uint64 instruction
)
3390 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3391 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3392 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3394 std::string rs
= GPR(copy(rs_value
));
3395 std::string rt
= GPR(copy(rt_value
));
3396 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3398 return img::format("BNEC %s, %s, %s", rs
, rt
, s
);
3406 * 10987654321098765432109876543210
3407 * 001000 x1110000101
3412 std::string
NMD::BNEIC(uint64 instruction
)
3414 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3415 int64 s_value
= extr_sil0il11bs1_il1il1bs10Tmsb11(instruction
);
3416 uint64 u_value
= extract_u_17_16_15_14_13_12_11(instruction
);
3418 std::string rt
= GPR(copy(rt_value
));
3419 std::string u
= IMMEDIATE(copy(u_value
));
3420 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3422 return img::format("BNEIC %s, %s, %s", rt
, u
, s
);
3430 * 10987654321098765432109876543210
3431 * 001000 x1110000101
3436 std::string
NMD::BNEZC_16_(uint64 instruction
)
3438 int64 s_value
= extr_sil0il7bs1_il1il1bs6Tmsb7(instruction
);
3439 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
3441 std::string rt3
= GPR(encode_gpr3(rt3_value
));
3442 std::string s
= ADDRESS(encode_s_from_address(s_value
), 2);
3444 return img::format("BNEZC %s, %s", rt3
, s
);
3452 * 10987654321098765432109876543210
3453 * 001000 x1110000101
3458 std::string
NMD::BPOSGE32C(uint64 instruction
)
3460 int64 s_value
= extr_sil0il14bs1_il1il1bs13Tmsb14(instruction
);
3462 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
3464 return img::format("BPOSGE32C %s", s
);
3472 * 10987654321098765432109876543210
3473 * 001000 x1110000101
3478 std::string
NMD::BREAK_16_(uint64 instruction
)
3480 uint64 code_value
= extract_code_2_1_0(instruction
);
3482 std::string code
= IMMEDIATE(copy(code_value
));
3484 return img::format("BREAK %s", code
);
3489 * BREAK code - Break. Cause a Breakpoint exception
3492 * 10987654321098765432109876543210
3493 * 001000 x1110000101
3498 std::string
NMD::BREAK_32_(uint64 instruction
)
3500 uint64 code_value
= extract_code_18_to_0(instruction
);
3502 std::string code
= IMMEDIATE(copy(code_value
));
3504 return img::format("BREAK %s", code
);
3512 * 10987654321098765432109876543210
3513 * 001000 x1110000101
3518 std::string
NMD::BRSC(uint64 instruction
)
3520 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3522 std::string rs
= GPR(copy(rs_value
));
3524 return img::format("BRSC %s", rs
);
3532 * 10987654321098765432109876543210
3533 * 001000 x1110000101
3538 std::string
NMD::CACHE(uint64 instruction
)
3540 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
3541 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3542 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3544 std::string op
= IMMEDIATE(copy(op_value
));
3545 std::string s
= IMMEDIATE(copy(s_value
));
3546 std::string rs
= GPR(copy(rs_value
));
3548 return img::format("CACHE %s, %s(%s)", op
, s
, rs
);
3556 * 10987654321098765432109876543210
3557 * 001000 x1110000101
3562 std::string
NMD::CACHEE(uint64 instruction
)
3564 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
3565 uint64 op_value
= extract_op_25_24_23_22_21(instruction
);
3566 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3568 std::string op
= IMMEDIATE(copy(op_value
));
3569 std::string s
= IMMEDIATE(copy(s_value
));
3570 std::string rs
= GPR(copy(rs_value
));
3572 return img::format("CACHEE %s, %s(%s)", op
, s
, rs
);
3580 * 10987654321098765432109876543210
3581 * 001000 x1110000101
3586 std::string
NMD::CEIL_L_D(uint64 instruction
)
3588 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3589 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3591 std::string ft
= FPR(copy(ft_value
));
3592 std::string fs
= FPR(copy(fs_value
));
3594 return img::format("CEIL.L.D %s, %s", ft
, fs
);
3602 * 10987654321098765432109876543210
3603 * 001000 x1110000101
3608 std::string
NMD::CEIL_L_S(uint64 instruction
)
3610 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3611 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3613 std::string ft
= FPR(copy(ft_value
));
3614 std::string fs
= FPR(copy(fs_value
));
3616 return img::format("CEIL.L.S %s, %s", ft
, fs
);
3624 * 10987654321098765432109876543210
3625 * 001000 x1110000101
3630 std::string
NMD::CEIL_W_D(uint64 instruction
)
3632 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3633 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3635 std::string ft
= FPR(copy(ft_value
));
3636 std::string fs
= FPR(copy(fs_value
));
3638 return img::format("CEIL.W.D %s, %s", ft
, fs
);
3646 * 10987654321098765432109876543210
3647 * 001000 x1110000101
3652 std::string
NMD::CEIL_W_S(uint64 instruction
)
3654 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3655 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3657 std::string ft
= FPR(copy(ft_value
));
3658 std::string fs
= FPR(copy(fs_value
));
3660 return img::format("CEIL.W.S %s, %s", ft
, fs
);
3668 * 10987654321098765432109876543210
3669 * 001000 x1110000101
3674 std::string
NMD::CFC1(uint64 instruction
)
3676 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3677 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3679 std::string rt
= GPR(copy(rt_value
));
3680 std::string cs
= CPR(copy(cs_value
));
3682 return img::format("CFC1 %s, %s", rt
, cs
);
3690 * 10987654321098765432109876543210
3691 * 001000 x1110000101
3696 std::string
NMD::CFC2(uint64 instruction
)
3698 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
3699 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3701 std::string rt
= GPR(copy(rt_value
));
3702 std::string cs
= CPR(copy(cs_value
));
3704 return img::format("CFC2 %s, %s", rt
, cs
);
3712 * 10987654321098765432109876543210
3713 * 001000 x1110000101
3718 std::string
NMD::CLASS_D(uint64 instruction
)
3720 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3721 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3723 std::string ft
= FPR(copy(ft_value
));
3724 std::string fs
= FPR(copy(fs_value
));
3726 return img::format("CLASS.D %s, %s", ft
, fs
);
3734 * 10987654321098765432109876543210
3735 * 001000 x1110000101
3740 std::string
NMD::CLASS_S(uint64 instruction
)
3742 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3743 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3745 std::string ft
= FPR(copy(ft_value
));
3746 std::string fs
= FPR(copy(fs_value
));
3748 return img::format("CLASS.S %s, %s", ft
, fs
);
3756 * 10987654321098765432109876543210
3757 * 001000 x1110000101
3762 std::string
NMD::CLO(uint64 instruction
)
3764 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3765 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3767 std::string rt
= GPR(copy(rt_value
));
3768 std::string rs
= GPR(copy(rs_value
));
3770 return img::format("CLO %s, %s", rt
, rs
);
3778 * 10987654321098765432109876543210
3779 * 001000 x1110000101
3784 std::string
NMD::CLZ(uint64 instruction
)
3786 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3787 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3789 std::string rt
= GPR(copy(rt_value
));
3790 std::string rs
= GPR(copy(rs_value
));
3792 return img::format("CLZ %s, %s", rt
, rs
);
3800 * 10987654321098765432109876543210
3801 * 001000 x1110000101
3806 std::string
NMD::CMP_AF_D(uint64 instruction
)
3808 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3809 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3810 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3812 std::string fd
= FPR(copy(fd_value
));
3813 std::string fs
= FPR(copy(fs_value
));
3814 std::string ft
= FPR(copy(ft_value
));
3816 return img::format("CMP.AF.D %s, %s, %s", fd
, fs
, ft
);
3824 * 10987654321098765432109876543210
3825 * 001000 x1110000101
3830 std::string
NMD::CMP_AF_S(uint64 instruction
)
3832 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3833 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3834 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3836 std::string fd
= FPR(copy(fd_value
));
3837 std::string fs
= FPR(copy(fs_value
));
3838 std::string ft
= FPR(copy(ft_value
));
3840 return img::format("CMP.AF.S %s, %s, %s", fd
, fs
, ft
);
3848 * 10987654321098765432109876543210
3849 * 001000 x1110000101
3854 std::string
NMD::CMP_EQ_D(uint64 instruction
)
3856 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3857 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3858 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3860 std::string fd
= FPR(copy(fd_value
));
3861 std::string fs
= FPR(copy(fs_value
));
3862 std::string ft
= FPR(copy(ft_value
));
3864 return img::format("CMP.EQ.D %s, %s, %s", fd
, fs
, ft
);
3872 * 10987654321098765432109876543210
3873 * 001000 x1110000101
3878 std::string
NMD::CMP_EQ_PH(uint64 instruction
)
3880 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3881 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3883 std::string rs
= GPR(copy(rs_value
));
3884 std::string rt
= GPR(copy(rt_value
));
3886 return img::format("CMP.EQ.PH %s, %s", rs
, rt
);
3894 * 10987654321098765432109876543210
3895 * 001000 x1110000101
3900 std::string
NMD::CMP_EQ_S(uint64 instruction
)
3902 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3903 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3904 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3906 std::string fd
= FPR(copy(fd_value
));
3907 std::string fs
= FPR(copy(fs_value
));
3908 std::string ft
= FPR(copy(ft_value
));
3910 return img::format("CMP.EQ.S %s, %s, %s", fd
, fs
, ft
);
3918 * 10987654321098765432109876543210
3919 * 001000 x1110000101
3924 std::string
NMD::CMP_LE_D(uint64 instruction
)
3926 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3927 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3928 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3930 std::string fd
= FPR(copy(fd_value
));
3931 std::string fs
= FPR(copy(fs_value
));
3932 std::string ft
= FPR(copy(ft_value
));
3934 return img::format("CMP.LE.D %s, %s, %s", fd
, fs
, ft
);
3942 * 10987654321098765432109876543210
3943 * 001000 x1110000101
3948 std::string
NMD::CMP_LE_PH(uint64 instruction
)
3950 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
3951 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
3953 std::string rs
= GPR(copy(rs_value
));
3954 std::string rt
= GPR(copy(rt_value
));
3956 return img::format("CMP.LE.PH %s, %s", rs
, rt
);
3964 * 10987654321098765432109876543210
3965 * 001000 x1110000101
3970 std::string
NMD::CMP_LE_S(uint64 instruction
)
3972 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3973 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3974 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
3976 std::string fd
= FPR(copy(fd_value
));
3977 std::string fs
= FPR(copy(fs_value
));
3978 std::string ft
= FPR(copy(ft_value
));
3980 return img::format("CMP.LE.S %s, %s, %s", fd
, fs
, ft
);
3988 * 10987654321098765432109876543210
3989 * 001000 x1110000101
3994 std::string
NMD::CMP_LT_D(uint64 instruction
)
3996 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
3997 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
3998 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4000 std::string fd
= FPR(copy(fd_value
));
4001 std::string fs
= FPR(copy(fs_value
));
4002 std::string ft
= FPR(copy(ft_value
));
4004 return img::format("CMP.LT.D %s, %s, %s", fd
, fs
, ft
);
4012 * 10987654321098765432109876543210
4013 * 001000 x1110000101
4018 std::string
NMD::CMP_LT_PH(uint64 instruction
)
4020 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4021 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4023 std::string rs
= GPR(copy(rs_value
));
4024 std::string rt
= GPR(copy(rt_value
));
4026 return img::format("CMP.LT.PH %s, %s", rs
, rt
);
4034 * 10987654321098765432109876543210
4035 * 001000 x1110000101
4040 std::string
NMD::CMP_LT_S(uint64 instruction
)
4042 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4043 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4044 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4046 std::string fd
= FPR(copy(fd_value
));
4047 std::string fs
= FPR(copy(fs_value
));
4048 std::string ft
= FPR(copy(ft_value
));
4050 return img::format("CMP.LT.S %s, %s, %s", fd
, fs
, ft
);
4058 * 10987654321098765432109876543210
4059 * 001000 x1110000101
4064 std::string
NMD::CMP_NE_D(uint64 instruction
)
4066 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4067 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4068 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4070 std::string fd
= FPR(copy(fd_value
));
4071 std::string fs
= FPR(copy(fs_value
));
4072 std::string ft
= FPR(copy(ft_value
));
4074 return img::format("CMP.NE.D %s, %s, %s", fd
, fs
, ft
);
4082 * 10987654321098765432109876543210
4083 * 001000 x1110000101
4088 std::string
NMD::CMP_NE_S(uint64 instruction
)
4090 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4091 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4092 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4094 std::string fd
= FPR(copy(fd_value
));
4095 std::string fs
= FPR(copy(fs_value
));
4096 std::string ft
= FPR(copy(ft_value
));
4098 return img::format("CMP.NE.S %s, %s, %s", fd
, fs
, ft
);
4106 * 10987654321098765432109876543210
4107 * 001000 x1110000101
4112 std::string
NMD::CMP_OR_D(uint64 instruction
)
4114 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4115 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4116 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4118 std::string fd
= FPR(copy(fd_value
));
4119 std::string fs
= FPR(copy(fs_value
));
4120 std::string ft
= FPR(copy(ft_value
));
4122 return img::format("CMP.OR.D %s, %s, %s", fd
, fs
, ft
);
4130 * 10987654321098765432109876543210
4131 * 001000 x1110000101
4136 std::string
NMD::CMP_OR_S(uint64 instruction
)
4138 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4139 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4140 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4142 std::string fd
= FPR(copy(fd_value
));
4143 std::string fs
= FPR(copy(fs_value
));
4144 std::string ft
= FPR(copy(ft_value
));
4146 return img::format("CMP.OR.S %s, %s, %s", fd
, fs
, ft
);
4154 * 10987654321098765432109876543210
4155 * 001000 x1110000101
4160 std::string
NMD::CMP_SAF_D(uint64 instruction
)
4162 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4163 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4164 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4166 std::string fd
= FPR(copy(fd_value
));
4167 std::string fs
= FPR(copy(fs_value
));
4168 std::string ft
= FPR(copy(ft_value
));
4170 return img::format("CMP.SAF.D %s, %s, %s", fd
, fs
, ft
);
4178 * 10987654321098765432109876543210
4179 * 001000 x1110000101
4184 std::string
NMD::CMP_SAF_S(uint64 instruction
)
4186 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4187 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4188 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4190 std::string fd
= FPR(copy(fd_value
));
4191 std::string fs
= FPR(copy(fs_value
));
4192 std::string ft
= FPR(copy(ft_value
));
4194 return img::format("CMP.SAF.S %s, %s, %s", fd
, fs
, ft
);
4202 * 10987654321098765432109876543210
4203 * 001000 x1110000101
4208 std::string
NMD::CMP_SEQ_D(uint64 instruction
)
4210 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4211 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4212 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4214 std::string fd
= FPR(copy(fd_value
));
4215 std::string fs
= FPR(copy(fs_value
));
4216 std::string ft
= FPR(copy(ft_value
));
4218 return img::format("CMP.SEQ.D %s, %s, %s", fd
, fs
, ft
);
4226 * 10987654321098765432109876543210
4227 * 001000 x1110000101
4232 std::string
NMD::CMP_SEQ_S(uint64 instruction
)
4234 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4235 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4236 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4238 std::string fd
= FPR(copy(fd_value
));
4239 std::string fs
= FPR(copy(fs_value
));
4240 std::string ft
= FPR(copy(ft_value
));
4242 return img::format("CMP.SEQ.S %s, %s, %s", fd
, fs
, ft
);
4250 * 10987654321098765432109876543210
4251 * 001000 x1110000101
4256 std::string
NMD::CMP_SLE_D(uint64 instruction
)
4258 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4259 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4260 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4262 std::string fd
= FPR(copy(fd_value
));
4263 std::string fs
= FPR(copy(fs_value
));
4264 std::string ft
= FPR(copy(ft_value
));
4266 return img::format("CMP.SLE.D %s, %s, %s", fd
, fs
, ft
);
4274 * 10987654321098765432109876543210
4275 * 001000 x1110000101
4280 std::string
NMD::CMP_SLE_S(uint64 instruction
)
4282 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4283 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4284 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4286 std::string fd
= FPR(copy(fd_value
));
4287 std::string fs
= FPR(copy(fs_value
));
4288 std::string ft
= FPR(copy(ft_value
));
4290 return img::format("CMP.SLE.S %s, %s, %s", fd
, fs
, ft
);
4298 * 10987654321098765432109876543210
4299 * 001000 x1110000101
4304 std::string
NMD::CMP_SLT_D(uint64 instruction
)
4306 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4307 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4308 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4310 std::string fd
= FPR(copy(fd_value
));
4311 std::string fs
= FPR(copy(fs_value
));
4312 std::string ft
= FPR(copy(ft_value
));
4314 return img::format("CMP.SLT.D %s, %s, %s", fd
, fs
, ft
);
4322 * 10987654321098765432109876543210
4323 * 001000 x1110000101
4328 std::string
NMD::CMP_SLT_S(uint64 instruction
)
4330 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4331 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4332 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4334 std::string fd
= FPR(copy(fd_value
));
4335 std::string fs
= FPR(copy(fs_value
));
4336 std::string ft
= FPR(copy(ft_value
));
4338 return img::format("CMP.SLT.S %s, %s, %s", fd
, fs
, ft
);
4346 * 10987654321098765432109876543210
4347 * 001000 x1110000101
4352 std::string
NMD::CMP_SNE_D(uint64 instruction
)
4354 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4355 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4356 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4358 std::string fd
= FPR(copy(fd_value
));
4359 std::string fs
= FPR(copy(fs_value
));
4360 std::string ft
= FPR(copy(ft_value
));
4362 return img::format("CMP.SNE.D %s, %s, %s", fd
, fs
, ft
);
4370 * 10987654321098765432109876543210
4371 * 001000 x1110000101
4376 std::string
NMD::CMP_SNE_S(uint64 instruction
)
4378 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4379 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4380 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4382 std::string fd
= FPR(copy(fd_value
));
4383 std::string fs
= FPR(copy(fs_value
));
4384 std::string ft
= FPR(copy(ft_value
));
4386 return img::format("CMP.SNE.S %s, %s, %s", fd
, fs
, ft
);
4394 * 10987654321098765432109876543210
4395 * 001000 x1110000101
4400 std::string
NMD::CMP_SOR_D(uint64 instruction
)
4402 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4403 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4404 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4406 std::string fd
= FPR(copy(fd_value
));
4407 std::string fs
= FPR(copy(fs_value
));
4408 std::string ft
= FPR(copy(ft_value
));
4410 return img::format("CMP.SOR.D %s, %s, %s", fd
, fs
, ft
);
4418 * 10987654321098765432109876543210
4419 * 001000 x1110000101
4424 std::string
NMD::CMP_SOR_S(uint64 instruction
)
4426 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4427 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4428 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4430 std::string fd
= FPR(copy(fd_value
));
4431 std::string fs
= FPR(copy(fs_value
));
4432 std::string ft
= FPR(copy(ft_value
));
4434 return img::format("CMP.SOR.S %s, %s, %s", fd
, fs
, ft
);
4442 * 10987654321098765432109876543210
4443 * 001000 x1110000101
4448 std::string
NMD::CMP_SUEQ_D(uint64 instruction
)
4450 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4451 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4452 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4454 std::string fd
= FPR(copy(fd_value
));
4455 std::string fs
= FPR(copy(fs_value
));
4456 std::string ft
= FPR(copy(ft_value
));
4458 return img::format("CMP.SUEQ.D %s, %s, %s", fd
, fs
, ft
);
4466 * 10987654321098765432109876543210
4467 * 001000 x1110000101
4472 std::string
NMD::CMP_SUEQ_S(uint64 instruction
)
4474 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4475 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4476 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4478 std::string fd
= FPR(copy(fd_value
));
4479 std::string fs
= FPR(copy(fs_value
));
4480 std::string ft
= FPR(copy(ft_value
));
4482 return img::format("CMP.SUEQ.S %s, %s, %s", fd
, fs
, ft
);
4490 * 10987654321098765432109876543210
4491 * 001000 x1110000101
4496 std::string
NMD::CMP_SULE_D(uint64 instruction
)
4498 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4499 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4500 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4502 std::string fd
= FPR(copy(fd_value
));
4503 std::string fs
= FPR(copy(fs_value
));
4504 std::string ft
= FPR(copy(ft_value
));
4506 return img::format("CMP.SULE.D %s, %s, %s", fd
, fs
, ft
);
4514 * 10987654321098765432109876543210
4515 * 001000 x1110000101
4520 std::string
NMD::CMP_SULE_S(uint64 instruction
)
4522 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4523 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4524 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4526 std::string fd
= FPR(copy(fd_value
));
4527 std::string fs
= FPR(copy(fs_value
));
4528 std::string ft
= FPR(copy(ft_value
));
4530 return img::format("CMP.SULE.S %s, %s, %s", fd
, fs
, ft
);
4538 * 10987654321098765432109876543210
4539 * 001000 x1110000101
4544 std::string
NMD::CMP_SULT_D(uint64 instruction
)
4546 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4547 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4548 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4550 std::string fd
= FPR(copy(fd_value
));
4551 std::string fs
= FPR(copy(fs_value
));
4552 std::string ft
= FPR(copy(ft_value
));
4554 return img::format("CMP.SULT.D %s, %s, %s", fd
, fs
, ft
);
4562 * 10987654321098765432109876543210
4563 * 001000 x1110000101
4568 std::string
NMD::CMP_SULT_S(uint64 instruction
)
4570 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4571 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4572 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4574 std::string fd
= FPR(copy(fd_value
));
4575 std::string fs
= FPR(copy(fs_value
));
4576 std::string ft
= FPR(copy(ft_value
));
4578 return img::format("CMP.SULT.S %s, %s, %s", fd
, fs
, ft
);
4586 * 10987654321098765432109876543210
4587 * 001000 x1110000101
4592 std::string
NMD::CMP_SUN_D(uint64 instruction
)
4594 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4595 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4596 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4598 std::string fd
= FPR(copy(fd_value
));
4599 std::string fs
= FPR(copy(fs_value
));
4600 std::string ft
= FPR(copy(ft_value
));
4602 return img::format("CMP.SUN.D %s, %s, %s", fd
, fs
, ft
);
4610 * 10987654321098765432109876543210
4611 * 001000 x1110000101
4616 std::string
NMD::CMP_SUNE_D(uint64 instruction
)
4618 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4619 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4620 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4622 std::string fd
= FPR(copy(fd_value
));
4623 std::string fs
= FPR(copy(fs_value
));
4624 std::string ft
= FPR(copy(ft_value
));
4626 return img::format("CMP.SUNE.D %s, %s, %s", fd
, fs
, ft
);
4634 * 10987654321098765432109876543210
4635 * 001000 x1110000101
4640 std::string
NMD::CMP_SUNE_S(uint64 instruction
)
4642 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4643 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4644 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4646 std::string fd
= FPR(copy(fd_value
));
4647 std::string fs
= FPR(copy(fs_value
));
4648 std::string ft
= FPR(copy(ft_value
));
4650 return img::format("CMP.SUNE.S %s, %s, %s", fd
, fs
, ft
);
4658 * 10987654321098765432109876543210
4659 * 001000 x1110000101
4664 std::string
NMD::CMP_SUN_S(uint64 instruction
)
4666 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4667 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4668 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4670 std::string fd
= FPR(copy(fd_value
));
4671 std::string fs
= FPR(copy(fs_value
));
4672 std::string ft
= FPR(copy(ft_value
));
4674 return img::format("CMP.SUN.S %s, %s, %s", fd
, fs
, ft
);
4682 * 10987654321098765432109876543210
4683 * 001000 x1110000101
4688 std::string
NMD::CMP_UEQ_D(uint64 instruction
)
4690 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4691 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4692 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4694 std::string fd
= FPR(copy(fd_value
));
4695 std::string fs
= FPR(copy(fs_value
));
4696 std::string ft
= FPR(copy(ft_value
));
4698 return img::format("CMP.UEQ.D %s, %s, %s", fd
, fs
, ft
);
4706 * 10987654321098765432109876543210
4707 * 001000 x1110000101
4712 std::string
NMD::CMP_UEQ_S(uint64 instruction
)
4714 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4715 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4716 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4718 std::string fd
= FPR(copy(fd_value
));
4719 std::string fs
= FPR(copy(fs_value
));
4720 std::string ft
= FPR(copy(ft_value
));
4722 return img::format("CMP.UEQ.S %s, %s, %s", fd
, fs
, ft
);
4730 * 10987654321098765432109876543210
4731 * 001000 x1110000101
4736 std::string
NMD::CMP_ULE_D(uint64 instruction
)
4738 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4739 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4740 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4742 std::string fd
= FPR(copy(fd_value
));
4743 std::string fs
= FPR(copy(fs_value
));
4744 std::string ft
= FPR(copy(ft_value
));
4746 return img::format("CMP.ULE.D %s, %s, %s", fd
, fs
, ft
);
4754 * 10987654321098765432109876543210
4755 * 001000 x1110000101
4760 std::string
NMD::CMP_ULE_S(uint64 instruction
)
4762 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4763 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4764 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4766 std::string fd
= FPR(copy(fd_value
));
4767 std::string fs
= FPR(copy(fs_value
));
4768 std::string ft
= FPR(copy(ft_value
));
4770 return img::format("CMP.ULE.S %s, %s, %s", fd
, fs
, ft
);
4778 * 10987654321098765432109876543210
4779 * 001000 x1110000101
4784 std::string
NMD::CMP_ULT_D(uint64 instruction
)
4786 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4787 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4788 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4790 std::string fd
= FPR(copy(fd_value
));
4791 std::string fs
= FPR(copy(fs_value
));
4792 std::string ft
= FPR(copy(ft_value
));
4794 return img::format("CMP.ULT.D %s, %s, %s", fd
, fs
, ft
);
4802 * 10987654321098765432109876543210
4803 * 001000 x1110000101
4808 std::string
NMD::CMP_ULT_S(uint64 instruction
)
4810 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4811 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4812 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4814 std::string fd
= FPR(copy(fd_value
));
4815 std::string fs
= FPR(copy(fs_value
));
4816 std::string ft
= FPR(copy(ft_value
));
4818 return img::format("CMP.ULT.S %s, %s, %s", fd
, fs
, ft
);
4826 * 10987654321098765432109876543210
4827 * 001000 x1110000101
4832 std::string
NMD::CMP_UN_D(uint64 instruction
)
4834 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4835 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4836 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4838 std::string fd
= FPR(copy(fd_value
));
4839 std::string fs
= FPR(copy(fs_value
));
4840 std::string ft
= FPR(copy(ft_value
));
4842 return img::format("CMP.UN.D %s, %s, %s", fd
, fs
, ft
);
4850 * 10987654321098765432109876543210
4851 * 001000 x1110000101
4856 std::string
NMD::CMP_UNE_D(uint64 instruction
)
4858 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4859 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4860 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4862 std::string fd
= FPR(copy(fd_value
));
4863 std::string fs
= FPR(copy(fs_value
));
4864 std::string ft
= FPR(copy(ft_value
));
4866 return img::format("CMP.UNE.D %s, %s, %s", fd
, fs
, ft
);
4874 * 10987654321098765432109876543210
4875 * 001000 x1110000101
4880 std::string
NMD::CMP_UNE_S(uint64 instruction
)
4882 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4883 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4884 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4886 std::string fd
= FPR(copy(fd_value
));
4887 std::string fs
= FPR(copy(fs_value
));
4888 std::string ft
= FPR(copy(ft_value
));
4890 return img::format("CMP.UNE.S %s, %s, %s", fd
, fs
, ft
);
4898 * 10987654321098765432109876543210
4899 * 001000 x1110000101
4904 std::string
NMD::CMP_UN_S(uint64 instruction
)
4906 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
4907 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
4908 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
4910 std::string fd
= FPR(copy(fd_value
));
4911 std::string fs
= FPR(copy(fs_value
));
4912 std::string ft
= FPR(copy(ft_value
));
4914 return img::format("CMP.UN.S %s, %s, %s", fd
, fs
, ft
);
4922 * 10987654321098765432109876543210
4923 * 001000 x1110000101
4928 std::string
NMD::CMPGDU_EQ_QB(uint64 instruction
)
4930 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4931 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
4932 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4934 std::string rd
= GPR(copy(rd_value
));
4935 std::string rs
= GPR(copy(rs_value
));
4936 std::string rt
= GPR(copy(rt_value
));
4938 return img::format("CMPGDU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
4946 * 10987654321098765432109876543210
4947 * 001000 x1110000101
4952 std::string
NMD::CMPGDU_LE_QB(uint64 instruction
)
4954 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4955 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
4956 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4958 std::string rd
= GPR(copy(rd_value
));
4959 std::string rs
= GPR(copy(rs_value
));
4960 std::string rt
= GPR(copy(rt_value
));
4962 return img::format("CMPGDU.LE.QB %s, %s, %s", rd
, rs
, rt
);
4970 * 10987654321098765432109876543210
4971 * 001000 x1110000101
4976 std::string
NMD::CMPGDU_LT_QB(uint64 instruction
)
4978 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
4979 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
4980 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
4982 std::string rd
= GPR(copy(rd_value
));
4983 std::string rs
= GPR(copy(rs_value
));
4984 std::string rt
= GPR(copy(rt_value
));
4986 return img::format("CMPGDU.LT.QB %s, %s, %s", rd
, rs
, rt
);
4994 * 10987654321098765432109876543210
4995 * 001000 x1110000101
5000 std::string
NMD::CMPGU_EQ_QB(uint64 instruction
)
5002 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5003 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5004 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5006 std::string rd
= GPR(copy(rd_value
));
5007 std::string rs
= GPR(copy(rs_value
));
5008 std::string rt
= GPR(copy(rt_value
));
5010 return img::format("CMPGU.EQ.QB %s, %s, %s", rd
, rs
, rt
);
5018 * 10987654321098765432109876543210
5019 * 001000 x1110000101
5024 std::string
NMD::CMPGU_LE_QB(uint64 instruction
)
5026 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5027 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5028 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5030 std::string rd
= GPR(copy(rd_value
));
5031 std::string rs
= GPR(copy(rs_value
));
5032 std::string rt
= GPR(copy(rt_value
));
5034 return img::format("CMPGU.LE.QB %s, %s, %s", rd
, rs
, rt
);
5042 * 10987654321098765432109876543210
5043 * 001000 x1110000101
5048 std::string
NMD::CMPGU_LT_QB(uint64 instruction
)
5050 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5051 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5052 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5054 std::string rd
= GPR(copy(rd_value
));
5055 std::string rs
= GPR(copy(rs_value
));
5056 std::string rt
= GPR(copy(rt_value
));
5058 return img::format("CMPGU.LT.QB %s, %s, %s", rd
, rs
, rt
);
5066 * 10987654321098765432109876543210
5067 * 001000 x1110000101
5072 std::string
NMD::CMPU_EQ_QB(uint64 instruction
)
5074 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5075 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5077 std::string rs
= GPR(copy(rs_value
));
5078 std::string rt
= GPR(copy(rt_value
));
5080 return img::format("CMPU.EQ.QB %s, %s", rs
, rt
);
5088 * 10987654321098765432109876543210
5089 * 001000 x1110000101
5094 std::string
NMD::CMPU_LE_QB(uint64 instruction
)
5096 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5097 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5099 std::string rs
= GPR(copy(rs_value
));
5100 std::string rt
= GPR(copy(rt_value
));
5102 return img::format("CMPU.LE.QB %s, %s", rs
, rt
);
5110 * 10987654321098765432109876543210
5111 * 001000 x1110000101
5116 std::string
NMD::CMPU_LT_QB(uint64 instruction
)
5118 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5119 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5121 std::string rs
= GPR(copy(rs_value
));
5122 std::string rt
= GPR(copy(rt_value
));
5124 return img::format("CMPU.LT.QB %s, %s", rs
, rt
);
5132 * 10987654321098765432109876543210
5133 * 001000 x1110000101
5138 std::string
NMD::COP2_1(uint64 instruction
)
5140 uint64 cofun_value
= extract_cofun_25_24_23(instruction
);
5142 std::string cofun
= IMMEDIATE(copy(cofun_value
));
5144 return img::format("COP2_1 %s", cofun
);
5152 * 10987654321098765432109876543210
5153 * 001000 x1110000101
5158 std::string
NMD::CTC1(uint64 instruction
)
5160 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5161 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5163 std::string rt
= GPR(copy(rt_value
));
5164 std::string cs
= CPR(copy(cs_value
));
5166 return img::format("CTC1 %s, %s", rt
, cs
);
5174 * 10987654321098765432109876543210
5175 * 001000 x1110000101
5180 std::string
NMD::CTC2(uint64 instruction
)
5182 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
5183 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5185 std::string rt
= GPR(copy(rt_value
));
5186 std::string cs
= CPR(copy(cs_value
));
5188 return img::format("CTC2 %s, %s", rt
, cs
);
5196 * 10987654321098765432109876543210
5197 * 001000 x1110000101
5202 std::string
NMD::CVT_D_L(uint64 instruction
)
5204 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5205 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5207 std::string ft
= FPR(copy(ft_value
));
5208 std::string fs
= FPR(copy(fs_value
));
5210 return img::format("CVT.D.L %s, %s", ft
, fs
);
5218 * 10987654321098765432109876543210
5219 * 001000 x1110000101
5224 std::string
NMD::CVT_D_S(uint64 instruction
)
5226 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5227 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5229 std::string ft
= FPR(copy(ft_value
));
5230 std::string fs
= FPR(copy(fs_value
));
5232 return img::format("CVT.D.S %s, %s", ft
, fs
);
5240 * 10987654321098765432109876543210
5241 * 001000 x1110000101
5246 std::string
NMD::CVT_D_W(uint64 instruction
)
5248 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5249 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5251 std::string ft
= FPR(copy(ft_value
));
5252 std::string fs
= FPR(copy(fs_value
));
5254 return img::format("CVT.D.W %s, %s", ft
, fs
);
5262 * 10987654321098765432109876543210
5263 * 001000 x1110000101
5268 std::string
NMD::CVT_L_D(uint64 instruction
)
5270 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5271 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5273 std::string ft
= FPR(copy(ft_value
));
5274 std::string fs
= FPR(copy(fs_value
));
5276 return img::format("CVT.L.D %s, %s", ft
, fs
);
5284 * 10987654321098765432109876543210
5285 * 001000 x1110000101
5290 std::string
NMD::CVT_L_S(uint64 instruction
)
5292 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5293 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5295 std::string ft
= FPR(copy(ft_value
));
5296 std::string fs
= FPR(copy(fs_value
));
5298 return img::format("CVT.L.S %s, %s", ft
, fs
);
5306 * 10987654321098765432109876543210
5307 * 001000 x1110000101
5312 std::string
NMD::CVT_S_D(uint64 instruction
)
5314 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5315 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5317 std::string ft
= FPR(copy(ft_value
));
5318 std::string fs
= FPR(copy(fs_value
));
5320 return img::format("CVT.S.D %s, %s", ft
, fs
);
5328 * 10987654321098765432109876543210
5329 * 001000 x1110000101
5334 std::string
NMD::CVT_S_L(uint64 instruction
)
5336 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5337 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5339 std::string ft
= FPR(copy(ft_value
));
5340 std::string fs
= FPR(copy(fs_value
));
5342 return img::format("CVT.S.L %s, %s", ft
, fs
);
5350 * 10987654321098765432109876543210
5351 * 001000 x1110000101
5356 std::string
NMD::CVT_S_PL(uint64 instruction
)
5358 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5359 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5361 std::string ft
= FPR(copy(ft_value
));
5362 std::string fs
= FPR(copy(fs_value
));
5364 return img::format("CVT.S.PL %s, %s", ft
, fs
);
5372 * 10987654321098765432109876543210
5373 * 001000 x1110000101
5378 std::string
NMD::CVT_S_PU(uint64 instruction
)
5380 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5381 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5383 std::string ft
= FPR(copy(ft_value
));
5384 std::string fs
= FPR(copy(fs_value
));
5386 return img::format("CVT.S.PU %s, %s", ft
, fs
);
5394 * 10987654321098765432109876543210
5395 * 001000 x1110000101
5400 std::string
NMD::CVT_S_W(uint64 instruction
)
5402 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5403 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5405 std::string ft
= FPR(copy(ft_value
));
5406 std::string fs
= FPR(copy(fs_value
));
5408 return img::format("CVT.S.W %s, %s", ft
, fs
);
5416 * 10987654321098765432109876543210
5417 * 001000 x1110000101
5422 std::string
NMD::CVT_W_D(uint64 instruction
)
5424 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5425 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5427 std::string ft
= FPR(copy(ft_value
));
5428 std::string fs
= FPR(copy(fs_value
));
5430 return img::format("CVT.W.D %s, %s", ft
, fs
);
5438 * 10987654321098765432109876543210
5439 * 001000 x1110000101
5444 std::string
NMD::CVT_W_S(uint64 instruction
)
5446 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5447 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5449 std::string ft
= FPR(copy(ft_value
));
5450 std::string fs
= FPR(copy(fs_value
));
5452 return img::format("CVT.W.S %s, %s", ft
, fs
);
5460 * 10987654321098765432109876543210
5461 * 001000 x1110000101
5466 std::string
NMD::DADDIU_48_(uint64 instruction
)
5468 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
5469 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
5471 std::string rt
= GPR(copy(rt_value
));
5472 std::string s
= IMMEDIATE(copy(s_value
));
5474 return img::format("DADDIU %s, %s", rt
, s
);
5482 * 10987654321098765432109876543210
5483 * 001000 x1110000101
5488 std::string
NMD::DADDIU_NEG_(uint64 instruction
)
5490 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5491 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5492 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5494 std::string rt
= GPR(copy(rt_value
));
5495 std::string rs
= GPR(copy(rs_value
));
5496 std::string u
= IMMEDIATE(neg_copy(u_value
));
5498 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5506 * 10987654321098765432109876543210
5507 * 001000 x1110000101
5512 std::string
NMD::DADDIU_U12_(uint64 instruction
)
5514 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5515 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
5516 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5518 std::string rt
= GPR(copy(rt_value
));
5519 std::string rs
= GPR(copy(rs_value
));
5520 std::string u
= IMMEDIATE(copy(u_value
));
5522 return img::format("DADDIU %s, %s, %s", rt
, rs
, u
);
5530 * 10987654321098765432109876543210
5531 * 001000 x1110000101
5536 std::string
NMD::DADD(uint64 instruction
)
5538 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5539 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5540 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5542 std::string rd
= GPR(copy(rd_value
));
5543 std::string rs
= GPR(copy(rs_value
));
5544 std::string rt
= GPR(copy(rt_value
));
5546 return img::format("DADD %s, %s, %s", rd
, rs
, rt
);
5554 * 10987654321098765432109876543210
5555 * 001000 x1110000101
5560 std::string
NMD::DADDU(uint64 instruction
)
5562 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5563 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5566 std::string rd
= GPR(copy(rd_value
));
5567 std::string rs
= GPR(copy(rs_value
));
5568 std::string rt
= GPR(copy(rt_value
));
5570 return img::format("DADDU %s, %s, %s", rd
, rs
, rt
);
5578 * 10987654321098765432109876543210
5579 * 001000 x1110000101
5584 std::string
NMD::DCLO(uint64 instruction
)
5586 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5587 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5589 std::string rt
= GPR(copy(rt_value
));
5590 std::string rs
= GPR(copy(rs_value
));
5592 return img::format("DCLO %s, %s", rt
, rs
);
5600 * 10987654321098765432109876543210
5601 * 001000 x1110000101
5606 std::string
NMD::DCLZ(uint64 instruction
)
5608 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5609 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5611 std::string rt
= GPR(copy(rt_value
));
5612 std::string rs
= GPR(copy(rs_value
));
5614 return img::format("DCLZ %s, %s", rt
, rs
);
5622 * 10987654321098765432109876543210
5623 * 001000 x1110000101
5628 std::string
NMD::DDIV(uint64 instruction
)
5630 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5631 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5632 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5634 std::string rd
= GPR(copy(rd_value
));
5635 std::string rs
= GPR(copy(rs_value
));
5636 std::string rt
= GPR(copy(rt_value
));
5638 return img::format("DDIV %s, %s, %s", rd
, rs
, rt
);
5646 * 10987654321098765432109876543210
5647 * 001000 x1110000101
5652 std::string
NMD::DDIVU(uint64 instruction
)
5654 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5655 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5656 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5658 std::string rd
= GPR(copy(rd_value
));
5659 std::string rs
= GPR(copy(rs_value
));
5660 std::string rt
= GPR(copy(rt_value
));
5662 return img::format("DDIVU %s, %s, %s", rd
, rs
, rt
);
5670 * 10987654321098765432109876543210
5671 * 001000 x1110000101
5676 std::string
NMD::DERET(uint64 instruction
)
5688 * 10987654321098765432109876543210
5689 * 001000 x1110000101
5694 std::string
NMD::DEXTM(uint64 instruction
)
5696 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5697 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5698 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5699 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5701 std::string rt
= GPR(copy(rt_value
));
5702 std::string rs
= GPR(copy(rs_value
));
5703 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5704 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5706 return img::format("DEXTM %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5714 * 10987654321098765432109876543210
5715 * 001000 x1110000101
5720 std::string
NMD::DEXT(uint64 instruction
)
5722 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5723 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5724 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5725 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5727 std::string rt
= GPR(copy(rt_value
));
5728 std::string rs
= GPR(copy(rs_value
));
5729 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5730 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5732 return img::format("DEXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5740 * 10987654321098765432109876543210
5741 * 001000 x1110000101
5746 std::string
NMD::DEXTU(uint64 instruction
)
5748 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5749 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5750 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5751 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5753 std::string rt
= GPR(copy(rt_value
));
5754 std::string rs
= GPR(copy(rs_value
));
5755 std::string lsb
= IMMEDIATE(copy(lsb_value
));
5756 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
5758 return img::format("DEXTU %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
5766 * 10987654321098765432109876543210
5767 * 001000 x1110000101
5772 std::string
NMD::DINSM(uint64 instruction
)
5774 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5775 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5776 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5777 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5779 std::string rt
= GPR(copy(rt_value
));
5780 std::string rs
= GPR(copy(rs_value
));
5781 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5782 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5783 /* !!!!!!!!!! - no conversion function */
5785 return img::format("DINSM %s, %s, %s, %s", rt
, rs
, pos
, size
);
5794 * 10987654321098765432109876543210
5795 * 001000 x1110000101
5800 std::string
NMD::DINS(uint64 instruction
)
5802 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5803 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5804 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5805 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5807 std::string rt
= GPR(copy(rt_value
));
5808 std::string rs
= GPR(copy(rs_value
));
5809 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5810 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5811 /* !!!!!!!!!! - no conversion function */
5813 return img::format("DINS %s, %s, %s, %s", rt
, rs
, pos
, size
);
5822 * 10987654321098765432109876543210
5823 * 001000 x1110000101
5828 std::string
NMD::DINSU(uint64 instruction
)
5830 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5831 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
5832 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
5833 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5835 std::string rt
= GPR(copy(rt_value
));
5836 std::string rs
= GPR(copy(rs_value
));
5837 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
5838 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
5839 /* !!!!!!!!!! - no conversion function */
5841 return img::format("DINSU %s, %s, %s, %s", rt
, rs
, pos
, size
);
5850 * 10987654321098765432109876543210
5851 * 001000 x1110000101
5856 std::string
NMD::DI(uint64 instruction
)
5858 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5860 std::string rt
= GPR(copy(rt_value
));
5862 return img::format("DI %s", rt
);
5870 * 10987654321098765432109876543210
5871 * 001000 x1110000101
5876 std::string
NMD::DIV(uint64 instruction
)
5878 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5879 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5880 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5882 std::string rd
= GPR(copy(rd_value
));
5883 std::string rs
= GPR(copy(rs_value
));
5884 std::string rt
= GPR(copy(rt_value
));
5886 return img::format("DIV %s, %s, %s", rd
, rs
, rt
);
5894 * 10987654321098765432109876543210
5895 * 001000 x1110000101
5900 std::string
NMD::DIV_D(uint64 instruction
)
5902 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5903 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5904 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
5906 std::string fd
= FPR(copy(fd_value
));
5907 std::string fs
= FPR(copy(fs_value
));
5908 std::string ft
= FPR(copy(ft_value
));
5910 return img::format("DIV.D %s, %s, %s", fd
, fs
, ft
);
5918 * 10987654321098765432109876543210
5919 * 001000 x1110000101
5924 std::string
NMD::DIV_S(uint64 instruction
)
5926 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
5927 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
5928 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
5930 std::string fd
= FPR(copy(fd_value
));
5931 std::string fs
= FPR(copy(fs_value
));
5932 std::string ft
= FPR(copy(ft_value
));
5934 return img::format("DIV.S %s, %s, %s", fd
, fs
, ft
);
5942 * 10987654321098765432109876543210
5943 * 001000 x1110000101
5948 std::string
NMD::DIVU(uint64 instruction
)
5950 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5951 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5952 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5954 std::string rd
= GPR(copy(rd_value
));
5955 std::string rs
= GPR(copy(rs_value
));
5956 std::string rt
= GPR(copy(rt_value
));
5958 return img::format("DIVU %s, %s, %s", rd
, rs
, rt
);
5966 * 10987654321098765432109876543210
5967 * 001000 x1110000101
5972 std::string
NMD::DLSA(uint64 instruction
)
5974 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
5975 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
5976 uint64 u2_value
= extract_u2_10_9(instruction
);
5977 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
5979 std::string rd
= GPR(copy(rd_value
));
5980 std::string rs
= GPR(copy(rs_value
));
5981 std::string rt
= GPR(copy(rt_value
));
5982 std::string u2
= IMMEDIATE(copy(u2_value
));
5984 return img::format("DLSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
5992 * 10987654321098765432109876543210
5993 * 001000 x1110000101
5998 std::string
NMD::DLUI_48_(uint64 instruction
)
6000 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
6001 uint64 u_value
= extr_uil0il32bs32Fmsb63(instruction
);
6003 std::string rt
= GPR(copy(rt_value
));
6004 std::string u
= IMMEDIATE(copy(u_value
));
6006 return img::format("DLUI %s, %s", rt
, u
);
6014 * 10987654321098765432109876543210
6015 * 001000 x1110000101
6020 std::string
NMD::DMFC0(uint64 instruction
)
6022 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6023 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6024 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6026 std::string rt
= GPR(copy(rt_value
));
6027 std::string c0s
= CPR(copy(c0s_value
));
6028 std::string sel
= IMMEDIATE(copy(sel_value
));
6030 return img::format("DMFC0 %s, %s, %s", rt
, c0s
, sel
);
6038 * 10987654321098765432109876543210
6039 * 001000 x1110000101
6044 std::string
NMD::DMFC1(uint64 instruction
)
6046 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6047 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
6049 std::string rt
= GPR(copy(rt_value
));
6050 std::string fs
= FPR(copy(fs_value
));
6052 return img::format("DMFC1 %s, %s", rt
, fs
);
6060 * 10987654321098765432109876543210
6061 * 001000 x1110000101
6066 std::string
NMD::DMFC2(uint64 instruction
)
6068 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
6069 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6071 std::string rt
= GPR(copy(rt_value
));
6072 std::string cs
= CPR(copy(cs_value
));
6074 return img::format("DMFC2 %s, %s", rt
, cs
);
6082 * 10987654321098765432109876543210
6083 * 001000 x1110000101
6088 std::string
NMD::DMFGC0(uint64 instruction
)
6090 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6091 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6092 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6094 std::string rt
= GPR(copy(rt_value
));
6095 std::string c0s
= CPR(copy(c0s_value
));
6096 std::string sel
= IMMEDIATE(copy(sel_value
));
6098 return img::format("DMFGC0 %s, %s, %s", rt
, c0s
, sel
);
6106 * 10987654321098765432109876543210
6107 * 001000 x1110000101
6112 std::string
NMD::DMOD(uint64 instruction
)
6114 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6115 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6116 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6118 std::string rd
= GPR(copy(rd_value
));
6119 std::string rs
= GPR(copy(rs_value
));
6120 std::string rt
= GPR(copy(rt_value
));
6122 return img::format("DMOD %s, %s, %s", rd
, rs
, rt
);
6130 * 10987654321098765432109876543210
6131 * 001000 x1110000101
6136 std::string
NMD::DMODU(uint64 instruction
)
6138 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6139 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6140 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6142 std::string rd
= GPR(copy(rd_value
));
6143 std::string rs
= GPR(copy(rs_value
));
6144 std::string rt
= GPR(copy(rt_value
));
6146 return img::format("DMODU %s, %s, %s", rd
, rs
, rt
);
6154 * 10987654321098765432109876543210
6155 * 001000 x1110000101
6160 std::string
NMD::DMTC0(uint64 instruction
)
6162 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6163 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6164 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6166 std::string rt
= GPR(copy(rt_value
));
6167 std::string c0s
= CPR(copy(c0s_value
));
6168 std::string sel
= IMMEDIATE(copy(sel_value
));
6170 return img::format("DMTC0 %s, %s, %s", rt
, c0s
, sel
);
6178 * 10987654321098765432109876543210
6179 * 001000 x1110000101
6184 std::string
NMD::DMTC1(uint64 instruction
)
6186 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6187 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
6189 std::string rt
= GPR(copy(rt_value
));
6190 std::string fs
= FPR(copy(fs_value
));
6192 return img::format("DMTC1 %s, %s", rt
, fs
);
6200 * 10987654321098765432109876543210
6201 * 001000 x1110000101
6206 std::string
NMD::DMTC2(uint64 instruction
)
6208 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
6209 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6211 std::string rt
= GPR(copy(rt_value
));
6212 std::string cs
= CPR(copy(cs_value
));
6214 return img::format("DMTC2 %s, %s", rt
, cs
);
6222 * 10987654321098765432109876543210
6223 * 001000 x1110000101
6228 std::string
NMD::DMTGC0(uint64 instruction
)
6230 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6231 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
6232 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
6234 std::string rt
= GPR(copy(rt_value
));
6235 std::string c0s
= CPR(copy(c0s_value
));
6236 std::string sel
= IMMEDIATE(copy(sel_value
));
6238 return img::format("DMTGC0 %s, %s, %s", rt
, c0s
, sel
);
6246 * 10987654321098765432109876543210
6247 * 001000 x1110000101
6252 std::string
NMD::DMT(uint64 instruction
)
6254 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6256 std::string rt
= GPR(copy(rt_value
));
6258 return img::format("DMT %s", rt
);
6266 * 10987654321098765432109876543210
6267 * 001000 x1110000101
6272 std::string
NMD::DMUH(uint64 instruction
)
6274 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6275 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6276 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6278 std::string rd
= GPR(copy(rd_value
));
6279 std::string rs
= GPR(copy(rs_value
));
6280 std::string rt
= GPR(copy(rt_value
));
6282 return img::format("DMUH %s, %s, %s", rd
, rs
, rt
);
6290 * 10987654321098765432109876543210
6291 * 001000 x1110000101
6296 std::string
NMD::DMUHU(uint64 instruction
)
6298 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6299 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6300 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6302 std::string rd
= GPR(copy(rd_value
));
6303 std::string rs
= GPR(copy(rs_value
));
6304 std::string rt
= GPR(copy(rt_value
));
6306 return img::format("DMUHU %s, %s, %s", rd
, rs
, rt
);
6314 * 10987654321098765432109876543210
6315 * 001000 x1110000101
6320 std::string
NMD::DMUL(uint64 instruction
)
6322 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6323 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6324 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6326 std::string rd
= GPR(copy(rd_value
));
6327 std::string rs
= GPR(copy(rs_value
));
6328 std::string rt
= GPR(copy(rt_value
));
6330 return img::format("DMUL %s, %s, %s", rd
, rs
, rt
);
6338 * 10987654321098765432109876543210
6339 * 001000 x1110000101
6344 std::string
NMD::DMULU(uint64 instruction
)
6346 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6347 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6348 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6350 std::string rd
= GPR(copy(rd_value
));
6351 std::string rs
= GPR(copy(rs_value
));
6352 std::string rt
= GPR(copy(rt_value
));
6354 return img::format("DMULU %s, %s, %s", rd
, rs
, rt
);
6362 * 10987654321098765432109876543210
6363 * 001000 x1110000101
6368 std::string
NMD::DPA_W_PH(uint64 instruction
)
6370 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6371 uint64 ac_value
= extract_ac_13_12(instruction
);
6372 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6374 std::string ac
= AC(copy(ac_value
));
6375 std::string rs
= GPR(copy(rs_value
));
6376 std::string rt
= GPR(copy(rt_value
));
6378 return img::format("DPA.W.PH %s, %s, %s", ac
, rs
, rt
);
6386 * 10987654321098765432109876543210
6387 * 001000 x1110000101
6392 std::string
NMD::DPAQ_SA_L_W(uint64 instruction
)
6394 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6395 uint64 ac_value
= extract_ac_13_12(instruction
);
6396 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6398 std::string ac
= AC(copy(ac_value
));
6399 std::string rs
= GPR(copy(rs_value
));
6400 std::string rt
= GPR(copy(rt_value
));
6402 return img::format("DPAQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6410 * 10987654321098765432109876543210
6411 * 001000 x1110000101
6416 std::string
NMD::DPAQ_S_W_PH(uint64 instruction
)
6418 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6419 uint64 ac_value
= extract_ac_13_12(instruction
);
6420 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6422 std::string ac
= AC(copy(ac_value
));
6423 std::string rs
= GPR(copy(rs_value
));
6424 std::string rt
= GPR(copy(rt_value
));
6426 return img::format("DPAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6434 * 10987654321098765432109876543210
6435 * 001000 x1110000101
6440 std::string
NMD::DPAQX_SA_W_PH(uint64 instruction
)
6442 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6443 uint64 ac_value
= extract_ac_13_12(instruction
);
6444 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6446 std::string ac
= AC(copy(ac_value
));
6447 std::string rs
= GPR(copy(rs_value
));
6448 std::string rt
= GPR(copy(rt_value
));
6450 return img::format("DPAQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6458 * 10987654321098765432109876543210
6459 * 001000 x1110000101
6464 std::string
NMD::DPAQX_S_W_PH(uint64 instruction
)
6466 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6467 uint64 ac_value
= extract_ac_13_12(instruction
);
6468 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6470 std::string ac
= AC(copy(ac_value
));
6471 std::string rs
= GPR(copy(rs_value
));
6472 std::string rt
= GPR(copy(rt_value
));
6474 return img::format("DPAQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6482 * 10987654321098765432109876543210
6483 * 001000 x1110000101
6488 std::string
NMD::DPAU_H_QBL(uint64 instruction
)
6490 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6491 uint64 ac_value
= extract_ac_13_12(instruction
);
6492 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6494 std::string ac
= AC(copy(ac_value
));
6495 std::string rs
= GPR(copy(rs_value
));
6496 std::string rt
= GPR(copy(rt_value
));
6498 return img::format("DPAU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6506 * 10987654321098765432109876543210
6507 * 001000 x1110000101
6512 std::string
NMD::DPAU_H_QBR(uint64 instruction
)
6514 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6515 uint64 ac_value
= extract_ac_13_12(instruction
);
6516 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6518 std::string ac
= AC(copy(ac_value
));
6519 std::string rs
= GPR(copy(rs_value
));
6520 std::string rt
= GPR(copy(rt_value
));
6522 return img::format("DPAU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6530 * 10987654321098765432109876543210
6531 * 001000 x1110000101
6536 std::string
NMD::DPAX_W_PH(uint64 instruction
)
6538 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6539 uint64 ac_value
= extract_ac_13_12(instruction
);
6540 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6542 std::string ac
= AC(copy(ac_value
));
6543 std::string rs
= GPR(copy(rs_value
));
6544 std::string rt
= GPR(copy(rt_value
));
6546 return img::format("DPAX.W.PH %s, %s, %s", ac
, rs
, rt
);
6554 * 10987654321098765432109876543210
6555 * 001000 x1110000101
6560 std::string
NMD::DPS_W_PH(uint64 instruction
)
6562 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6563 uint64 ac_value
= extract_ac_13_12(instruction
);
6564 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6566 std::string ac
= AC(copy(ac_value
));
6567 std::string rs
= GPR(copy(rs_value
));
6568 std::string rt
= GPR(copy(rt_value
));
6570 return img::format("DPS.W.PH %s, %s, %s", ac
, rs
, rt
);
6578 * 10987654321098765432109876543210
6579 * 001000 x1110000101
6584 std::string
NMD::DPSQ_SA_L_W(uint64 instruction
)
6586 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6587 uint64 ac_value
= extract_ac_13_12(instruction
);
6588 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6590 std::string ac
= AC(copy(ac_value
));
6591 std::string rs
= GPR(copy(rs_value
));
6592 std::string rt
= GPR(copy(rt_value
));
6594 return img::format("DPSQ_SA.L.W %s, %s, %s", ac
, rs
, rt
);
6602 * 10987654321098765432109876543210
6603 * 001000 x1110000101
6608 std::string
NMD::DPSQ_S_W_PH(uint64 instruction
)
6610 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6611 uint64 ac_value
= extract_ac_13_12(instruction
);
6612 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6614 std::string ac
= AC(copy(ac_value
));
6615 std::string rs
= GPR(copy(rs_value
));
6616 std::string rt
= GPR(copy(rt_value
));
6618 return img::format("DPSQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6626 * 10987654321098765432109876543210
6627 * 001000 x1110000101
6632 std::string
NMD::DPSQX_SA_W_PH(uint64 instruction
)
6634 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6635 uint64 ac_value
= extract_ac_13_12(instruction
);
6636 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6638 std::string ac
= AC(copy(ac_value
));
6639 std::string rs
= GPR(copy(rs_value
));
6640 std::string rt
= GPR(copy(rt_value
));
6642 return img::format("DPSQX_SA.W.PH %s, %s, %s", ac
, rs
, rt
);
6650 * 10987654321098765432109876543210
6651 * 001000 x1110000101
6656 std::string
NMD::DPSQX_S_W_PH(uint64 instruction
)
6658 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6659 uint64 ac_value
= extract_ac_13_12(instruction
);
6660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6662 std::string ac
= AC(copy(ac_value
));
6663 std::string rs
= GPR(copy(rs_value
));
6664 std::string rt
= GPR(copy(rt_value
));
6666 return img::format("DPSQX_S.W.PH %s, %s, %s", ac
, rs
, rt
);
6674 * 10987654321098765432109876543210
6675 * 001000 x1110000101
6680 std::string
NMD::DPSU_H_QBL(uint64 instruction
)
6682 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6683 uint64 ac_value
= extract_ac_13_12(instruction
);
6684 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6686 std::string ac
= AC(copy(ac_value
));
6687 std::string rs
= GPR(copy(rs_value
));
6688 std::string rt
= GPR(copy(rt_value
));
6690 return img::format("DPSU.H.QBL %s, %s, %s", ac
, rs
, rt
);
6698 * 10987654321098765432109876543210
6699 * 001000 x1110000101
6704 std::string
NMD::DPSU_H_QBR(uint64 instruction
)
6706 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6707 uint64 ac_value
= extract_ac_13_12(instruction
);
6708 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6710 std::string ac
= AC(copy(ac_value
));
6711 std::string rs
= GPR(copy(rs_value
));
6712 std::string rt
= GPR(copy(rt_value
));
6714 return img::format("DPSU.H.QBR %s, %s, %s", ac
, rs
, rt
);
6722 * 10987654321098765432109876543210
6723 * 001000 x1110000101
6728 std::string
NMD::DPSX_W_PH(uint64 instruction
)
6730 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6731 uint64 ac_value
= extract_ac_13_12(instruction
);
6732 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6734 std::string ac
= AC(copy(ac_value
));
6735 std::string rs
= GPR(copy(rs_value
));
6736 std::string rt
= GPR(copy(rt_value
));
6738 return img::format("DPSX.W.PH %s, %s, %s", ac
, rs
, rt
);
6746 * 10987654321098765432109876543210
6747 * 001000 x1110000101
6752 std::string
NMD::DROTR(uint64 instruction
)
6754 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6755 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6756 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6758 std::string rt
= GPR(copy(rt_value
));
6759 std::string rs
= GPR(copy(rs_value
));
6760 std::string shift
= IMMEDIATE(copy(shift_value
));
6762 return img::format("DROTR %s, %s, %s", rt
, rs
, shift
);
6770 * 10987654321098765432109876543210
6771 * 10o000 1100xxx0110
6776 std::string
NMD::DROTR32(uint64 instruction
)
6778 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6779 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6780 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6782 std::string rt
= GPR(copy(rt_value
));
6783 std::string rs
= GPR(copy(rs_value
));
6784 std::string shift
= IMMEDIATE(copy(shift_value
));
6786 return img::format("DROTR32 %s, %s, %s", rt
, rs
, shift
);
6794 * 10987654321098765432109876543210
6795 * 001000 x1110000101
6800 std::string
NMD::DROTRV(uint64 instruction
)
6802 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6803 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6804 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6806 std::string rd
= GPR(copy(rd_value
));
6807 std::string rs
= GPR(copy(rs_value
));
6808 std::string rt
= GPR(copy(rt_value
));
6810 return img::format("DROTRV %s, %s, %s", rd
, rs
, rt
);
6818 * 10987654321098765432109876543210
6819 * 001000 x1110000101
6824 std::string
NMD::DROTX(uint64 instruction
)
6826 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6827 uint64 shift_value
= extract_shift_5_4_3_2_1_0(instruction
);
6828 uint64 shiftx_value
= extract_shiftx_11_10_9_8_7_6(instruction
);
6829 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6831 std::string rt
= GPR(copy(rt_value
));
6832 std::string rs
= GPR(copy(rs_value
));
6833 std::string shift
= IMMEDIATE(copy(shift_value
));
6834 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
6836 return img::format("DROTX %s, %s, %s, %s", rt
, rs
, shift
, shiftx
);
6844 * 10987654321098765432109876543210
6845 * 10o000 1100xxx0000
6850 std::string
NMD::DSLL(uint64 instruction
)
6852 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6853 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6854 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6856 std::string rt
= GPR(copy(rt_value
));
6857 std::string rs
= GPR(copy(rs_value
));
6858 std::string shift
= IMMEDIATE(copy(shift_value
));
6860 return img::format("DSLL %s, %s, %s", rt
, rs
, shift
);
6868 * 10987654321098765432109876543210
6869 * 10o000 1100xxx0000
6874 std::string
NMD::DSLL32(uint64 instruction
)
6876 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6877 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6878 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6880 std::string rt
= GPR(copy(rt_value
));
6881 std::string rs
= GPR(copy(rs_value
));
6882 std::string shift
= IMMEDIATE(copy(shift_value
));
6884 return img::format("DSLL32 %s, %s, %s", rt
, rs
, shift
);
6892 * 10987654321098765432109876543210
6893 * 001000 x1110000101
6898 std::string
NMD::DSLLV(uint64 instruction
)
6900 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6901 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6902 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6904 std::string rd
= GPR(copy(rd_value
));
6905 std::string rs
= GPR(copy(rs_value
));
6906 std::string rt
= GPR(copy(rt_value
));
6908 return img::format("DSLLV %s, %s, %s", rd
, rs
, rt
);
6916 * 10987654321098765432109876543210
6917 * 10o000 1100xxx0100
6922 std::string
NMD::DSRA(uint64 instruction
)
6924 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6925 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6926 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6928 std::string rt
= GPR(copy(rt_value
));
6929 std::string rs
= GPR(copy(rs_value
));
6930 std::string shift
= IMMEDIATE(copy(shift_value
));
6932 return img::format("DSRA %s, %s, %s", rt
, rs
, shift
);
6940 * 10987654321098765432109876543210
6941 * 10o000 1100xxx0100
6946 std::string
NMD::DSRA32(uint64 instruction
)
6948 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6949 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6950 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6952 std::string rt
= GPR(copy(rt_value
));
6953 std::string rs
= GPR(copy(rs_value
));
6954 std::string shift
= IMMEDIATE(copy(shift_value
));
6956 return img::format("DSRA32 %s, %s, %s", rt
, rs
, shift
);
6964 * 10987654321098765432109876543210
6965 * 001000 x1110000101
6970 std::string
NMD::DSRAV(uint64 instruction
)
6972 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6973 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
6974 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
6976 std::string rd
= GPR(copy(rd_value
));
6977 std::string rs
= GPR(copy(rs_value
));
6978 std::string rt
= GPR(copy(rt_value
));
6980 return img::format("DSRAV %s, %s, %s", rd
, rs
, rt
);
6988 * 10987654321098765432109876543210
6989 * 10o000 1100xxx0100
6994 std::string
NMD::DSRL(uint64 instruction
)
6996 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
6997 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
6998 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7000 std::string rt
= GPR(copy(rt_value
));
7001 std::string rs
= GPR(copy(rs_value
));
7002 std::string shift
= IMMEDIATE(copy(shift_value
));
7004 return img::format("DSRL %s, %s, %s", rt
, rs
, shift
);
7012 * 10987654321098765432109876543210
7013 * 10o000 1100xxx0010
7018 std::string
NMD::DSRL32(uint64 instruction
)
7020 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7021 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
7022 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7024 std::string rt
= GPR(copy(rt_value
));
7025 std::string rs
= GPR(copy(rs_value
));
7026 std::string shift
= IMMEDIATE(copy(shift_value
));
7028 return img::format("DSRL32 %s, %s, %s", rt
, rs
, shift
);
7036 * 10987654321098765432109876543210
7037 * 001000 x1110000101
7042 std::string
NMD::DSRLV(uint64 instruction
)
7044 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7045 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7046 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7048 std::string rd
= GPR(copy(rd_value
));
7049 std::string rs
= GPR(copy(rs_value
));
7050 std::string rt
= GPR(copy(rt_value
));
7052 return img::format("DSRLV %s, %s, %s", rd
, rs
, rt
);
7060 * 10987654321098765432109876543210
7061 * 001000 x1110000101
7066 std::string
NMD::DSUB(uint64 instruction
)
7068 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7069 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7070 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7072 std::string rd
= GPR(copy(rd_value
));
7073 std::string rs
= GPR(copy(rs_value
));
7074 std::string rt
= GPR(copy(rt_value
));
7076 return img::format("DSUB %s, %s, %s", rd
, rs
, rt
);
7084 * 10987654321098765432109876543210
7085 * 001000 x1110000101
7090 std::string
NMD::DSUBU(uint64 instruction
)
7092 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7093 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7094 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7096 std::string rd
= GPR(copy(rd_value
));
7097 std::string rs
= GPR(copy(rs_value
));
7098 std::string rt
= GPR(copy(rt_value
));
7100 return img::format("DSUBU %s, %s, %s", rd
, rs
, rt
);
7108 * 10987654321098765432109876543210
7109 * 001000 x1110000101
7114 std::string
NMD::DVPE(uint64 instruction
)
7116 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7118 std::string rt
= GPR(copy(rt_value
));
7120 return img::format("DVPE %s", rt
);
7128 * 10987654321098765432109876543210
7129 * 001000 x1110000101
7134 std::string
NMD::DVP(uint64 instruction
)
7136 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7138 std::string rt
= GPR(copy(rt_value
));
7140 return img::format("DVP %s", rt
);
7148 * 10987654321098765432109876543210
7149 * 001000 x1110000101
7154 std::string
NMD::EHB(uint64 instruction
)
7166 * 10987654321098765432109876543210
7167 * 001000 x1110000101
7172 std::string
NMD::EI(uint64 instruction
)
7174 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7176 std::string rt
= GPR(copy(rt_value
));
7178 return img::format("EI %s", rt
);
7186 * 10987654321098765432109876543210
7187 * 001000 x1110000101
7192 std::string
NMD::EMT(uint64 instruction
)
7194 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7196 std::string rt
= GPR(copy(rt_value
));
7198 return img::format("EMT %s", rt
);
7206 * 10987654321098765432109876543210
7207 * 001000 x1110000101
7212 std::string
NMD::ERET(uint64 instruction
)
7224 * 10987654321098765432109876543210
7225 * 001000 x1110000101
7230 std::string
NMD::ERETNC(uint64 instruction
)
7242 * 10987654321098765432109876543210
7243 * 001000 x1110000101
7248 std::string
NMD::EVP(uint64 instruction
)
7250 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7252 std::string rt
= GPR(copy(rt_value
));
7254 return img::format("EVP %s", rt
);
7262 * 10987654321098765432109876543210
7263 * 001000 x1110000101
7268 std::string
NMD::EVPE(uint64 instruction
)
7270 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7272 std::string rt
= GPR(copy(rt_value
));
7274 return img::format("EVPE %s", rt
);
7282 * 10987654321098765432109876543210
7283 * 001000 x1110000101
7288 std::string
NMD::EXT(uint64 instruction
)
7290 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7291 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7292 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7293 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7295 std::string rt
= GPR(copy(rt_value
));
7296 std::string rs
= GPR(copy(rs_value
));
7297 std::string lsb
= IMMEDIATE(copy(lsb_value
));
7298 std::string msbd
= IMMEDIATE(encode_msbd_from_size(msbd_value
));
7300 return img::format("EXT %s, %s, %s, %s", rt
, rs
, lsb
, msbd
);
7308 * 10987654321098765432109876543210
7309 * 001000 x1110000101
7314 std::string
NMD::EXTD(uint64 instruction
)
7316 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7317 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7318 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7319 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7321 std::string rd
= GPR(copy(rd_value
));
7322 std::string rs
= GPR(copy(rs_value
));
7323 std::string rt
= GPR(copy(rt_value
));
7324 std::string shift
= IMMEDIATE(copy(shift_value
));
7326 return img::format("EXTD %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7334 * 10987654321098765432109876543210
7335 * 001000 x1110000101
7340 std::string
NMD::EXTD32(uint64 instruction
)
7342 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7343 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7344 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7345 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7347 std::string rd
= GPR(copy(rd_value
));
7348 std::string rs
= GPR(copy(rs_value
));
7349 std::string rt
= GPR(copy(rt_value
));
7350 std::string shift
= IMMEDIATE(copy(shift_value
));
7352 return img::format("EXTD32 %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7360 * 10987654321098765432109876543210
7361 * 001000 x1110000101
7366 std::string
NMD::EXTPDP(uint64 instruction
)
7368 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7369 uint64 ac_value
= extract_ac_13_12(instruction
);
7370 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7372 std::string rt
= GPR(copy(rt_value
));
7373 std::string ac
= AC(copy(ac_value
));
7374 std::string size
= IMMEDIATE(copy(size_value
));
7376 return img::format("EXTPDP %s, %s, %s", rt
, ac
, size
);
7384 * 10987654321098765432109876543210
7385 * 001000 x1110000101
7390 std::string
NMD::EXTPDPV(uint64 instruction
)
7392 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7393 uint64 ac_value
= extract_ac_13_12(instruction
);
7394 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7396 std::string rt
= GPR(copy(rt_value
));
7397 std::string ac
= AC(copy(ac_value
));
7398 std::string rs
= GPR(copy(rs_value
));
7400 return img::format("EXTPDPV %s, %s, %s", rt
, ac
, rs
);
7408 * 10987654321098765432109876543210
7409 * 001000 x1110000101
7414 std::string
NMD::EXTP(uint64 instruction
)
7416 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7417 uint64 ac_value
= extract_ac_13_12(instruction
);
7418 uint64 size_value
= extract_size_20_19_18_17_16(instruction
);
7420 std::string rt
= GPR(copy(rt_value
));
7421 std::string ac
= AC(copy(ac_value
));
7422 std::string size
= IMMEDIATE(copy(size_value
));
7424 return img::format("EXTP %s, %s, %s", rt
, ac
, size
);
7432 * 10987654321098765432109876543210
7433 * 001000 x1110000101
7438 std::string
NMD::EXTPV(uint64 instruction
)
7440 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7441 uint64 ac_value
= extract_ac_13_12(instruction
);
7442 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7444 std::string rt
= GPR(copy(rt_value
));
7445 std::string ac
= AC(copy(ac_value
));
7446 std::string rs
= GPR(copy(rs_value
));
7448 return img::format("EXTPV %s, %s, %s", rt
, ac
, rs
);
7456 * 10987654321098765432109876543210
7457 * 001000 x1110000101
7462 std::string
NMD::EXTR_RS_W(uint64 instruction
)
7464 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7465 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7466 uint64 ac_value
= extract_ac_13_12(instruction
);
7468 std::string rt
= GPR(copy(rt_value
));
7469 std::string ac
= AC(copy(ac_value
));
7470 std::string shift
= IMMEDIATE(copy(shift_value
));
7472 return img::format("EXTR_RS.W %s, %s, %s", rt
, ac
, shift
);
7480 * 10987654321098765432109876543210
7481 * 001000 x1110000101
7486 std::string
NMD::EXTR_R_W(uint64 instruction
)
7488 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7489 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7490 uint64 ac_value
= extract_ac_13_12(instruction
);
7492 std::string rt
= GPR(copy(rt_value
));
7493 std::string ac
= AC(copy(ac_value
));
7494 std::string shift
= IMMEDIATE(copy(shift_value
));
7496 return img::format("EXTR_R.W %s, %s, %s", rt
, ac
, shift
);
7504 * 10987654321098765432109876543210
7505 * 001000 x1110000101
7510 std::string
NMD::EXTR_S_H(uint64 instruction
)
7512 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7513 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7514 uint64 ac_value
= extract_ac_13_12(instruction
);
7516 std::string rt
= GPR(copy(rt_value
));
7517 std::string ac
= AC(copy(ac_value
));
7518 std::string shift
= IMMEDIATE(copy(shift_value
));
7520 return img::format("EXTR_S.H %s, %s, %s", rt
, ac
, shift
);
7528 * 10987654321098765432109876543210
7529 * 001000 x1110000101
7534 std::string
NMD::EXTR_W(uint64 instruction
)
7536 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7537 uint64 shift_value
= extract_shift_20_19_18_17_16(instruction
);
7538 uint64 ac_value
= extract_ac_13_12(instruction
);
7540 std::string rt
= GPR(copy(rt_value
));
7541 std::string ac
= AC(copy(ac_value
));
7542 std::string shift
= IMMEDIATE(copy(shift_value
));
7544 return img::format("EXTR.W %s, %s, %s", rt
, ac
, shift
);
7552 * 10987654321098765432109876543210
7553 * 001000 x1110000101
7558 std::string
NMD::EXTRV_RS_W(uint64 instruction
)
7560 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7561 uint64 ac_value
= extract_ac_13_12(instruction
);
7562 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7564 std::string rt
= GPR(copy(rt_value
));
7565 std::string ac
= AC(copy(ac_value
));
7566 std::string rs
= GPR(copy(rs_value
));
7568 return img::format("EXTRV_RS.W %s, %s, %s", rt
, ac
, rs
);
7576 * 10987654321098765432109876543210
7577 * 001000 x1110000101
7582 std::string
NMD::EXTRV_R_W(uint64 instruction
)
7584 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7585 uint64 ac_value
= extract_ac_13_12(instruction
);
7586 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7588 std::string rt
= GPR(copy(rt_value
));
7589 std::string ac
= AC(copy(ac_value
));
7590 std::string rs
= GPR(copy(rs_value
));
7592 return img::format("EXTRV_R.W %s, %s, %s", rt
, ac
, rs
);
7600 * 10987654321098765432109876543210
7601 * 001000 x1110000101
7606 std::string
NMD::EXTRV_S_H(uint64 instruction
)
7608 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7609 uint64 ac_value
= extract_ac_13_12(instruction
);
7610 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7612 std::string rt
= GPR(copy(rt_value
));
7613 std::string ac
= AC(copy(ac_value
));
7614 std::string rs
= GPR(copy(rs_value
));
7616 return img::format("EXTRV_S.H %s, %s, %s", rt
, ac
, rs
);
7624 * 10987654321098765432109876543210
7625 * 001000 x1110000101
7630 std::string
NMD::EXTRV_W(uint64 instruction
)
7632 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7633 uint64 ac_value
= extract_ac_13_12(instruction
);
7634 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7636 std::string rt
= GPR(copy(rt_value
));
7637 std::string ac
= AC(copy(ac_value
));
7638 std::string rs
= GPR(copy(rs_value
));
7640 return img::format("EXTRV.W %s, %s, %s", rt
, ac
, rs
);
7645 * EXTW - Extract Word
7648 * 10987654321098765432109876543210
7655 std::string
NMD::EXTW(uint64 instruction
)
7657 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7658 uint64 shift_value
= extract_shift_10_9_8_7_6(instruction
);
7659 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7660 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7662 std::string rd
= GPR(copy(rd_value
));
7663 std::string rs
= GPR(copy(rs_value
));
7664 std::string rt
= GPR(copy(rt_value
));
7665 std::string shift
= IMMEDIATE(copy(shift_value
));
7667 return img::format("EXTW %s, %s, %s, %s", rd
, rs
, rt
, shift
);
7675 * 10987654321098765432109876543210
7676 * 001000 x1110000101
7681 std::string
NMD::FLOOR_L_D(uint64 instruction
)
7683 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
7684 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
7686 std::string ft
= FPR(copy(ft_value
));
7687 std::string fs
= FPR(copy(fs_value
));
7689 return img::format("FLOOR.L.D %s, %s", ft
, fs
);
7697 * 10987654321098765432109876543210
7698 * 001000 x1110000101
7703 std::string
NMD::FLOOR_L_S(uint64 instruction
)
7705 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
7706 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
7708 std::string ft
= FPR(copy(ft_value
));
7709 std::string fs
= FPR(copy(fs_value
));
7711 return img::format("FLOOR.L.S %s, %s", ft
, fs
);
7719 * 10987654321098765432109876543210
7720 * 001000 x1110000101
7725 std::string
NMD::FLOOR_W_D(uint64 instruction
)
7727 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
7728 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
7730 std::string ft
= FPR(copy(ft_value
));
7731 std::string fs
= FPR(copy(fs_value
));
7733 return img::format("FLOOR.W.D %s, %s", ft
, fs
);
7741 * 10987654321098765432109876543210
7742 * 001000 x1110000101
7747 std::string
NMD::FLOOR_W_S(uint64 instruction
)
7749 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
7750 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
7752 std::string ft
= FPR(copy(ft_value
));
7753 std::string fs
= FPR(copy(fs_value
));
7755 return img::format("FLOOR.W.S %s, %s", ft
, fs
);
7763 * 10987654321098765432109876543210
7764 * 001000 x1110000101
7769 std::string
NMD::FORK(uint64 instruction
)
7771 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7772 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
7773 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7775 std::string rd
= GPR(copy(rd_value
));
7776 std::string rs
= GPR(copy(rs_value
));
7777 std::string rt
= GPR(copy(rt_value
));
7779 return img::format("FORK %s, %s, %s", rd
, rs
, rt
);
7787 * 10987654321098765432109876543210
7788 * 001000 x1110000101
7793 std::string
NMD::HYPCALL(uint64 instruction
)
7795 uint64 code_value
= extract_code_17_to_0(instruction
);
7797 std::string code
= IMMEDIATE(copy(code_value
));
7799 return img::format("HYPCALL %s", code
);
7807 * 10987654321098765432109876543210
7808 * 001000 x1110000101
7813 std::string
NMD::HYPCALL_16_(uint64 instruction
)
7815 uint64 code_value
= extract_code_1_0(instruction
);
7817 std::string code
= IMMEDIATE(copy(code_value
));
7819 return img::format("HYPCALL %s", code
);
7827 * 10987654321098765432109876543210
7828 * 001000 x1110000101
7833 std::string
NMD::INS(uint64 instruction
)
7835 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7836 uint64 msbd_value
= extract_msbt_10_9_8_7_6(instruction
);
7837 uint64 lsb_value
= extract_lsb_4_3_2_1_0(instruction
);
7838 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7840 std::string rt
= GPR(copy(rt_value
));
7841 std::string rs
= GPR(copy(rs_value
));
7842 std::string pos
= IMMEDIATE(encode_lsb_from_pos_and_size(lsb_value
));
7843 std::string size
= IMMEDIATE(encode_lsb_from_pos_and_size(msbd_value
));
7844 /* !!!!!!!!!! - no conversion function */
7846 return img::format("INS %s, %s, %s, %s", rt
, rs
, pos
, size
);
7855 * 10987654321098765432109876543210
7856 * 001000 x1110000101
7861 std::string
NMD::INSV(uint64 instruction
)
7863 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7864 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7866 std::string rt
= GPR(copy(rt_value
));
7867 std::string rs
= GPR(copy(rs_value
));
7869 return img::format("INSV %s, %s", rt
, rs
);
7877 * 10987654321098765432109876543210
7878 * 001000 x1110000101
7883 std::string
NMD::IRET(uint64 instruction
)
7895 * 10987654321098765432109876543210
7896 * 001000 x1110000101
7901 std::string
NMD::JALRC_16_(uint64 instruction
)
7903 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7905 std::string rt
= GPR(copy(rt_value
));
7907 return img::format("JALRC $%d, %s", 31, rt
);
7915 * 10987654321098765432109876543210
7916 * 001000 x1110000101
7921 std::string
NMD::JALRC_32_(uint64 instruction
)
7923 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7924 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7926 std::string rt
= GPR(copy(rt_value
));
7927 std::string rs
= GPR(copy(rs_value
));
7929 return img::format("JALRC %s, %s", rt
, rs
);
7937 * 10987654321098765432109876543210
7938 * 001000 x1110000101
7943 std::string
NMD::JALRC_HB(uint64 instruction
)
7945 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
7946 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
7948 std::string rt
= GPR(copy(rt_value
));
7949 std::string rs
= GPR(copy(rs_value
));
7951 return img::format("JALRC.HB %s, %s", rt
, rs
);
7959 * 10987654321098765432109876543210
7960 * 001000 x1110000101
7965 std::string
NMD::JRC(uint64 instruction
)
7967 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
7969 std::string rt
= GPR(copy(rt_value
));
7971 return img::format("JRC %s", rt
);
7979 * 10987654321098765432109876543210
7980 * 001000 x1110000101
7985 std::string
NMD::LB_16_(uint64 instruction
)
7987 uint64 u_value
= extract_u_1_0(instruction
);
7988 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
7989 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
7991 std::string rt3
= GPR(encode_gpr3(rt3_value
));
7992 std::string u
= IMMEDIATE(copy(u_value
));
7993 std::string rs3
= GPR(encode_gpr3(rs3_value
));
7995 return img::format("LB %s, %s(%s)", rt3
, u
, rs3
);
8003 * 10987654321098765432109876543210
8004 * 001000 x1110000101
8009 std::string
NMD::LB_GP_(uint64 instruction
)
8011 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8012 uint64 u_value
= extract_u_17_to_0(instruction
);
8014 std::string rt
= GPR(copy(rt_value
));
8015 std::string u
= IMMEDIATE(copy(u_value
));
8017 return img::format("LB %s, %s($%d)", rt
, u
, 28);
8025 * 10987654321098765432109876543210
8026 * 001000 x1110000101
8031 std::string
NMD::LB_S9_(uint64 instruction
)
8033 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8034 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8035 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8037 std::string rt
= GPR(copy(rt_value
));
8038 std::string s
= IMMEDIATE(copy(s_value
));
8039 std::string rs
= GPR(copy(rs_value
));
8041 return img::format("LB %s, %s(%s)", rt
, s
, rs
);
8049 * 10987654321098765432109876543210
8050 * 001000 x1110000101
8055 std::string
NMD::LB_U12_(uint64 instruction
)
8057 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8058 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8059 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8061 std::string rt
= GPR(copy(rt_value
));
8062 std::string u
= IMMEDIATE(copy(u_value
));
8063 std::string rs
= GPR(copy(rs_value
));
8065 return img::format("LB %s, %s(%s)", rt
, u
, rs
);
8073 * 10987654321098765432109876543210
8074 * 001000 x1110000101
8079 std::string
NMD::LBE(uint64 instruction
)
8081 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8082 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8083 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8085 std::string rt
= GPR(copy(rt_value
));
8086 std::string s
= IMMEDIATE(copy(s_value
));
8087 std::string rs
= GPR(copy(rs_value
));
8089 return img::format("LBE %s, %s(%s)", rt
, s
, rs
);
8097 * 10987654321098765432109876543210
8098 * 001000 x1110000101
8103 std::string
NMD::LBU_16_(uint64 instruction
)
8105 uint64 u_value
= extract_u_1_0(instruction
);
8106 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8107 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8109 std::string rt3
= GPR(encode_gpr3(rt3_value
));
8110 std::string u
= IMMEDIATE(copy(u_value
));
8111 std::string rs3
= GPR(encode_gpr3(rs3_value
));
8113 return img::format("LBU %s, %s(%s)", rt3
, u
, rs3
);
8121 * 10987654321098765432109876543210
8122 * 001000 x1110000101
8127 std::string
NMD::LBU_GP_(uint64 instruction
)
8129 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8130 uint64 u_value
= extract_u_17_to_0(instruction
);
8132 std::string rt
= GPR(copy(rt_value
));
8133 std::string u
= IMMEDIATE(copy(u_value
));
8135 return img::format("LBU %s, %s($%d)", rt
, u
, 28);
8143 * 10987654321098765432109876543210
8144 * 001000 x1110000101
8149 std::string
NMD::LBU_S9_(uint64 instruction
)
8151 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8152 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8153 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8155 std::string rt
= GPR(copy(rt_value
));
8156 std::string s
= IMMEDIATE(copy(s_value
));
8157 std::string rs
= GPR(copy(rs_value
));
8159 return img::format("LBU %s, %s(%s)", rt
, s
, rs
);
8167 * 10987654321098765432109876543210
8168 * 001000 x1110000101
8173 std::string
NMD::LBU_U12_(uint64 instruction
)
8175 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8176 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8177 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8179 std::string rt
= GPR(copy(rt_value
));
8180 std::string u
= IMMEDIATE(copy(u_value
));
8181 std::string rs
= GPR(copy(rs_value
));
8183 return img::format("LBU %s, %s(%s)", rt
, u
, rs
);
8191 * 10987654321098765432109876543210
8192 * 001000 x1110000101
8197 std::string
NMD::LBUE(uint64 instruction
)
8199 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8200 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8201 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8203 std::string rt
= GPR(copy(rt_value
));
8204 std::string s
= IMMEDIATE(copy(s_value
));
8205 std::string rs
= GPR(copy(rs_value
));
8207 return img::format("LBUE %s, %s(%s)", rt
, s
, rs
);
8215 * 10987654321098765432109876543210
8216 * 001000 x1110000101
8221 std::string
NMD::LBUX(uint64 instruction
)
8223 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8224 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8225 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8227 std::string rd
= GPR(copy(rd_value
));
8228 std::string rs
= GPR(copy(rs_value
));
8229 std::string rt
= GPR(copy(rt_value
));
8231 return img::format("LBUX %s, %s(%s)", rd
, rs
, rt
);
8239 * 10987654321098765432109876543210
8240 * 001000 x1110000101
8245 std::string
NMD::LBX(uint64 instruction
)
8247 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8248 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8249 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8251 std::string rd
= GPR(copy(rd_value
));
8252 std::string rs
= GPR(copy(rs_value
));
8253 std::string rt
= GPR(copy(rt_value
));
8255 return img::format("LBX %s, %s(%s)", rd
, rs
, rt
);
8263 * 10987654321098765432109876543210
8264 * 001000 x1110000101
8269 std::string
NMD::LD_GP_(uint64 instruction
)
8271 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8272 uint64 u_value
= extr_uil3il3bs18Fmsb20(instruction
);
8274 std::string rt
= GPR(copy(rt_value
));
8275 std::string u
= IMMEDIATE(copy(u_value
));
8277 return img::format("LD %s, %s($%d)", rt
, u
, 28);
8285 * 10987654321098765432109876543210
8286 * 001000 x1110000101
8291 std::string
NMD::LD_S9_(uint64 instruction
)
8293 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8294 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8295 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8297 std::string rt
= GPR(copy(rt_value
));
8298 std::string s
= IMMEDIATE(copy(s_value
));
8299 std::string rs
= GPR(copy(rs_value
));
8301 return img::format("LD %s, %s(%s)", rt
, s
, rs
);
8309 * 10987654321098765432109876543210
8310 * 001000 x1110000101
8315 std::string
NMD::LD_U12_(uint64 instruction
)
8317 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8318 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8319 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8321 std::string rt
= GPR(copy(rt_value
));
8322 std::string u
= IMMEDIATE(copy(u_value
));
8323 std::string rs
= GPR(copy(rs_value
));
8325 return img::format("LD %s, %s(%s)", rt
, u
, rs
);
8333 * 10987654321098765432109876543210
8334 * 001000 x1110000101
8339 std::string
NMD::LDC1_GP_(uint64 instruction
)
8341 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
8342 uint64 u_value
= extr_uil2il2bs16Fmsb17(instruction
);
8344 std::string ft
= FPR(copy(ft_value
));
8345 std::string u
= IMMEDIATE(copy(u_value
));
8347 return img::format("LDC1 %s, %s($%d)", ft
, u
, 28);
8355 * 10987654321098765432109876543210
8356 * 001000 x1110000101
8361 std::string
NMD::LDC1_S9_(uint64 instruction
)
8363 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8364 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
8365 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8367 std::string ft
= FPR(copy(ft_value
));
8368 std::string s
= IMMEDIATE(copy(s_value
));
8369 std::string rs
= GPR(copy(rs_value
));
8371 return img::format("LDC1 %s, %s(%s)", ft
, s
, rs
);
8379 * 10987654321098765432109876543210
8380 * 001000 x1110000101
8385 std::string
NMD::LDC1_U12_(uint64 instruction
)
8387 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
8388 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8389 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8391 std::string ft
= FPR(copy(ft_value
));
8392 std::string u
= IMMEDIATE(copy(u_value
));
8393 std::string rs
= GPR(copy(rs_value
));
8395 return img::format("LDC1 %s, %s(%s)", ft
, u
, rs
);
8403 * 10987654321098765432109876543210
8404 * 001000 x1110000101
8409 std::string
NMD::LDC1XS(uint64 instruction
)
8411 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8412 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8413 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8415 std::string ft
= FPR(copy(ft_value
));
8416 std::string rs
= GPR(copy(rs_value
));
8417 std::string rt
= GPR(copy(rt_value
));
8419 return img::format("LDC1XS %s, %s(%s)", ft
, rs
, rt
);
8427 * 10987654321098765432109876543210
8428 * 001000 x1110000101
8433 std::string
NMD::LDC1X(uint64 instruction
)
8435 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8436 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
8437 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8439 std::string ft
= FPR(copy(ft_value
));
8440 std::string rs
= GPR(copy(rs_value
));
8441 std::string rt
= GPR(copy(rt_value
));
8443 return img::format("LDC1X %s, %s(%s)", ft
, rs
, rt
);
8451 * 10987654321098765432109876543210
8452 * 001000 x1110000101
8457 std::string
NMD::LDC2(uint64 instruction
)
8459 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8460 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
8461 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8463 std::string ct
= CPR(copy(ct_value
));
8464 std::string s
= IMMEDIATE(copy(s_value
));
8465 std::string rs
= GPR(copy(rs_value
));
8467 return img::format("LDC2 %s, %s(%s)", ct
, s
, rs
);
8475 * 10987654321098765432109876543210
8476 * 001000 x1110000101
8481 std::string
NMD::LDM(uint64 instruction
)
8483 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8484 uint64 count3_value
= extract_count3_14_13_12(instruction
);
8485 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8486 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8488 std::string rt
= GPR(copy(rt_value
));
8489 std::string s
= IMMEDIATE(copy(s_value
));
8490 std::string rs
= GPR(copy(rs_value
));
8491 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
8493 return img::format("LDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
8501 * 10987654321098765432109876543210
8502 * 001000 x1110000101
8507 std::string
NMD::LDPC_48_(uint64 instruction
)
8509 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8510 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
8512 std::string rt
= GPR(copy(rt_value
));
8513 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
8515 return img::format("LDPC %s, %s", rt
, s
);
8523 * 10987654321098765432109876543210
8524 * 001000 x1110000101
8529 std::string
NMD::LDX(uint64 instruction
)
8531 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8532 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8533 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8535 std::string rd
= GPR(copy(rd_value
));
8536 std::string rs
= GPR(copy(rs_value
));
8537 std::string rt
= GPR(copy(rt_value
));
8539 return img::format("LDX %s, %s(%s)", rd
, rs
, rt
);
8547 * 10987654321098765432109876543210
8548 * 001000 x1110000101
8553 std::string
NMD::LDXS(uint64 instruction
)
8555 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8556 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8557 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8559 std::string rd
= GPR(copy(rd_value
));
8560 std::string rs
= GPR(copy(rs_value
));
8561 std::string rt
= GPR(copy(rt_value
));
8563 return img::format("LDXS %s, %s(%s)", rd
, rs
, rt
);
8571 * 10987654321098765432109876543210
8572 * 001000 x1110000101
8577 std::string
NMD::LH_16_(uint64 instruction
)
8579 uint64 u_value
= extr_uil1il1bs2Fmsb2(instruction
);
8580 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8581 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8583 std::string rt3
= GPR(encode_gpr3(rt3_value
));
8584 std::string u
= IMMEDIATE(copy(u_value
));
8585 std::string rs3
= GPR(encode_gpr3(rs3_value
));
8587 return img::format("LH %s, %s(%s)", rt3
, u
, rs3
);
8595 * 10987654321098765432109876543210
8596 * 001000 x1110000101
8601 std::string
NMD::LH_GP_(uint64 instruction
)
8603 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8604 uint64 u_value
= extr_uil1il1bs17Fmsb17(instruction
);
8606 std::string rt
= GPR(copy(rt_value
));
8607 std::string u
= IMMEDIATE(copy(u_value
));
8609 return img::format("LH %s, %s($%d)", rt
, u
, 28);
8617 * 10987654321098765432109876543210
8618 * 001000 x1110000101
8623 std::string
NMD::LH_S9_(uint64 instruction
)
8625 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8626 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8627 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8629 std::string rt
= GPR(copy(rt_value
));
8630 std::string s
= IMMEDIATE(copy(s_value
));
8631 std::string rs
= GPR(copy(rs_value
));
8633 return img::format("LH %s, %s(%s)", rt
, s
, rs
);
8641 * 10987654321098765432109876543210
8642 * 001000 x1110000101
8647 std::string
NMD::LH_U12_(uint64 instruction
)
8649 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8650 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8651 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8653 std::string rt
= GPR(copy(rt_value
));
8654 std::string u
= IMMEDIATE(copy(u_value
));
8655 std::string rs
= GPR(copy(rs_value
));
8657 return img::format("LH %s, %s(%s)", rt
, u
, rs
);
8665 * 10987654321098765432109876543210
8666 * 001000 x1110000101
8671 std::string
NMD::LHE(uint64 instruction
)
8673 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8674 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8675 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8677 std::string rt
= GPR(copy(rt_value
));
8678 std::string s
= IMMEDIATE(copy(s_value
));
8679 std::string rs
= GPR(copy(rs_value
));
8681 return img::format("LHE %s, %s(%s)", rt
, s
, rs
);
8689 * 10987654321098765432109876543210
8690 * 001000 x1110000101
8695 std::string
NMD::LHU_16_(uint64 instruction
)
8697 uint64 u_value
= extr_uil1il1bs2Fmsb2(instruction
);
8698 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8699 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
8701 std::string rt3
= GPR(encode_gpr3(rt3_value
));
8702 std::string u
= IMMEDIATE(copy(u_value
));
8703 std::string rs3
= GPR(encode_gpr3(rs3_value
));
8705 return img::format("LHU %s, %s(%s)", rt3
, u
, rs3
);
8713 * 10987654321098765432109876543210
8714 * 001000 x1110000101
8719 std::string
NMD::LHU_GP_(uint64 instruction
)
8721 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8722 uint64 u_value
= extr_uil1il1bs17Fmsb17(instruction
);
8724 std::string rt
= GPR(copy(rt_value
));
8725 std::string u
= IMMEDIATE(copy(u_value
));
8727 return img::format("LHU %s, %s($%d)", rt
, u
, 28);
8735 * 10987654321098765432109876543210
8736 * 001000 x1110000101
8741 std::string
NMD::LHU_S9_(uint64 instruction
)
8743 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8744 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8745 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8747 std::string rt
= GPR(copy(rt_value
));
8748 std::string s
= IMMEDIATE(copy(s_value
));
8749 std::string rs
= GPR(copy(rs_value
));
8751 return img::format("LHU %s, %s(%s)", rt
, s
, rs
);
8759 * 10987654321098765432109876543210
8760 * 001000 x1110000101
8765 std::string
NMD::LHU_U12_(uint64 instruction
)
8767 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8768 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
8769 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8771 std::string rt
= GPR(copy(rt_value
));
8772 std::string u
= IMMEDIATE(copy(u_value
));
8773 std::string rs
= GPR(copy(rs_value
));
8775 return img::format("LHU %s, %s(%s)", rt
, u
, rs
);
8783 * 10987654321098765432109876543210
8784 * 001000 x1110000101
8789 std::string
NMD::LHUE(uint64 instruction
)
8791 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8792 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
8793 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8795 std::string rt
= GPR(copy(rt_value
));
8796 std::string s
= IMMEDIATE(copy(s_value
));
8797 std::string rs
= GPR(copy(rs_value
));
8799 return img::format("LHUE %s, %s(%s)", rt
, s
, rs
);
8807 * 10987654321098765432109876543210
8808 * 001000 x1110000101
8813 std::string
NMD::LHUX(uint64 instruction
)
8815 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8816 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8817 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8819 std::string rd
= GPR(copy(rd_value
));
8820 std::string rs
= GPR(copy(rs_value
));
8821 std::string rt
= GPR(copy(rt_value
));
8823 return img::format("LHUX %s, %s(%s)", rd
, rs
, rt
);
8831 * 10987654321098765432109876543210
8832 * 001000 x1110000101
8837 std::string
NMD::LHUXS(uint64 instruction
)
8839 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8840 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8841 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8843 std::string rd
= GPR(copy(rd_value
));
8844 std::string rs
= GPR(copy(rs_value
));
8845 std::string rt
= GPR(copy(rt_value
));
8847 return img::format("LHUXS %s, %s(%s)", rd
, rs
, rt
);
8855 * 10987654321098765432109876543210
8856 * 001000 x1110000101
8861 std::string
NMD::LHXS(uint64 instruction
)
8863 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8864 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8865 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8867 std::string rd
= GPR(copy(rd_value
));
8868 std::string rs
= GPR(copy(rs_value
));
8869 std::string rt
= GPR(copy(rt_value
));
8871 return img::format("LHXS %s, %s(%s)", rd
, rs
, rt
);
8879 * 10987654321098765432109876543210
8880 * 001000 x1110000101
8885 std::string
NMD::LHX(uint64 instruction
)
8887 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8888 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
8889 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8891 std::string rd
= GPR(copy(rd_value
));
8892 std::string rs
= GPR(copy(rs_value
));
8893 std::string rt
= GPR(copy(rt_value
));
8895 return img::format("LHX %s, %s(%s)", rd
, rs
, rt
);
8903 * 10987654321098765432109876543210
8904 * 001000 x1110000101
8909 std::string
NMD::LI_16_(uint64 instruction
)
8911 uint64 eu_value
= extract_eu_6_5_4_3_2_1_0(instruction
);
8912 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
8914 std::string rt3
= GPR(encode_gpr3(rt3_value
));
8915 std::string eu
= IMMEDIATE(encode_eu_from_s_li16(eu_value
));
8917 return img::format("LI %s, %s", rt3
, eu
);
8925 * 10987654321098765432109876543210
8926 * 001000 x1110000101
8931 std::string
NMD::LI_48_(uint64 instruction
)
8933 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
8934 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
8936 std::string rt
= GPR(copy(rt_value
));
8937 std::string s
= IMMEDIATE(copy(s_value
));
8939 return img::format("LI %s, %s", rt
, s
);
8947 * 10987654321098765432109876543210
8948 * 001000 x1110000101
8953 std::string
NMD::LL(uint64 instruction
)
8955 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8956 int64 s_value
= extr_sil2il2bs6_il15il8bs1Tmsb8(instruction
);
8957 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8959 std::string rt
= GPR(copy(rt_value
));
8960 std::string s
= IMMEDIATE(copy(s_value
));
8961 std::string rs
= GPR(copy(rs_value
));
8963 return img::format("LL %s, %s(%s)", rt
, s
, rs
);
8971 * 10987654321098765432109876543210
8972 * 001000 x1110000101
8977 std::string
NMD::LLD(uint64 instruction
)
8979 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
8980 int64 s_value
= extr_sil3il3bs5_il15il8bs1Tmsb8(instruction
);
8981 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
8983 std::string rt
= GPR(copy(rt_value
));
8984 std::string s
= IMMEDIATE(copy(s_value
));
8985 std::string rs
= GPR(copy(rs_value
));
8987 return img::format("LLD %s, %s(%s)", rt
, s
, rs
);
8995 * 10987654321098765432109876543210
8996 * 001000 x1110000101
9001 std::string
NMD::LLDP(uint64 instruction
)
9003 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9004 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
9005 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9007 std::string rt
= GPR(copy(rt_value
));
9008 std::string ru
= GPR(copy(ru_value
));
9009 std::string rs
= GPR(copy(rs_value
));
9011 return img::format("LLDP %s, %s, (%s)", rt
, ru
, rs
);
9019 * 10987654321098765432109876543210
9020 * 001000 x1110000101
9025 std::string
NMD::LLE(uint64 instruction
)
9027 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9028 int64 s_value
= extr_sil2il2bs6_il15il8bs1Tmsb8(instruction
);
9029 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9031 std::string rt
= GPR(copy(rt_value
));
9032 std::string s
= IMMEDIATE(copy(s_value
));
9033 std::string rs
= GPR(copy(rs_value
));
9035 return img::format("LLE %s, %s(%s)", rt
, s
, rs
);
9043 * 10987654321098765432109876543210
9044 * 001000 x1110000101
9049 std::string
NMD::LLWP(uint64 instruction
)
9051 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9052 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
9053 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9055 std::string rt
= GPR(copy(rt_value
));
9056 std::string ru
= GPR(copy(ru_value
));
9057 std::string rs
= GPR(copy(rs_value
));
9059 return img::format("LLWP %s, %s, (%s)", rt
, ru
, rs
);
9067 * 10987654321098765432109876543210
9068 * 001000 x1110000101
9073 std::string
NMD::LLWPE(uint64 instruction
)
9075 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9076 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
9077 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9079 std::string rt
= GPR(copy(rt_value
));
9080 std::string ru
= GPR(copy(ru_value
));
9081 std::string rs
= GPR(copy(rs_value
));
9083 return img::format("LLWPE %s, %s, (%s)", rt
, ru
, rs
);
9091 * 10987654321098765432109876543210
9092 * 001000 x1110000101
9097 std::string
NMD::LSA(uint64 instruction
)
9099 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9100 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
9101 uint64 u2_value
= extract_u2_10_9(instruction
);
9102 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9104 std::string rd
= GPR(copy(rd_value
));
9105 std::string rs
= GPR(copy(rs_value
));
9106 std::string rt
= GPR(copy(rt_value
));
9107 std::string u2
= IMMEDIATE(copy(u2_value
));
9109 return img::format("LSA %s, %s, %s, %s", rd
, rs
, rt
, u2
);
9117 * 10987654321098765432109876543210
9118 * 001000 x1110000101
9123 std::string
NMD::LUI(uint64 instruction
)
9125 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9126 int64 s_value
= extr_sil0il31bs1_il2il21bs10_il12il12bs9Tmsb31(instruction
);
9128 std::string rt
= GPR(copy(rt_value
));
9129 std::string s
= IMMEDIATE(copy(s_value
));
9131 return img::format("LUI %s, %%hi(%s)", rt
, s
);
9139 * 10987654321098765432109876543210
9140 * 001000 x1110000101
9145 std::string
NMD::LW_16_(uint64 instruction
)
9147 uint64 u_value
= extr_uil0il2bs4Fmsb5(instruction
);
9148 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9149 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9151 std::string rt3
= GPR(encode_gpr3(rt3_value
));
9152 std::string u
= IMMEDIATE(copy(u_value
));
9153 std::string rs3
= GPR(encode_gpr3(rs3_value
));
9155 return img::format("LW %s, %s(%s)", rt3
, u
, rs3
);
9163 * 10987654321098765432109876543210
9164 * 001000 x1110000101
9169 std::string
NMD::LW_4X4_(uint64 instruction
)
9171 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
9172 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
9173 uint64 u_value
= extr_uil3il3bs1_il8il2bs1Fmsb3(instruction
);
9175 std::string rt4
= GPR(encode_gpr4(rt4_value
));
9176 std::string u
= IMMEDIATE(copy(u_value
));
9177 std::string rs4
= GPR(encode_gpr4(rs4_value
));
9179 return img::format("LW %s, %s(%s)", rt4
, u
, rs4
);
9187 * 10987654321098765432109876543210
9188 * 001000 x1110000101
9193 std::string
NMD::LW_GP_(uint64 instruction
)
9195 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9196 uint64 u_value
= extr_uil2il2bs19Fmsb20(instruction
);
9198 std::string rt
= GPR(copy(rt_value
));
9199 std::string u
= IMMEDIATE(copy(u_value
));
9201 return img::format("LW %s, %s($%d)", rt
, u
, 28);
9209 * 10987654321098765432109876543210
9210 * 001000 x1110000101
9215 std::string
NMD::LW_GP16_(uint64 instruction
)
9217 uint64 u_value
= extr_uil0il2bs7Fmsb8(instruction
);
9218 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9220 std::string rt3
= GPR(encode_gpr3(rt3_value
));
9221 std::string u
= IMMEDIATE(copy(u_value
));
9223 return img::format("LW %s, %s($%d)", rt3
, u
, 28);
9231 * 10987654321098765432109876543210
9232 * 001000 x1110000101
9237 std::string
NMD::LW_S9_(uint64 instruction
)
9239 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9240 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9241 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9243 std::string rt
= GPR(copy(rt_value
));
9244 std::string s
= IMMEDIATE(copy(s_value
));
9245 std::string rs
= GPR(copy(rs_value
));
9247 return img::format("LW %s, %s(%s)", rt
, s
, rs
);
9255 * 10987654321098765432109876543210
9256 * 001000 x1110000101
9261 std::string
NMD::LW_SP_(uint64 instruction
)
9263 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
9264 uint64 u_value
= extr_uil0il2bs5Fmsb6(instruction
);
9266 std::string rt
= GPR(copy(rt_value
));
9267 std::string u
= IMMEDIATE(copy(u_value
));
9269 return img::format("LW %s, %s($%d)", rt
, u
, 29);
9277 * 10987654321098765432109876543210
9278 * 001000 x1110000101
9283 std::string
NMD::LW_U12_(uint64 instruction
)
9285 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9286 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9287 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9289 std::string rt
= GPR(copy(rt_value
));
9290 std::string u
= IMMEDIATE(copy(u_value
));
9291 std::string rs
= GPR(copy(rs_value
));
9293 return img::format("LW %s, %s(%s)", rt
, u
, rs
);
9301 * 10987654321098765432109876543210
9302 * 001000 x1110000101
9307 std::string
NMD::LWC1_GP_(uint64 instruction
)
9309 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9310 uint64 u_value
= extr_uil2il2bs16Fmsb17(instruction
);
9312 std::string ft
= FPR(copy(ft_value
));
9313 std::string u
= IMMEDIATE(copy(u_value
));
9315 return img::format("LWC1 %s, %s($%d)", ft
, u
, 28);
9323 * 10987654321098765432109876543210
9324 * 001000 x1110000101
9329 std::string
NMD::LWC1_S9_(uint64 instruction
)
9331 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9332 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9333 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9335 std::string ft
= FPR(copy(ft_value
));
9336 std::string s
= IMMEDIATE(copy(s_value
));
9337 std::string rs
= GPR(copy(rs_value
));
9339 return img::format("LWC1 %s, %s(%s)", ft
, s
, rs
);
9347 * 10987654321098765432109876543210
9348 * 001000 x1110000101
9353 std::string
NMD::LWC1_U12_(uint64 instruction
)
9355 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9356 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9357 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9359 std::string ft
= FPR(copy(ft_value
));
9360 std::string u
= IMMEDIATE(copy(u_value
));
9361 std::string rs
= GPR(copy(rs_value
));
9363 return img::format("LWC1 %s, %s(%s)", ft
, u
, rs
);
9371 * 10987654321098765432109876543210
9372 * 001000 x1110000101
9377 std::string
NMD::LWC1X(uint64 instruction
)
9379 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9380 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9381 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9383 std::string ft
= FPR(copy(ft_value
));
9384 std::string rs
= GPR(copy(rs_value
));
9385 std::string rt
= GPR(copy(rt_value
));
9387 return img::format("LWC1X %s, %s(%s)", ft
, rs
, rt
);
9395 * 10987654321098765432109876543210
9396 * 001000 x1110000101
9401 std::string
NMD::LWC1XS(uint64 instruction
)
9403 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9404 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
9405 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9407 std::string ft
= FPR(copy(ft_value
));
9408 std::string rs
= GPR(copy(rs_value
));
9409 std::string rt
= GPR(copy(rt_value
));
9411 return img::format("LWC1XS %s, %s(%s)", ft
, rs
, rt
);
9419 * 10987654321098765432109876543210
9420 * 001000 x1110000101
9425 std::string
NMD::LWC2(uint64 instruction
)
9427 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9428 uint64 ct_value
= extract_ct_25_24_23_22_21(instruction
);
9429 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9431 std::string ct
= CPR(copy(ct_value
));
9432 std::string s
= IMMEDIATE(copy(s_value
));
9433 std::string rs
= GPR(copy(rs_value
));
9435 return img::format("LWC2 %s, %s(%s)", ct
, s
, rs
);
9443 * 10987654321098765432109876543210
9444 * 001000 x1110000101
9449 std::string
NMD::LWE(uint64 instruction
)
9451 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9452 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9453 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9455 std::string rt
= GPR(copy(rt_value
));
9456 std::string s
= IMMEDIATE(copy(s_value
));
9457 std::string rs
= GPR(copy(rs_value
));
9459 return img::format("LWE %s, %s(%s)", rt
, s
, rs
);
9467 * 10987654321098765432109876543210
9468 * 001000 x1110000101
9473 std::string
NMD::LWM(uint64 instruction
)
9475 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9476 uint64 count3_value
= extract_count3_14_13_12(instruction
);
9477 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9478 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9480 std::string rt
= GPR(copy(rt_value
));
9481 std::string s
= IMMEDIATE(copy(s_value
));
9482 std::string rs
= GPR(copy(rs_value
));
9483 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
9485 return img::format("LWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
9493 * 10987654321098765432109876543210
9494 * 001000 x1110000101
9499 std::string
NMD::LWPC_48_(uint64 instruction
)
9501 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
9502 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
9504 std::string rt
= GPR(copy(rt_value
));
9505 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
9507 return img::format("LWPC %s, %s", rt
, s
);
9515 * 10987654321098765432109876543210
9516 * 001000 x1110000101
9521 std::string
NMD::LWU_GP_(uint64 instruction
)
9523 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9524 uint64 u_value
= extr_uil2il2bs16Fmsb17(instruction
);
9526 std::string rt
= GPR(copy(rt_value
));
9527 std::string u
= IMMEDIATE(copy(u_value
));
9529 return img::format("LWU %s, %s($%d)", rt
, u
, 28);
9537 * 10987654321098765432109876543210
9538 * 001000 x1110000101
9543 std::string
NMD::LWU_S9_(uint64 instruction
)
9545 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9546 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
9547 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9549 std::string rt
= GPR(copy(rt_value
));
9550 std::string s
= IMMEDIATE(copy(s_value
));
9551 std::string rs
= GPR(copy(rs_value
));
9553 return img::format("LWU %s, %s(%s)", rt
, s
, rs
);
9561 * 10987654321098765432109876543210
9562 * 001000 x1110000101
9567 std::string
NMD::LWU_U12_(uint64 instruction
)
9569 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9570 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
9571 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9573 std::string rt
= GPR(copy(rt_value
));
9574 std::string u
= IMMEDIATE(copy(u_value
));
9575 std::string rs
= GPR(copy(rs_value
));
9577 return img::format("LWU %s, %s(%s)", rt
, u
, rs
);
9585 * 10987654321098765432109876543210
9586 * 001000 x1110000101
9591 std::string
NMD::LWUX(uint64 instruction
)
9593 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9594 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
9595 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9597 std::string rd
= GPR(copy(rd_value
));
9598 std::string rs
= GPR(copy(rs_value
));
9599 std::string rt
= GPR(copy(rt_value
));
9601 return img::format("LWUX %s, %s(%s)", rd
, rs
, rt
);
9609 * 10987654321098765432109876543210
9610 * 001000 x1110000101
9615 std::string
NMD::LWUXS(uint64 instruction
)
9617 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9618 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
9619 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9621 std::string rd
= GPR(copy(rd_value
));
9622 std::string rs
= GPR(copy(rs_value
));
9623 std::string rt
= GPR(copy(rt_value
));
9625 return img::format("LWUXS %s, %s(%s)", rd
, rs
, rt
);
9633 * 10987654321098765432109876543210
9634 * 001000 x1110000101
9639 std::string
NMD::LWX(uint64 instruction
)
9641 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9642 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
9643 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9645 std::string rd
= GPR(copy(rd_value
));
9646 std::string rs
= GPR(copy(rs_value
));
9647 std::string rt
= GPR(copy(rt_value
));
9649 return img::format("LWX %s, %s(%s)", rd
, rs
, rt
);
9657 * 10987654321098765432109876543210
9658 * 001000 x1110000101
9663 std::string
NMD::LWXS_16_(uint64 instruction
)
9665 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
9666 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
9667 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
9669 std::string rd3
= GPR(encode_gpr3(rd3_value
));
9670 std::string rs3
= GPR(encode_gpr3(rs3_value
));
9671 std::string rt3
= IMMEDIATE(encode_gpr3(rt3_value
));
9673 return img::format("LWXS %s, %s(%s)", rd3
, rs3
, rt3
);
9681 * 10987654321098765432109876543210
9682 * 001000 x1110000101
9687 std::string
NMD::LWXS_32_(uint64 instruction
)
9689 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9690 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
9691 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9693 std::string rd
= GPR(copy(rd_value
));
9694 std::string rs
= GPR(copy(rs_value
));
9695 std::string rt
= GPR(copy(rt_value
));
9697 return img::format("LWXS %s, %s(%s)", rd
, rs
, rt
);
9705 * 10987654321098765432109876543210
9706 * 001000 x1110000101
9711 std::string
NMD::MADD_DSP_(uint64 instruction
)
9713 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9714 uint64 ac_value
= extract_ac_13_12(instruction
);
9715 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9717 std::string ac
= AC(copy(ac_value
));
9718 std::string rs
= GPR(copy(rs_value
));
9719 std::string rt
= GPR(copy(rt_value
));
9721 return img::format("MADD %s, %s, %s", ac
, rs
, rt
);
9729 * 10987654321098765432109876543210
9730 * 001000 x1110000101
9735 std::string
NMD::MADDF_D(uint64 instruction
)
9737 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9738 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9739 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9741 std::string fd
= FPR(copy(fd_value
));
9742 std::string fs
= FPR(copy(fs_value
));
9743 std::string ft
= FPR(copy(ft_value
));
9745 return img::format("MADDF.D %s, %s, %s", fd
, fs
, ft
);
9753 * 10987654321098765432109876543210
9754 * 001000 x1110000101
9759 std::string
NMD::MADDF_S(uint64 instruction
)
9761 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9762 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9763 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9765 std::string fd
= FPR(copy(fd_value
));
9766 std::string fs
= FPR(copy(fs_value
));
9767 std::string ft
= FPR(copy(ft_value
));
9769 return img::format("MADDF.S %s, %s, %s", fd
, fs
, ft
);
9777 * 10987654321098765432109876543210
9778 * 001000 x1110000101
9783 std::string
NMD::MADDU_DSP_(uint64 instruction
)
9785 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9786 uint64 ac_value
= extract_ac_13_12(instruction
);
9787 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9789 std::string ac
= AC(copy(ac_value
));
9790 std::string rs
= GPR(copy(rs_value
));
9791 std::string rt
= GPR(copy(rt_value
));
9793 return img::format("MADDU %s, %s, %s", ac
, rs
, rt
);
9801 * 10987654321098765432109876543210
9802 * 001000 x1110000101
9807 std::string
NMD::MAQ_S_W_PHL(uint64 instruction
)
9809 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9810 uint64 ac_value
= extract_ac_13_12(instruction
);
9811 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9813 std::string ac
= AC(copy(ac_value
));
9814 std::string rs
= GPR(copy(rs_value
));
9815 std::string rt
= GPR(copy(rt_value
));
9817 return img::format("MAQ_S.W.PHL %s, %s, %s", ac
, rs
, rt
);
9825 * 10987654321098765432109876543210
9826 * 001000 x1110000101
9831 std::string
NMD::MAQ_S_W_PHR(uint64 instruction
)
9833 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9834 uint64 ac_value
= extract_ac_13_12(instruction
);
9835 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9837 std::string ac
= AC(copy(ac_value
));
9838 std::string rs
= GPR(copy(rs_value
));
9839 std::string rt
= GPR(copy(rt_value
));
9841 return img::format("MAQ_S.W.PHR %s, %s, %s", ac
, rs
, rt
);
9849 * 10987654321098765432109876543210
9850 * 001000 x1110000101
9855 std::string
NMD::MAQ_SA_W_PHL(uint64 instruction
)
9857 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9858 uint64 ac_value
= extract_ac_13_12(instruction
);
9859 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9861 std::string ac
= AC(copy(ac_value
));
9862 std::string rs
= GPR(copy(rs_value
));
9863 std::string rt
= GPR(copy(rt_value
));
9865 return img::format("MAQ_SA.W.PHL %s, %s, %s", ac
, rs
, rt
);
9873 * 10987654321098765432109876543210
9874 * 001000 x1110000101
9879 std::string
NMD::MAQ_SA_W_PHR(uint64 instruction
)
9881 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
9882 uint64 ac_value
= extract_ac_13_12(instruction
);
9883 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
9885 std::string ac
= AC(copy(ac_value
));
9886 std::string rs
= GPR(copy(rs_value
));
9887 std::string rt
= GPR(copy(rt_value
));
9889 return img::format("MAQ_SA.W.PHR %s, %s, %s", ac
, rs
, rt
);
9897 * 10987654321098765432109876543210
9898 * 001000 x1110000101
9903 std::string
NMD::MAX_D(uint64 instruction
)
9905 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9906 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9907 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9909 std::string fd
= FPR(copy(fd_value
));
9910 std::string fs
= FPR(copy(fs_value
));
9911 std::string ft
= FPR(copy(ft_value
));
9913 return img::format("MAX.D %s, %s, %s", fd
, fs
, ft
);
9921 * 10987654321098765432109876543210
9922 * 001000 x1110000101
9927 std::string
NMD::MAX_S(uint64 instruction
)
9929 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9930 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9931 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9933 std::string fd
= FPR(copy(fd_value
));
9934 std::string fs
= FPR(copy(fs_value
));
9935 std::string ft
= FPR(copy(ft_value
));
9937 return img::format("MAX.S %s, %s, %s", fd
, fs
, ft
);
9945 * 10987654321098765432109876543210
9946 * 001000 x1110000101
9951 std::string
NMD::MAXA_D(uint64 instruction
)
9953 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9954 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9955 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9957 std::string fd
= FPR(copy(fd_value
));
9958 std::string fs
= FPR(copy(fs_value
));
9959 std::string ft
= FPR(copy(ft_value
));
9961 return img::format("MAXA.D %s, %s, %s", fd
, fs
, ft
);
9969 * 10987654321098765432109876543210
9970 * 001000 x1110000101
9975 std::string
NMD::MAXA_S(uint64 instruction
)
9977 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
9978 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
9979 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
9981 std::string fd
= FPR(copy(fd_value
));
9982 std::string fs
= FPR(copy(fs_value
));
9983 std::string ft
= FPR(copy(ft_value
));
9985 return img::format("MAXA.S %s, %s, %s", fd
, fs
, ft
);
9993 * 10987654321098765432109876543210
9994 * 001000 x1110000101
9999 std::string
NMD::MFC0(uint64 instruction
)
10001 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10002 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10003 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10005 std::string rt
= GPR(copy(rt_value
));
10006 std::string c0s
= CPR(copy(c0s_value
));
10007 std::string sel
= IMMEDIATE(copy(sel_value
));
10009 return img::format("MFC0 %s, %s, %s", rt
, c0s
, sel
);
10017 * 10987654321098765432109876543210
10018 * 001000 x1110000101
10023 std::string
NMD::MFC1(uint64 instruction
)
10025 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10026 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10028 std::string rt
= GPR(copy(rt_value
));
10029 std::string fs
= FPR(copy(fs_value
));
10031 return img::format("MFC1 %s, %s", rt
, fs
);
10039 * 10987654321098765432109876543210
10040 * 001000 x1110000101
10045 std::string
NMD::MFC2(uint64 instruction
)
10047 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10048 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10050 std::string rt
= GPR(copy(rt_value
));
10051 std::string cs
= CPR(copy(cs_value
));
10053 return img::format("MFC2 %s, %s", rt
, cs
);
10061 * 10987654321098765432109876543210
10062 * 001000 x1110000101
10067 std::string
NMD::MFGC0(uint64 instruction
)
10069 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10070 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10071 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10073 std::string rt
= GPR(copy(rt_value
));
10074 std::string c0s
= CPR(copy(c0s_value
));
10075 std::string sel
= IMMEDIATE(copy(sel_value
));
10077 return img::format("MFGC0 %s, %s, %s", rt
, c0s
, sel
);
10085 * 10987654321098765432109876543210
10086 * 001000 x1110000101
10091 std::string
NMD::MFHC0(uint64 instruction
)
10093 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10094 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10095 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10097 std::string rt
= GPR(copy(rt_value
));
10098 std::string c0s
= CPR(copy(c0s_value
));
10099 std::string sel
= IMMEDIATE(copy(sel_value
));
10101 return img::format("MFHC0 %s, %s, %s", rt
, c0s
, sel
);
10109 * 10987654321098765432109876543210
10110 * 001000 x1110000101
10115 std::string
NMD::MFHC1(uint64 instruction
)
10117 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10118 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10120 std::string rt
= GPR(copy(rt_value
));
10121 std::string fs
= FPR(copy(fs_value
));
10123 return img::format("MFHC1 %s, %s", rt
, fs
);
10131 * 10987654321098765432109876543210
10132 * 001000 x1110000101
10137 std::string
NMD::MFHC2(uint64 instruction
)
10139 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10140 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10142 std::string rt
= GPR(copy(rt_value
));
10143 std::string cs
= CPR(copy(cs_value
));
10145 return img::format("MFHC2 %s, %s", rt
, cs
);
10153 * 10987654321098765432109876543210
10154 * 001000 x1110000101
10159 std::string
NMD::MFHGC0(uint64 instruction
)
10161 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10162 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10163 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10165 std::string rt
= GPR(copy(rt_value
));
10166 std::string c0s
= CPR(copy(c0s_value
));
10167 std::string sel
= IMMEDIATE(copy(sel_value
));
10169 return img::format("MFHGC0 %s, %s, %s", rt
, c0s
, sel
);
10177 * 10987654321098765432109876543210
10178 * 001000 x1110000101
10183 std::string
NMD::MFHI_DSP_(uint64 instruction
)
10185 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10186 uint64 ac_value
= extract_ac_13_12(instruction
);
10188 std::string rt
= GPR(copy(rt_value
));
10189 std::string ac
= AC(copy(ac_value
));
10191 return img::format("MFHI %s, %s", rt
, ac
);
10199 * 10987654321098765432109876543210
10200 * 001000 x1110000101
10205 std::string
NMD::MFHTR(uint64 instruction
)
10207 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10208 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10209 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10210 uint64 u_value
= extract_u_10(instruction
);
10212 std::string rt
= GPR(copy(rt_value
));
10213 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10214 std::string u
= IMMEDIATE(copy(u_value
));
10215 std::string sel
= IMMEDIATE(copy(sel_value
));
10217 return img::format("MFHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10225 * 10987654321098765432109876543210
10226 * 001000 x1110000101
10231 std::string
NMD::MFLO_DSP_(uint64 instruction
)
10233 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10234 uint64 ac_value
= extract_ac_13_12(instruction
);
10236 std::string rt
= GPR(copy(rt_value
));
10237 std::string ac
= AC(copy(ac_value
));
10239 return img::format("MFLO %s, %s", rt
, ac
);
10247 * 10987654321098765432109876543210
10248 * 001000 x1110000101
10253 std::string
NMD::MFTR(uint64 instruction
)
10255 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10256 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10257 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10258 uint64 u_value
= extract_u_10(instruction
);
10260 std::string rt
= GPR(copy(rt_value
));
10261 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10262 std::string u
= IMMEDIATE(copy(u_value
));
10263 std::string sel
= IMMEDIATE(copy(sel_value
));
10265 return img::format("MFTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10273 * 10987654321098765432109876543210
10274 * 001000 x1110000101
10279 std::string
NMD::MIN_D(uint64 instruction
)
10281 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10282 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10283 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10285 std::string fd
= FPR(copy(fd_value
));
10286 std::string fs
= FPR(copy(fs_value
));
10287 std::string ft
= FPR(copy(ft_value
));
10289 return img::format("MIN.D %s, %s, %s", fd
, fs
, ft
);
10297 * 10987654321098765432109876543210
10298 * 001000 x1110000101
10303 std::string
NMD::MIN_S(uint64 instruction
)
10305 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10306 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10307 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10309 std::string fd
= FPR(copy(fd_value
));
10310 std::string fs
= FPR(copy(fs_value
));
10311 std::string ft
= FPR(copy(ft_value
));
10313 return img::format("MIN.S %s, %s, %s", fd
, fs
, ft
);
10321 * 10987654321098765432109876543210
10322 * 001000 x1110000101
10327 std::string
NMD::MINA_D(uint64 instruction
)
10329 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10330 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10331 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10333 std::string fd
= FPR(copy(fd_value
));
10334 std::string fs
= FPR(copy(fs_value
));
10335 std::string ft
= FPR(copy(ft_value
));
10337 return img::format("MINA.D %s, %s, %s", fd
, fs
, ft
);
10345 * 10987654321098765432109876543210
10346 * 001000 x1110000101
10351 std::string
NMD::MINA_S(uint64 instruction
)
10353 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10354 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10355 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10357 std::string fd
= FPR(copy(fd_value
));
10358 std::string fs
= FPR(copy(fs_value
));
10359 std::string ft
= FPR(copy(ft_value
));
10361 return img::format("MINA.S %s, %s, %s", fd
, fs
, ft
);
10369 * 10987654321098765432109876543210
10370 * 001000 x1110000101
10375 std::string
NMD::MOD(uint64 instruction
)
10377 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10378 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
10379 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10381 std::string rd
= GPR(copy(rd_value
));
10382 std::string rs
= GPR(copy(rs_value
));
10383 std::string rt
= GPR(copy(rt_value
));
10385 return img::format("MOD %s, %s, %s", rd
, rs
, rt
);
10393 * 10987654321098765432109876543210
10394 * 001000 x1110000101
10399 std::string
NMD::MODSUB(uint64 instruction
)
10401 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10402 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
10403 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10405 std::string rd
= GPR(copy(rd_value
));
10406 std::string rs
= GPR(copy(rs_value
));
10407 std::string rt
= GPR(copy(rt_value
));
10409 return img::format("MODSUB %s, %s, %s", rd
, rs
, rt
);
10417 * 10987654321098765432109876543210
10418 * 001000 x1110000101
10423 std::string
NMD::MODU(uint64 instruction
)
10425 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10426 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
10427 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10429 std::string rd
= GPR(copy(rd_value
));
10430 std::string rs
= GPR(copy(rs_value
));
10431 std::string rt
= GPR(copy(rt_value
));
10433 return img::format("MODU %s, %s, %s", rd
, rs
, rt
);
10441 * 10987654321098765432109876543210
10442 * 001000 x1110000101
10447 std::string
NMD::MOV_D(uint64 instruction
)
10449 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10450 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10452 std::string ft
= FPR(copy(ft_value
));
10453 std::string fs
= FPR(copy(fs_value
));
10455 return img::format("MOV.D %s, %s", ft
, fs
);
10463 * 10987654321098765432109876543210
10464 * 001000 x1110000101
10469 std::string
NMD::MOV_S(uint64 instruction
)
10471 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10472 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10474 std::string ft
= FPR(copy(ft_value
));
10475 std::string fs
= FPR(copy(fs_value
));
10477 return img::format("MOV.S %s, %s", ft
, fs
);
10485 * 10987654321098765432109876543210
10486 * 001000 x1110000101
10491 std::string
NMD::MOVE_BALC(uint64 instruction
)
10493 uint64 rd1_value
= extract_rdl_25_24(instruction
);
10494 int64 s_value
= extr_sil0il21bs1_il1il1bs20Tmsb21(instruction
);
10495 uint64 rtz4_value
= extract_rtz4_27_26_25_23_22_21(instruction
);
10497 std::string rd1
= GPR(encode_rd1_from_rd(rd1_value
));
10498 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
10499 std::string s
= ADDRESS(encode_s_from_address(s_value
), 4);
10501 return img::format("MOVE.BALC %s, %s, %s", rd1
, rtz4
, s
);
10509 * 10987654321098765432109876543210
10510 * 001000 x1110000101
10515 std::string
NMD::MOVEP(uint64 instruction
)
10517 uint64 rsz4_value
= extract_rsz4_4_2_1_0(instruction
);
10518 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
10519 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10521 std::string rd2
= GPR(encode_rd2_reg1(rd2_value
));
10522 std::string re2
= GPR(encode_rd2_reg2(rd2_value
));
10523 /* !!!!!!!!!! - no conversion function */
10524 std::string rsz4
= GPR(encode_gpr4_zero(rsz4_value
));
10525 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
10527 return img::format("MOVEP %s, %s, %s, %s", rd2
, re2
, rsz4
, rtz4
);
10536 * 10987654321098765432109876543210
10537 * 001000 x1110000101
10542 std::string
NMD::MOVEP_REV_(uint64 instruction
)
10544 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
10545 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
10546 uint64 rd2_value
= extract_rd2_3_8(instruction
);
10548 std::string rs4
= GPR(encode_gpr4(rs4_value
));
10549 std::string rt4
= GPR(encode_gpr4(rt4_value
));
10550 std::string rd2
= GPR(encode_rd2_reg1(rd2_value
));
10551 std::string rs2
= GPR(encode_rd2_reg2(rd2_value
));
10552 /* !!!!!!!!!! - no conversion function */
10554 return img::format("MOVEP %s, %s, %s, %s", rs4
, rt4
, rd2
, rs2
);
10560 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10563 * 10987654321098765432109876543210
10564 * 001000 00010001101
10569 std::string
NMD::MOVE(uint64 instruction
)
10571 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
10572 uint64 rs_value
= extract_rs_4_3_2_1_0(instruction
);
10574 std::string rt
= GPR(copy(rt_value
));
10575 std::string rs
= GPR(copy(rs_value
));
10577 return img::format("MOVE %s, %s", rt
, rs
);
10582 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10585 * 10987654321098765432109876543210
10586 * 001000 00010001101
10591 std::string
NMD::MOVN(uint64 instruction
)
10593 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10594 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
10595 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10597 std::string rd
= GPR(copy(rd_value
));
10598 std::string rs
= GPR(copy(rs_value
));
10599 std::string rt
= GPR(copy(rt_value
));
10601 return img::format("MOVN %s, %s, %s", rd
, rs
, rt
);
10606 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10609 * 10987654321098765432109876543210
10610 * 001000 00010001101
10615 std::string
NMD::MOVZ(uint64 instruction
)
10617 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10618 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
10619 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10621 std::string rd
= GPR(copy(rd_value
));
10622 std::string rs
= GPR(copy(rs_value
));
10623 std::string rt
= GPR(copy(rt_value
));
10625 return img::format("MOVZ %s, %s, %s", rd
, rs
, rt
);
10630 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10633 * 10987654321098765432109876543210
10634 * 001000 00010001101
10639 std::string
NMD::MSUB_DSP_(uint64 instruction
)
10641 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10642 uint64 ac_value
= extract_ac_13_12(instruction
);
10643 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10645 std::string ac
= AC(copy(ac_value
));
10646 std::string rs
= GPR(copy(rs_value
));
10647 std::string rt
= GPR(copy(rt_value
));
10649 return img::format("MSUB %s, %s, %s", ac
, rs
, rt
);
10654 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10657 * 10987654321098765432109876543210
10658 * 001000 00010001101
10663 std::string
NMD::MSUBF_D(uint64 instruction
)
10665 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10666 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10667 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10669 std::string fd
= FPR(copy(fd_value
));
10670 std::string fs
= FPR(copy(fs_value
));
10671 std::string ft
= FPR(copy(ft_value
));
10673 return img::format("MSUBF.D %s, %s, %s", fd
, fs
, ft
);
10678 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10681 * 10987654321098765432109876543210
10682 * 001000 00010001101
10687 std::string
NMD::MSUBF_S(uint64 instruction
)
10689 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10690 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
10691 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
10693 std::string fd
= FPR(copy(fd_value
));
10694 std::string fs
= FPR(copy(fs_value
));
10695 std::string ft
= FPR(copy(ft_value
));
10697 return img::format("MSUBF.S %s, %s, %s", fd
, fs
, ft
);
10702 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10705 * 10987654321098765432109876543210
10706 * 001000 00010001101
10711 std::string
NMD::MSUBU_DSP_(uint64 instruction
)
10713 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10714 uint64 ac_value
= extract_ac_13_12(instruction
);
10715 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10717 std::string ac
= AC(copy(ac_value
));
10718 std::string rs
= GPR(copy(rs_value
));
10719 std::string rt
= GPR(copy(rt_value
));
10721 return img::format("MSUBU %s, %s, %s", ac
, rs
, rt
);
10726 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10729 * 10987654321098765432109876543210
10730 * 001000 00010001101
10735 std::string
NMD::MTC0(uint64 instruction
)
10737 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10738 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10739 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10741 std::string rt
= GPR(copy(rt_value
));
10742 std::string c0s
= CPR(copy(c0s_value
));
10743 std::string sel
= IMMEDIATE(copy(sel_value
));
10745 return img::format("MTC0 %s, %s, %s", rt
, c0s
, sel
);
10750 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10753 * 10987654321098765432109876543210
10754 * 001000 00010001101
10759 std::string
NMD::MTC1(uint64 instruction
)
10761 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10762 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10764 std::string rt
= GPR(copy(rt_value
));
10765 std::string fs
= FPR(copy(fs_value
));
10767 return img::format("MTC1 %s, %s", rt
, fs
);
10772 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10775 * 10987654321098765432109876543210
10776 * 001000 00010001101
10781 std::string
NMD::MTC2(uint64 instruction
)
10783 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10784 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10786 std::string rt
= GPR(copy(rt_value
));
10787 std::string cs
= CPR(copy(cs_value
));
10789 return img::format("MTC2 %s, %s", rt
, cs
);
10794 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10797 * 10987654321098765432109876543210
10798 * 001000 00010001101
10803 std::string
NMD::MTGC0(uint64 instruction
)
10805 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10806 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10807 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10809 std::string rt
= GPR(copy(rt_value
));
10810 std::string c0s
= CPR(copy(c0s_value
));
10811 std::string sel
= IMMEDIATE(copy(sel_value
));
10813 return img::format("MTGC0 %s, %s, %s", rt
, c0s
, sel
);
10818 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10821 * 10987654321098765432109876543210
10822 * 001000 00010001101
10827 std::string
NMD::MTHC0(uint64 instruction
)
10829 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10830 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10831 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10833 std::string rt
= GPR(copy(rt_value
));
10834 std::string c0s
= CPR(copy(c0s_value
));
10835 std::string sel
= IMMEDIATE(copy(sel_value
));
10837 return img::format("MTHC0 %s, %s, %s", rt
, c0s
, sel
);
10842 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10845 * 10987654321098765432109876543210
10846 * 001000 00010001101
10851 std::string
NMD::MTHC1(uint64 instruction
)
10853 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10854 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
10856 std::string rt
= GPR(copy(rt_value
));
10857 std::string fs
= FPR(copy(fs_value
));
10859 return img::format("MTHC1 %s, %s", rt
, fs
);
10864 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10867 * 10987654321098765432109876543210
10868 * 001000 00010001101
10873 std::string
NMD::MTHC2(uint64 instruction
)
10875 uint64 cs_value
= extract_cs_20_19_18_17_16(instruction
);
10876 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10878 std::string rt
= GPR(copy(rt_value
));
10879 std::string cs
= CPR(copy(cs_value
));
10881 return img::format("MTHC2 %s, %s", rt
, cs
);
10886 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10889 * 10987654321098765432109876543210
10890 * 001000 00010001101
10895 std::string
NMD::MTHGC0(uint64 instruction
)
10897 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10898 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10899 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10901 std::string rt
= GPR(copy(rt_value
));
10902 std::string c0s
= CPR(copy(c0s_value
));
10903 std::string sel
= IMMEDIATE(copy(sel_value
));
10905 return img::format("MTHGC0 %s, %s, %s", rt
, c0s
, sel
);
10910 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10913 * 10987654321098765432109876543210
10914 * 001000 00010001101
10919 std::string
NMD::MTHI_DSP_(uint64 instruction
)
10921 uint64 ac_value
= extract_ac_13_12(instruction
);
10922 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10924 std::string rs
= GPR(copy(rs_value
));
10925 std::string ac
= AC(copy(ac_value
));
10927 return img::format("MTHI %s, %s", rs
, ac
);
10932 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10935 * 10987654321098765432109876543210
10936 * 001000 00010001101
10941 std::string
NMD::MTHLIP(uint64 instruction
)
10943 uint64 ac_value
= extract_ac_13_12(instruction
);
10944 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10946 std::string rs
= GPR(copy(rs_value
));
10947 std::string ac
= AC(copy(ac_value
));
10949 return img::format("MTHLIP %s, %s", rs
, ac
);
10954 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10957 * 10987654321098765432109876543210
10958 * 001000 00010001101
10963 std::string
NMD::MTHTR(uint64 instruction
)
10965 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
10966 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
10967 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
10968 uint64 u_value
= extract_u_10(instruction
);
10970 std::string rt
= GPR(copy(rt_value
));
10971 std::string c0s
= IMMEDIATE(copy(c0s_value
));
10972 std::string u
= IMMEDIATE(copy(u_value
));
10973 std::string sel
= IMMEDIATE(copy(sel_value
));
10975 return img::format("MTHTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
10980 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
10983 * 10987654321098765432109876543210
10984 * 001000 00010001101
10989 std::string
NMD::MTLO_DSP_(uint64 instruction
)
10991 uint64 ac_value
= extract_ac_13_12(instruction
);
10992 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
10994 std::string rs
= GPR(copy(rs_value
));
10995 std::string ac
= AC(copy(ac_value
));
10997 return img::format("MTLO %s, %s", rs
, ac
);
11002 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11005 * 10987654321098765432109876543210
11006 * 001000 00010001101
11011 std::string
NMD::MTTR(uint64 instruction
)
11013 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11014 uint64 c0s_value
= extract_c0s_20_19_18_17_16(instruction
);
11015 uint64 sel_value
= extract_sel_15_14_13_12_11(instruction
);
11016 uint64 u_value
= extract_u_10(instruction
);
11018 std::string rt
= GPR(copy(rt_value
));
11019 std::string c0s
= IMMEDIATE(copy(c0s_value
));
11020 std::string u
= IMMEDIATE(copy(u_value
));
11021 std::string sel
= IMMEDIATE(copy(sel_value
));
11023 return img::format("MTTR %s, %s, %s, %s", rt
, c0s
, u
, sel
);
11028 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11031 * 10987654321098765432109876543210
11032 * 001000 00010001101
11037 std::string
NMD::MUH(uint64 instruction
)
11039 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11040 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11041 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11043 std::string rd
= GPR(copy(rd_value
));
11044 std::string rs
= GPR(copy(rs_value
));
11045 std::string rt
= GPR(copy(rt_value
));
11047 return img::format("MUH %s, %s, %s", rd
, rs
, rt
);
11052 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11055 * 10987654321098765432109876543210
11056 * 001000 00010001101
11061 std::string
NMD::MUHU(uint64 instruction
)
11063 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11064 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11065 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11067 std::string rd
= GPR(copy(rd_value
));
11068 std::string rs
= GPR(copy(rs_value
));
11069 std::string rt
= GPR(copy(rt_value
));
11071 return img::format("MUHU %s, %s, %s", rd
, rs
, rt
);
11076 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11079 * 10987654321098765432109876543210
11080 * 001000 00010001101
11085 std::string
NMD::MUL_32_(uint64 instruction
)
11087 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11088 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11089 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11091 std::string rd
= GPR(copy(rd_value
));
11092 std::string rs
= GPR(copy(rs_value
));
11093 std::string rt
= GPR(copy(rt_value
));
11095 return img::format("MUL %s, %s, %s", rd
, rs
, rt
);
11100 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11103 * 10987654321098765432109876543210
11104 * 001000 00010001101
11109 std::string
NMD::MUL_4X4_(uint64 instruction
)
11111 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
11112 uint64 rt4_value
= extract_rt4_9_7_6_5(instruction
);
11114 std::string rs4
= GPR(encode_gpr4(rs4_value
));
11115 std::string rt4
= GPR(encode_gpr4(rt4_value
));
11117 return img::format("MUL %s, %s", rs4
, rt4
);
11122 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11125 * 10987654321098765432109876543210
11126 * 001000 00010001101
11131 std::string
NMD::MUL_D(uint64 instruction
)
11133 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
11134 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
11135 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
11137 std::string fd
= FPR(copy(fd_value
));
11138 std::string fs
= FPR(copy(fs_value
));
11139 std::string ft
= FPR(copy(ft_value
));
11141 return img::format("MUL.D %s, %s, %s", fd
, fs
, ft
);
11146 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11149 * 10987654321098765432109876543210
11150 * 001000 00010001101
11155 std::string
NMD::MUL_PH(uint64 instruction
)
11157 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11158 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11159 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11161 std::string rd
= GPR(copy(rd_value
));
11162 std::string rs
= GPR(copy(rs_value
));
11163 std::string rt
= GPR(copy(rt_value
));
11165 return img::format("MUL.PH %s, %s, %s", rd
, rs
, rt
);
11170 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11173 * 10987654321098765432109876543210
11174 * 001000 00010001101
11179 std::string
NMD::MUL_S_PH(uint64 instruction
)
11181 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11182 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11183 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11185 std::string rd
= GPR(copy(rd_value
));
11186 std::string rs
= GPR(copy(rs_value
));
11187 std::string rt
= GPR(copy(rt_value
));
11189 return img::format("MUL_S.PH %s, %s, %s", rd
, rs
, rt
);
11194 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11197 * 10987654321098765432109876543210
11198 * 001000 00010001101
11203 std::string
NMD::MUL_S(uint64 instruction
)
11205 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
11206 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
11207 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
11209 std::string fd
= FPR(copy(fd_value
));
11210 std::string fs
= FPR(copy(fs_value
));
11211 std::string ft
= FPR(copy(ft_value
));
11213 return img::format("MUL.S %s, %s, %s", fd
, fs
, ft
);
11218 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11221 * 10987654321098765432109876543210
11222 * 001000 00010001101
11227 std::string
NMD::MULEQ_S_W_PHL(uint64 instruction
)
11229 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11230 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11231 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11233 std::string rd
= GPR(copy(rd_value
));
11234 std::string rs
= GPR(copy(rs_value
));
11235 std::string rt
= GPR(copy(rt_value
));
11237 return img::format("MULEQ_S.W.PHL %s, %s, %s", rd
, rs
, rt
);
11242 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11245 * 10987654321098765432109876543210
11246 * 001000 00010001101
11251 std::string
NMD::MULEQ_S_W_PHR(uint64 instruction
)
11253 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11254 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11255 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11257 std::string rd
= GPR(copy(rd_value
));
11258 std::string rs
= GPR(copy(rs_value
));
11259 std::string rt
= GPR(copy(rt_value
));
11261 return img::format("MULEQ_S.W.PHR %s, %s, %s", rd
, rs
, rt
);
11266 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11269 * 10987654321098765432109876543210
11270 * 001000 00010001101
11275 std::string
NMD::MULEU_S_PH_QBL(uint64 instruction
)
11277 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11278 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11279 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11281 std::string rd
= GPR(copy(rd_value
));
11282 std::string rs
= GPR(copy(rs_value
));
11283 std::string rt
= GPR(copy(rt_value
));
11285 return img::format("MULEU_S.PH.QBL %s, %s, %s", rd
, rs
, rt
);
11290 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11293 * 10987654321098765432109876543210
11294 * 001000 00010001101
11299 std::string
NMD::MULEU_S_PH_QBR(uint64 instruction
)
11301 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11302 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11303 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11305 std::string rd
= GPR(copy(rd_value
));
11306 std::string rs
= GPR(copy(rs_value
));
11307 std::string rt
= GPR(copy(rt_value
));
11309 return img::format("MULEU_S.PH.QBR %s, %s, %s", rd
, rs
, rt
);
11314 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11317 * 10987654321098765432109876543210
11318 * 001000 00010001101
11323 std::string
NMD::MULQ_RS_PH(uint64 instruction
)
11325 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11326 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11327 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11329 std::string rd
= GPR(copy(rd_value
));
11330 std::string rs
= GPR(copy(rs_value
));
11331 std::string rt
= GPR(copy(rt_value
));
11333 return img::format("MULQ_RS.PH %s, %s, %s", rd
, rs
, rt
);
11338 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11341 * 10987654321098765432109876543210
11342 * 001000 00010001101
11347 std::string
NMD::MULQ_RS_W(uint64 instruction
)
11349 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11350 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11351 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11353 std::string rd
= GPR(copy(rd_value
));
11354 std::string rs
= GPR(copy(rs_value
));
11355 std::string rt
= GPR(copy(rt_value
));
11357 return img::format("MULQ_RS.W %s, %s, %s", rd
, rs
, rt
);
11362 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11365 * 10987654321098765432109876543210
11366 * 001000 00010001101
11371 std::string
NMD::MULQ_S_PH(uint64 instruction
)
11373 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11374 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11375 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11377 std::string rd
= GPR(copy(rd_value
));
11378 std::string rs
= GPR(copy(rs_value
));
11379 std::string rt
= GPR(copy(rt_value
));
11381 return img::format("MULQ_S.PH %s, %s, %s", rd
, rs
, rt
);
11386 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11389 * 10987654321098765432109876543210
11390 * 001000 00010001101
11395 std::string
NMD::MULQ_S_W(uint64 instruction
)
11397 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11398 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11399 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11401 std::string rd
= GPR(copy(rd_value
));
11402 std::string rs
= GPR(copy(rs_value
));
11403 std::string rt
= GPR(copy(rt_value
));
11405 return img::format("MULQ_S.W %s, %s, %s", rd
, rs
, rt
);
11410 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11413 * 10987654321098765432109876543210
11414 * 001000 00010001101
11419 std::string
NMD::MULSA_W_PH(uint64 instruction
)
11421 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11422 uint64 ac_value
= extract_ac_13_12(instruction
);
11423 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11425 std::string ac
= AC(copy(ac_value
));
11426 std::string rs
= GPR(copy(rs_value
));
11427 std::string rt
= GPR(copy(rt_value
));
11429 return img::format("MULSA.W.PH %s, %s, %s", ac
, rs
, rt
);
11434 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11437 * 10987654321098765432109876543210
11438 * 001000 00010001101
11443 std::string
NMD::MULSAQ_S_W_PH(uint64 instruction
)
11445 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11446 uint64 ac_value
= extract_ac_13_12(instruction
);
11447 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11449 std::string ac
= AC(copy(ac_value
));
11450 std::string rs
= GPR(copy(rs_value
));
11451 std::string rt
= GPR(copy(rt_value
));
11453 return img::format("MULSAQ_S.W.PH %s, %s, %s", ac
, rs
, rt
);
11458 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11461 * 10987654321098765432109876543210
11462 * 001000 00010001101
11467 std::string
NMD::MULT_DSP_(uint64 instruction
)
11469 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11470 uint64 ac_value
= extract_ac_13_12(instruction
);
11471 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11473 std::string ac
= AC(copy(ac_value
));
11474 std::string rs
= GPR(copy(rs_value
));
11475 std::string rt
= GPR(copy(rt_value
));
11477 return img::format("MULT %s, %s, %s", ac
, rs
, rt
);
11482 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11485 * 10987654321098765432109876543210
11486 * 001000 00010001101
11491 std::string
NMD::MULTU_DSP_(uint64 instruction
)
11493 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11494 uint64 ac_value
= extract_ac_13_12(instruction
);
11495 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11497 std::string ac
= AC(copy(ac_value
));
11498 std::string rs
= GPR(copy(rs_value
));
11499 std::string rt
= GPR(copy(rt_value
));
11501 return img::format("MULTU %s, %s, %s", ac
, rs
, rt
);
11506 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11509 * 10987654321098765432109876543210
11510 * 001000 00010001101
11515 std::string
NMD::MULU(uint64 instruction
)
11517 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11518 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11519 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11521 std::string rd
= GPR(copy(rd_value
));
11522 std::string rs
= GPR(copy(rs_value
));
11523 std::string rt
= GPR(copy(rt_value
));
11525 return img::format("MULU %s, %s, %s", rd
, rs
, rt
);
11530 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11533 * 10987654321098765432109876543210
11534 * 001000 00010001101
11539 std::string
NMD::NEG_D(uint64 instruction
)
11541 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
11542 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
11544 std::string ft
= FPR(copy(ft_value
));
11545 std::string fs
= FPR(copy(fs_value
));
11547 return img::format("NEG.D %s, %s", ft
, fs
);
11552 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11555 * 10987654321098765432109876543210
11556 * 001000 00010001101
11561 std::string
NMD::NEG_S(uint64 instruction
)
11563 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
11564 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
11566 std::string ft
= FPR(copy(ft_value
));
11567 std::string fs
= FPR(copy(fs_value
));
11569 return img::format("NEG.S %s, %s", ft
, fs
);
11574 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11577 * 10987654321098765432109876543210
11578 * 001000 00010001101
11583 std::string
NMD::NOP_16_(uint64 instruction
)
11592 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11595 * 10987654321098765432109876543210
11596 * 001000 00010001101
11601 std::string
NMD::NOP_32_(uint64 instruction
)
11610 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11613 * 10987654321098765432109876543210
11614 * 001000 00010001101
11619 std::string
NMD::NOR(uint64 instruction
)
11621 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11622 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11623 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11625 std::string rd
= GPR(copy(rd_value
));
11626 std::string rs
= GPR(copy(rs_value
));
11627 std::string rt
= GPR(copy(rt_value
));
11629 return img::format("NOR %s, %s, %s", rd
, rs
, rt
);
11634 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11637 * 10987654321098765432109876543210
11638 * 001000 00010001101
11643 std::string
NMD::NOT_16_(uint64 instruction
)
11645 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11646 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11648 std::string rt3
= GPR(encode_gpr3(rt3_value
));
11649 std::string rs3
= GPR(encode_gpr3(rs3_value
));
11651 return img::format("NOT %s, %s", rt3
, rs3
);
11656 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11659 * 10987654321098765432109876543210
11660 * 001000 00010001101
11665 std::string
NMD::OR_16_(uint64 instruction
)
11667 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
11668 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
11670 std::string rs3
= GPR(encode_gpr3(rs3_value
));
11671 std::string rt3
= GPR(encode_gpr3(rt3_value
));
11673 return img::format("OR %s, %s", rs3
, rt3
);
11678 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11681 * 10987654321098765432109876543210
11682 * 001000 00010001101
11687 std::string
NMD::OR_32_(uint64 instruction
)
11689 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11690 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11691 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11693 std::string rd
= GPR(copy(rd_value
));
11694 std::string rs
= GPR(copy(rs_value
));
11695 std::string rt
= GPR(copy(rt_value
));
11697 return img::format("OR %s, %s, %s", rd
, rs
, rt
);
11702 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11705 * 10987654321098765432109876543210
11706 * 001000 00010001101
11711 std::string
NMD::ORI(uint64 instruction
)
11713 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11714 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
11715 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11717 std::string rt
= GPR(copy(rt_value
));
11718 std::string rs
= GPR(copy(rs_value
));
11719 std::string u
= IMMEDIATE(copy(u_value
));
11721 return img::format("ORI %s, %s, %s", rt
, rs
, u
);
11726 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11729 * 10987654321098765432109876543210
11730 * 001000 00010001101
11735 std::string
NMD::PACKRL_PH(uint64 instruction
)
11737 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11738 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11739 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11741 std::string rd
= GPR(copy(rd_value
));
11742 std::string rs
= GPR(copy(rs_value
));
11743 std::string rt
= GPR(copy(rt_value
));
11745 return img::format("PACKRL.PH %s, %s, %s", rd
, rs
, rt
);
11750 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11753 * 10987654321098765432109876543210
11754 * 001000 00010001101
11759 std::string
NMD::PAUSE(uint64 instruction
)
11768 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11771 * 10987654321098765432109876543210
11772 * 001000 00010001101
11777 std::string
NMD::PICK_PH(uint64 instruction
)
11779 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11780 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11781 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11783 std::string rd
= GPR(copy(rd_value
));
11784 std::string rs
= GPR(copy(rs_value
));
11785 std::string rt
= GPR(copy(rt_value
));
11787 return img::format("PICK.PH %s, %s, %s", rd
, rs
, rt
);
11792 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11795 * 10987654321098765432109876543210
11796 * 001000 00010001101
11801 std::string
NMD::PICK_QB(uint64 instruction
)
11803 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11804 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
11805 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11807 std::string rd
= GPR(copy(rd_value
));
11808 std::string rs
= GPR(copy(rs_value
));
11809 std::string rt
= GPR(copy(rt_value
));
11811 return img::format("PICK.QB %s, %s, %s", rd
, rs
, rt
);
11816 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11819 * 10987654321098765432109876543210
11820 * 001000 00010001101
11825 std::string
NMD::PRECEQ_W_PHL(uint64 instruction
)
11827 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11828 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11830 std::string rt
= GPR(copy(rt_value
));
11831 std::string rs
= GPR(copy(rs_value
));
11833 return img::format("PRECEQ.W.PHL %s, %s", rt
, rs
);
11838 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11841 * 10987654321098765432109876543210
11842 * 001000 00010001101
11847 std::string
NMD::PRECEQ_W_PHR(uint64 instruction
)
11849 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11850 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11852 std::string rt
= GPR(copy(rt_value
));
11853 std::string rs
= GPR(copy(rs_value
));
11855 return img::format("PRECEQ.W.PHR %s, %s", rt
, rs
);
11860 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11863 * 10987654321098765432109876543210
11864 * 001000 00010001101
11869 std::string
NMD::PRECEQU_PH_QBLA(uint64 instruction
)
11871 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11872 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11874 std::string rt
= GPR(copy(rt_value
));
11875 std::string rs
= GPR(copy(rs_value
));
11877 return img::format("PRECEQU.PH.QBLA %s, %s", rt
, rs
);
11882 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11885 * 10987654321098765432109876543210
11886 * 001000 00010001101
11891 std::string
NMD::PRECEQU_PH_QBL(uint64 instruction
)
11893 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11894 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11896 std::string rt
= GPR(copy(rt_value
));
11897 std::string rs
= GPR(copy(rs_value
));
11899 return img::format("PRECEQU.PH.QBL %s, %s", rt
, rs
);
11904 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11907 * 10987654321098765432109876543210
11908 * 001000 00010001101
11913 std::string
NMD::PRECEQU_PH_QBRA(uint64 instruction
)
11915 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11916 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11918 std::string rt
= GPR(copy(rt_value
));
11919 std::string rs
= GPR(copy(rs_value
));
11921 return img::format("PRECEQU.PH.QBRA %s, %s", rt
, rs
);
11926 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11929 * 10987654321098765432109876543210
11930 * 001000 00010001101
11935 std::string
NMD::PRECEQU_PH_QBR(uint64 instruction
)
11937 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11938 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11940 std::string rt
= GPR(copy(rt_value
));
11941 std::string rs
= GPR(copy(rs_value
));
11943 return img::format("PRECEQU.PH.QBR %s, %s", rt
, rs
);
11948 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11951 * 10987654321098765432109876543210
11952 * 001000 00010001101
11957 std::string
NMD::PRECEU_PH_QBLA(uint64 instruction
)
11959 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11960 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11962 std::string rt
= GPR(copy(rt_value
));
11963 std::string rs
= GPR(copy(rs_value
));
11965 return img::format("PRECEU.PH.QBLA %s, %s", rt
, rs
);
11970 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11973 * 10987654321098765432109876543210
11974 * 001000 00010001101
11979 std::string
NMD::PRECEU_PH_QBL(uint64 instruction
)
11981 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
11982 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
11984 std::string rt
= GPR(copy(rt_value
));
11985 std::string rs
= GPR(copy(rs_value
));
11987 return img::format("PRECEU.PH.QBL %s, %s", rt
, rs
);
11992 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
11995 * 10987654321098765432109876543210
11996 * 001000 00010001101
12001 std::string
NMD::PRECEU_PH_QBRA(uint64 instruction
)
12003 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12004 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12006 std::string rt
= GPR(copy(rt_value
));
12007 std::string rs
= GPR(copy(rs_value
));
12009 return img::format("PRECEU.PH.QBRA %s, %s", rt
, rs
);
12014 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12017 * 10987654321098765432109876543210
12018 * 001000 00010001101
12023 std::string
NMD::PRECEU_PH_QBR(uint64 instruction
)
12025 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12026 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12028 std::string rt
= GPR(copy(rt_value
));
12029 std::string rs
= GPR(copy(rs_value
));
12031 return img::format("PRECEU.PH.QBR %s, %s", rt
, rs
);
12036 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
12039 * 10987654321098765432109876543210
12040 * 001000 00010001101
12045 std::string
NMD::PRECR_QB_PH(uint64 instruction
)
12047 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12048 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12049 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12051 std::string rd
= GPR(copy(rd_value
));
12052 std::string rs
= GPR(copy(rs_value
));
12053 std::string rt
= GPR(copy(rt_value
));
12055 return img::format("PRECR.QB.PH %s, %s, %s", rd
, rs
, rt
);
12063 * 10987654321098765432109876543210
12064 * 001000 x1110000101
12069 std::string
NMD::PRECR_SRA_PH_W(uint64 instruction
)
12071 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12072 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12073 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12075 std::string rt
= GPR(copy(rt_value
));
12076 std::string rs
= GPR(copy(rs_value
));
12077 std::string sa
= IMMEDIATE(copy(sa_value
));
12079 return img::format("PRECR_SRA.PH.W %s, %s, %s", rt
, rs
, sa
);
12087 * 10987654321098765432109876543210
12088 * 001000 x1110000101
12093 std::string
NMD::PRECR_SRA_R_PH_W(uint64 instruction
)
12095 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12096 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12097 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12099 std::string rt
= GPR(copy(rt_value
));
12100 std::string rs
= GPR(copy(rs_value
));
12101 std::string sa
= IMMEDIATE(copy(sa_value
));
12103 return img::format("PRECR_SRA_R.PH.W %s, %s, %s", rt
, rs
, sa
);
12111 * 10987654321098765432109876543210
12112 * 001000 x1110000101
12117 std::string
NMD::PRECRQ_PH_W(uint64 instruction
)
12119 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12120 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12121 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12123 std::string rd
= GPR(copy(rd_value
));
12124 std::string rs
= GPR(copy(rs_value
));
12125 std::string rt
= GPR(copy(rt_value
));
12127 return img::format("PRECRQ.PH.W %s, %s, %s", rd
, rs
, rt
);
12135 * 10987654321098765432109876543210
12136 * 001000 x1110000101
12141 std::string
NMD::PRECRQ_QB_PH(uint64 instruction
)
12143 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12144 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12145 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12147 std::string rd
= GPR(copy(rd_value
));
12148 std::string rs
= GPR(copy(rs_value
));
12149 std::string rt
= GPR(copy(rt_value
));
12151 return img::format("PRECRQ.QB.PH %s, %s, %s", rd
, rs
, rt
);
12159 * 10987654321098765432109876543210
12160 * 001000 x1110000101
12165 std::string
NMD::PRECRQ_RS_PH_W(uint64 instruction
)
12167 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12168 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12169 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12171 std::string rd
= GPR(copy(rd_value
));
12172 std::string rs
= GPR(copy(rs_value
));
12173 std::string rt
= GPR(copy(rt_value
));
12175 return img::format("PRECRQ_RS.PH.W %s, %s, %s", rd
, rs
, rt
);
12183 * 10987654321098765432109876543210
12184 * 001000 x1110000101
12189 std::string
NMD::PRECRQU_S_QB_PH(uint64 instruction
)
12191 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12192 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12193 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12195 std::string rd
= GPR(copy(rd_value
));
12196 std::string rs
= GPR(copy(rs_value
));
12197 std::string rt
= GPR(copy(rt_value
));
12199 return img::format("PRECRQU_S.QB.PH %s, %s, %s", rd
, rs
, rt
);
12207 * 10987654321098765432109876543210
12208 * 001000 x1110000101
12213 std::string
NMD::PREF_S9_(uint64 instruction
)
12215 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
12216 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12217 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12219 std::string hint
= IMMEDIATE(copy(hint_value
));
12220 std::string s
= IMMEDIATE(copy(s_value
));
12221 std::string rs
= GPR(copy(rs_value
));
12223 return img::format("PREF %s, %s(%s)", hint
, s
, rs
);
12231 * 10987654321098765432109876543210
12232 * 001000 x1110000101
12237 std::string
NMD::PREF_U12_(uint64 instruction
)
12239 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12240 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
12241 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12243 std::string hint
= IMMEDIATE(copy(hint_value
));
12244 std::string u
= IMMEDIATE(copy(u_value
));
12245 std::string rs
= GPR(copy(rs_value
));
12247 return img::format("PREF %s, %s(%s)", hint
, u
, rs
);
12255 * 10987654321098765432109876543210
12256 * 001000 x1110000101
12261 std::string
NMD::PREFE(uint64 instruction
)
12263 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
12264 uint64 hint_value
= extract_hint_25_24_23_22_21(instruction
);
12265 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12267 std::string hint
= IMMEDIATE(copy(hint_value
));
12268 std::string s
= IMMEDIATE(copy(s_value
));
12269 std::string rs
= GPR(copy(rs_value
));
12271 return img::format("PREFE %s, %s(%s)", hint
, s
, rs
);
12279 * 10987654321098765432109876543210
12280 * 001000 x1110000101
12285 std::string
NMD::PREPEND(uint64 instruction
)
12287 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12288 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
12289 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12291 std::string rt
= GPR(copy(rt_value
));
12292 std::string rs
= GPR(copy(rs_value
));
12293 std::string sa
= IMMEDIATE(copy(sa_value
));
12295 return img::format("PREPEND %s, %s, %s", rt
, rs
, sa
);
12303 * 10987654321098765432109876543210
12304 * 001000 x1110000101
12309 std::string
NMD::RADDU_W_QB(uint64 instruction
)
12311 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12312 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12314 std::string rt
= GPR(copy(rt_value
));
12315 std::string rs
= GPR(copy(rs_value
));
12317 return img::format("RADDU.W.QB %s, %s", rt
, rs
);
12325 * 10987654321098765432109876543210
12326 * 001000 x1110000101
12331 std::string
NMD::RDDSP(uint64 instruction
)
12333 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12334 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
12336 std::string rt
= GPR(copy(rt_value
));
12337 std::string mask
= IMMEDIATE(copy(mask_value
));
12339 return img::format("RDDSP %s, %s", rt
, mask
);
12347 * 10987654321098765432109876543210
12348 * 001000 x1110000101
12353 std::string
NMD::RDHWR(uint64 instruction
)
12355 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12356 uint64 hs_value
= extract_hs_20_19_18_17_16(instruction
);
12357 uint64 sel_value
= extract_sel_13_12_11(instruction
);
12359 std::string rt
= GPR(copy(rt_value
));
12360 std::string hs
= CPR(copy(hs_value
));
12361 std::string sel
= IMMEDIATE(copy(sel_value
));
12363 return img::format("RDHWR %s, %s, %s", rt
, hs
, sel
);
12371 * 10987654321098765432109876543210
12372 * 001000 x1110000101
12377 std::string
NMD::RDPGPR(uint64 instruction
)
12379 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12380 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12382 std::string rt
= GPR(copy(rt_value
));
12383 std::string rs
= GPR(copy(rs_value
));
12385 return img::format("RDPGPR %s, %s", rt
, rs
);
12393 * 10987654321098765432109876543210
12394 * 001000 x1110000101
12399 std::string
NMD::RECIP_D(uint64 instruction
)
12401 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12402 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12404 std::string ft
= FPR(copy(ft_value
));
12405 std::string fs
= FPR(copy(fs_value
));
12407 return img::format("RECIP.D %s, %s", ft
, fs
);
12415 * 10987654321098765432109876543210
12416 * 001000 x1110000101
12421 std::string
NMD::RECIP_S(uint64 instruction
)
12423 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12424 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12426 std::string ft
= FPR(copy(ft_value
));
12427 std::string fs
= FPR(copy(fs_value
));
12429 return img::format("RECIP.S %s, %s", ft
, fs
);
12437 * 10987654321098765432109876543210
12438 * 001000 x1110000101
12443 std::string
NMD::REPL_PH(uint64 instruction
)
12445 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12446 int64 s_value
= extr_sil11il0bs10Tmsb9(instruction
);
12448 std::string rt
= GPR(copy(rt_value
));
12449 std::string s
= IMMEDIATE(copy(s_value
));
12451 return img::format("REPL.PH %s, %s", rt
, s
);
12459 * 10987654321098765432109876543210
12460 * 001000 x1110000101
12465 std::string
NMD::REPL_QB(uint64 instruction
)
12467 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12468 uint64 u_value
= extract_u_20_19_18_17_16_15_14_13(instruction
);
12470 std::string rt
= GPR(copy(rt_value
));
12471 std::string u
= IMMEDIATE(copy(u_value
));
12473 return img::format("REPL.QB %s, %s", rt
, u
);
12481 * 10987654321098765432109876543210
12482 * 001000 x1110000101
12487 std::string
NMD::REPLV_PH(uint64 instruction
)
12489 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12490 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12492 std::string rt
= GPR(copy(rt_value
));
12493 std::string rs
= GPR(copy(rs_value
));
12495 return img::format("REPLV.PH %s, %s", rt
, rs
);
12503 * 10987654321098765432109876543210
12504 * 001000 x1110000101
12509 std::string
NMD::REPLV_QB(uint64 instruction
)
12511 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12512 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12514 std::string rt
= GPR(copy(rt_value
));
12515 std::string rs
= GPR(copy(rs_value
));
12517 return img::format("REPLV.QB %s, %s", rt
, rs
);
12525 * 10987654321098765432109876543210
12526 * 001000 x1110000101
12531 std::string
NMD::RESTORE_32_(uint64 instruction
)
12533 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12534 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12535 uint64 u_value
= extr_uil3il3bs9Fmsb11(instruction
);
12536 uint64 gp_value
= extract_gp_2(instruction
);
12538 std::string u
= IMMEDIATE(copy(u_value
));
12539 return img::format("RESTORE %s%s", u
,
12540 save_restore_list(rt_value
, count_value
, gp_value
));
12548 * 10987654321098765432109876543210
12549 * 001000 x1110000101
12554 std::string
NMD::RESTORE_JRC_16_(uint64 instruction
)
12556 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12557 uint64 rt1_value
= extract_rtl_11(instruction
);
12558 uint64 u_value
= extr_uil4il4bs4Fmsb7(instruction
);
12560 std::string u
= IMMEDIATE(copy(u_value
));
12561 return img::format("RESTORE.JRC %s%s", u
,
12562 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12570 * 10987654321098765432109876543210
12571 * 001000 x1110000101
12576 std::string
NMD::RESTORE_JRC_32_(uint64 instruction
)
12578 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12579 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12580 uint64 u_value
= extr_uil3il3bs9Fmsb11(instruction
);
12581 uint64 gp_value
= extract_gp_2(instruction
);
12583 std::string u
= IMMEDIATE(copy(u_value
));
12584 return img::format("RESTORE.JRC %s%s", u
,
12585 save_restore_list(rt_value
, count_value
, gp_value
));
12593 * 10987654321098765432109876543210
12594 * 001000 x1110000101
12599 std::string
NMD::RESTOREF(uint64 instruction
)
12601 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12602 uint64 u_value
= extr_uil3il3bs9Fmsb11(instruction
);
12604 std::string u
= IMMEDIATE(copy(u_value
));
12605 std::string count
= IMMEDIATE(copy(count_value
));
12607 return img::format("RESTOREF %s, %s", u
, count
);
12615 * 10987654321098765432109876543210
12616 * 001000 x1110000101
12621 std::string
NMD::RINT_D(uint64 instruction
)
12623 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12624 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12626 std::string ft
= FPR(copy(ft_value
));
12627 std::string fs
= FPR(copy(fs_value
));
12629 return img::format("RINT.D %s, %s", ft
, fs
);
12637 * 10987654321098765432109876543210
12638 * 001000 x1110000101
12643 std::string
NMD::RINT_S(uint64 instruction
)
12645 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12646 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12648 std::string ft
= FPR(copy(ft_value
));
12649 std::string fs
= FPR(copy(fs_value
));
12651 return img::format("RINT.S %s, %s", ft
, fs
);
12659 * 10987654321098765432109876543210
12660 * 001000 x1110000101
12665 std::string
NMD::ROTR(uint64 instruction
)
12667 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12668 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12669 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12671 std::string rt
= GPR(copy(rt_value
));
12672 std::string rs
= GPR(copy(rs_value
));
12673 std::string shift
= IMMEDIATE(copy(shift_value
));
12675 return img::format("ROTR %s, %s, %s", rt
, rs
, shift
);
12683 * 10987654321098765432109876543210
12684 * 001000 x1110000101
12689 std::string
NMD::ROTRV(uint64 instruction
)
12691 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12692 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
12693 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12695 std::string rd
= GPR(copy(rd_value
));
12696 std::string rs
= GPR(copy(rs_value
));
12697 std::string rt
= GPR(copy(rt_value
));
12699 return img::format("ROTRV %s, %s, %s", rd
, rs
, rt
);
12707 * 10987654321098765432109876543210
12708 * 001000 x1110000101
12713 std::string
NMD::ROTX(uint64 instruction
)
12715 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12716 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
12717 uint64 shiftx_value
= extr_shiftxil7il1bs4Fmsb4(instruction
);
12718 uint64 stripe_value
= extract_stripe_6(instruction
);
12719 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12721 std::string rt
= GPR(copy(rt_value
));
12722 std::string rs
= GPR(copy(rs_value
));
12723 std::string shift
= IMMEDIATE(copy(shift_value
));
12724 std::string shiftx
= IMMEDIATE(copy(shiftx_value
));
12725 std::string stripe
= IMMEDIATE(copy(stripe_value
));
12727 return img::format("ROTX %s, %s, %s, %s, %s",
12728 rt
, rs
, shift
, shiftx
, stripe
);
12736 * 10987654321098765432109876543210
12737 * 001000 x1110000101
12742 std::string
NMD::ROUND_L_D(uint64 instruction
)
12744 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12745 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12747 std::string ft
= FPR(copy(ft_value
));
12748 std::string fs
= FPR(copy(fs_value
));
12750 return img::format("ROUND.L.D %s, %s", ft
, fs
);
12758 * 10987654321098765432109876543210
12759 * 001000 x1110000101
12764 std::string
NMD::ROUND_L_S(uint64 instruction
)
12766 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12767 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12769 std::string ft
= FPR(copy(ft_value
));
12770 std::string fs
= FPR(copy(fs_value
));
12772 return img::format("ROUND.L.S %s, %s", ft
, fs
);
12780 * 10987654321098765432109876543210
12781 * 001000 x1110000101
12786 std::string
NMD::ROUND_W_D(uint64 instruction
)
12788 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12789 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12791 std::string ft
= FPR(copy(ft_value
));
12792 std::string fs
= FPR(copy(fs_value
));
12794 return img::format("ROUND.W.D %s, %s", ft
, fs
);
12802 * 10987654321098765432109876543210
12803 * 001000 x1110000101
12808 std::string
NMD::ROUND_W_S(uint64 instruction
)
12810 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12811 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12813 std::string ft
= FPR(copy(ft_value
));
12814 std::string fs
= FPR(copy(fs_value
));
12816 return img::format("ROUND.W.S %s, %s", ft
, fs
);
12824 * 10987654321098765432109876543210
12825 * 001000 x1110000101
12830 std::string
NMD::RSQRT_D(uint64 instruction
)
12832 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12833 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12835 std::string ft
= FPR(copy(ft_value
));
12836 std::string fs
= FPR(copy(fs_value
));
12838 return img::format("RSQRT.D %s, %s", ft
, fs
);
12846 * 10987654321098765432109876543210
12847 * 001000 x1110000101
12852 std::string
NMD::RSQRT_S(uint64 instruction
)
12854 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
12855 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
12857 std::string ft
= FPR(copy(ft_value
));
12858 std::string fs
= FPR(copy(fs_value
));
12860 return img::format("RSQRT.S %s, %s", ft
, fs
);
12868 * 10987654321098765432109876543210
12869 * 001000 01001001101
12874 std::string
NMD::SAVE_16_(uint64 instruction
)
12876 uint64 count_value
= extract_count_3_2_1_0(instruction
);
12877 uint64 rt1_value
= extract_rtl_11(instruction
);
12878 uint64 u_value
= extr_uil4il4bs4Fmsb7(instruction
);
12880 std::string u
= IMMEDIATE(copy(u_value
));
12881 return img::format("SAVE %s%s", u
,
12882 save_restore_list(encode_rt1_from_rt(rt1_value
), count_value
, 0));
12890 * 10987654321098765432109876543210
12891 * 001000 01001001101
12896 std::string
NMD::SAVE_32_(uint64 instruction
)
12898 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12899 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12900 uint64 u_value
= extr_uil3il3bs9Fmsb11(instruction
);
12901 uint64 gp_value
= extract_gp_2(instruction
);
12903 std::string u
= IMMEDIATE(copy(u_value
));
12904 return img::format("SAVE %s%s", u
,
12905 save_restore_list(rt_value
, count_value
, gp_value
));
12913 * 10987654321098765432109876543210
12914 * 001000 01001001101
12919 std::string
NMD::SAVEF(uint64 instruction
)
12921 uint64 count_value
= extract_count_19_18_17_16(instruction
);
12922 uint64 u_value
= extr_uil3il3bs9Fmsb11(instruction
);
12924 std::string u
= IMMEDIATE(copy(u_value
));
12925 std::string count
= IMMEDIATE(copy(count_value
));
12927 return img::format("SAVEF %s, %s", u
, count
);
12935 * 10987654321098765432109876543210
12936 * 001000 01001001101
12941 std::string
NMD::SB_16_(uint64 instruction
)
12943 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
12944 uint64 u_value
= extract_u_1_0(instruction
);
12945 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
12947 std::string rtz3
= GPR(encode_gpr3_store(rtz3_value
));
12948 std::string u
= IMMEDIATE(copy(u_value
));
12949 std::string rs3
= GPR(encode_gpr3(rs3_value
));
12951 return img::format("SB %s, %s(%s)", rtz3
, u
, rs3
);
12959 * 10987654321098765432109876543210
12960 * 001000 01001001101
12965 std::string
NMD::SB_GP_(uint64 instruction
)
12967 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12968 uint64 u_value
= extract_u_17_to_0(instruction
);
12970 std::string rt
= GPR(copy(rt_value
));
12971 std::string u
= IMMEDIATE(copy(u_value
));
12973 return img::format("SB %s, %s($%d)", rt
, u
, 28);
12981 * 10987654321098765432109876543210
12982 * 001000 01001001101
12987 std::string
NMD::SB_S9_(uint64 instruction
)
12989 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
12990 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
12991 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
12993 std::string rt
= GPR(copy(rt_value
));
12994 std::string s
= IMMEDIATE(copy(s_value
));
12995 std::string rs
= GPR(copy(rs_value
));
12997 return img::format("SB %s, %s(%s)", rt
, s
, rs
);
13005 * 10987654321098765432109876543210
13006 * 001000 01001001101
13011 std::string
NMD::SB_U12_(uint64 instruction
)
13013 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13014 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13015 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13017 std::string rt
= GPR(copy(rt_value
));
13018 std::string u
= IMMEDIATE(copy(u_value
));
13019 std::string rs
= GPR(copy(rs_value
));
13021 return img::format("SB %s, %s(%s)", rt
, u
, rs
);
13029 * 10987654321098765432109876543210
13030 * 001000 01001001101
13035 std::string
NMD::SBE(uint64 instruction
)
13037 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13038 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13039 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13041 std::string rt
= GPR(copy(rt_value
));
13042 std::string s
= IMMEDIATE(copy(s_value
));
13043 std::string rs
= GPR(copy(rs_value
));
13045 return img::format("SBE %s, %s(%s)", rt
, s
, rs
);
13053 * 10987654321098765432109876543210
13054 * 001000 01001001101
13059 std::string
NMD::SBX(uint64 instruction
)
13061 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13062 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
13063 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13065 std::string rd
= GPR(copy(rd_value
));
13066 std::string rs
= GPR(copy(rs_value
));
13067 std::string rt
= GPR(copy(rt_value
));
13069 return img::format("SBX %s, %s(%s)", rd
, rs
, rt
);
13077 * 10987654321098765432109876543210
13078 * 001000 01001001101
13083 std::string
NMD::SC(uint64 instruction
)
13085 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13086 int64 s_value
= extr_sil2il2bs6_il15il8bs1Tmsb8(instruction
);
13087 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13089 std::string rt
= GPR(copy(rt_value
));
13090 std::string s
= IMMEDIATE(copy(s_value
));
13091 std::string rs
= GPR(copy(rs_value
));
13093 return img::format("SC %s, %s(%s)", rt
, s
, rs
);
13101 * 10987654321098765432109876543210
13102 * 001000 01001001101
13107 std::string
NMD::SCD(uint64 instruction
)
13109 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13110 int64 s_value
= extr_sil3il3bs5_il15il8bs1Tmsb8(instruction
);
13111 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13113 std::string rt
= GPR(copy(rt_value
));
13114 std::string s
= IMMEDIATE(copy(s_value
));
13115 std::string rs
= GPR(copy(rs_value
));
13117 return img::format("SCD %s, %s(%s)", rt
, s
, rs
);
13125 * 10987654321098765432109876543210
13126 * 001000 01001001101
13131 std::string
NMD::SCDP(uint64 instruction
)
13133 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13134 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13135 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13137 std::string rt
= GPR(copy(rt_value
));
13138 std::string ru
= GPR(copy(ru_value
));
13139 std::string rs
= GPR(copy(rs_value
));
13141 return img::format("SCDP %s, %s, (%s)", rt
, ru
, rs
);
13149 * 10987654321098765432109876543210
13150 * 001000 01001001101
13155 std::string
NMD::SCE(uint64 instruction
)
13157 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13158 int64 s_value
= extr_sil2il2bs6_il15il8bs1Tmsb8(instruction
);
13159 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13161 std::string rt
= GPR(copy(rt_value
));
13162 std::string s
= IMMEDIATE(copy(s_value
));
13163 std::string rs
= GPR(copy(rs_value
));
13165 return img::format("SCE %s, %s(%s)", rt
, s
, rs
);
13173 * 10987654321098765432109876543210
13174 * 001000 01001001101
13179 std::string
NMD::SCWP(uint64 instruction
)
13181 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13182 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13183 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13185 std::string rt
= GPR(copy(rt_value
));
13186 std::string ru
= GPR(copy(ru_value
));
13187 std::string rs
= GPR(copy(rs_value
));
13189 return img::format("SCWP %s, %s, (%s)", rt
, ru
, rs
);
13197 * 10987654321098765432109876543210
13198 * 001000 01001001101
13203 std::string
NMD::SCWPE(uint64 instruction
)
13205 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13206 uint64 ru_value
= extract_ru_7_6_5_4_3(instruction
);
13207 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13209 std::string rt
= GPR(copy(rt_value
));
13210 std::string ru
= GPR(copy(ru_value
));
13211 std::string rs
= GPR(copy(rs_value
));
13213 return img::format("SCWPE %s, %s, (%s)", rt
, ru
, rs
);
13221 * 10987654321098765432109876543210
13222 * 001000 01001001101
13227 std::string
NMD::SD_GP_(uint64 instruction
)
13229 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13230 uint64 u_value
= extr_uil3il3bs18Fmsb20(instruction
);
13232 std::string rt
= GPR(copy(rt_value
));
13233 std::string u
= IMMEDIATE(copy(u_value
));
13235 return img::format("SD %s, %s($%d)", rt
, u
, 28);
13243 * 10987654321098765432109876543210
13244 * 001000 01001001101
13249 std::string
NMD::SD_S9_(uint64 instruction
)
13251 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13252 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13253 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13255 std::string rt
= GPR(copy(rt_value
));
13256 std::string s
= IMMEDIATE(copy(s_value
));
13257 std::string rs
= GPR(copy(rs_value
));
13259 return img::format("SD %s, %s(%s)", rt
, s
, rs
);
13267 * 10987654321098765432109876543210
13268 * 001000 01001001101
13273 std::string
NMD::SD_U12_(uint64 instruction
)
13275 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13276 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13277 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13279 std::string rt
= GPR(copy(rt_value
));
13280 std::string u
= IMMEDIATE(copy(u_value
));
13281 std::string rs
= GPR(copy(rs_value
));
13283 return img::format("SD %s, %s(%s)", rt
, u
, rs
);
13291 * 10987654321098765432109876543210
13292 * 001000 01001001101
13297 std::string
NMD::SDBBP_16_(uint64 instruction
)
13299 uint64 code_value
= extract_code_2_1_0(instruction
);
13301 std::string code
= IMMEDIATE(copy(code_value
));
13303 return img::format("SDBBP %s", code
);
13311 * 10987654321098765432109876543210
13312 * 001000 01001001101
13317 std::string
NMD::SDBBP_32_(uint64 instruction
)
13319 uint64 code_value
= extract_code_18_to_0(instruction
);
13321 std::string code
= IMMEDIATE(copy(code_value
));
13323 return img::format("SDBBP %s", code
);
13331 * 10987654321098765432109876543210
13332 * 001000 01001001101
13337 std::string
NMD::SDC1_GP_(uint64 instruction
)
13339 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13340 uint64 u_value
= extr_uil2il2bs16Fmsb17(instruction
);
13342 std::string ft
= FPR(copy(ft_value
));
13343 std::string u
= IMMEDIATE(copy(u_value
));
13345 return img::format("SDC1 %s, %s($%d)", ft
, u
, 28);
13353 * 10987654321098765432109876543210
13354 * 001000 01001001101
13359 std::string
NMD::SDC1_S9_(uint64 instruction
)
13361 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13362 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13363 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13365 std::string ft
= FPR(copy(ft_value
));
13366 std::string s
= IMMEDIATE(copy(s_value
));
13367 std::string rs
= GPR(copy(rs_value
));
13369 return img::format("SDC1 %s, %s(%s)", ft
, s
, rs
);
13377 * 10987654321098765432109876543210
13378 * 001000 01001001101
13383 std::string
NMD::SDC1_U12_(uint64 instruction
)
13385 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13386 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13387 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13389 std::string ft
= FPR(copy(ft_value
));
13390 std::string u
= IMMEDIATE(copy(u_value
));
13391 std::string rs
= GPR(copy(rs_value
));
13393 return img::format("SDC1 %s, %s(%s)", ft
, u
, rs
);
13401 * 10987654321098765432109876543210
13402 * 001000 01001001101
13407 std::string
NMD::SDC1X(uint64 instruction
)
13409 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13410 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13411 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13413 std::string ft
= FPR(copy(ft_value
));
13414 std::string rs
= GPR(copy(rs_value
));
13415 std::string rt
= GPR(copy(rt_value
));
13417 return img::format("SDC1X %s, %s(%s)", ft
, rs
, rt
);
13425 * 10987654321098765432109876543210
13426 * 001000 01001001101
13431 std::string
NMD::SDC1XS(uint64 instruction
)
13433 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13434 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
13435 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13437 std::string ft
= FPR(copy(ft_value
));
13438 std::string rs
= GPR(copy(rs_value
));
13439 std::string rt
= GPR(copy(rt_value
));
13441 return img::format("SDC1XS %s, %s(%s)", ft
, rs
, rt
);
13449 * 10987654321098765432109876543210
13450 * 001000 01001001101
13455 std::string
NMD::SDC2(uint64 instruction
)
13457 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
13458 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13459 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13461 std::string cs
= CPR(copy(cs_value
));
13462 std::string s
= IMMEDIATE(copy(s_value
));
13463 std::string rs
= GPR(copy(rs_value
));
13465 return img::format("SDC2 %s, %s(%s)", cs
, s
, rs
);
13473 * 10987654321098765432109876543210
13474 * 001000 01001001101
13479 std::string
NMD::SDM(uint64 instruction
)
13481 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13482 uint64 count3_value
= extract_count3_14_13_12(instruction
);
13483 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13484 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13486 std::string rt
= GPR(copy(rt_value
));
13487 std::string s
= IMMEDIATE(copy(s_value
));
13488 std::string rs
= GPR(copy(rs_value
));
13489 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
13491 return img::format("SDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
13499 * 10987654321098765432109876543210
13500 * 001000 01001001101
13505 std::string
NMD::SDPC_48_(uint64 instruction
)
13507 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
13508 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
13510 std::string rt
= GPR(copy(rt_value
));
13511 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
13513 return img::format("SDPC %s, %s", rt
, s
);
13521 * 10987654321098765432109876543210
13522 * 001000 01001001101
13527 std::string
NMD::SDXS(uint64 instruction
)
13529 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13530 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
13531 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13533 std::string rd
= GPR(copy(rd_value
));
13534 std::string rs
= GPR(copy(rs_value
));
13535 std::string rt
= GPR(copy(rt_value
));
13537 return img::format("SDXS %s, %s(%s)", rd
, rs
, rt
);
13545 * 10987654321098765432109876543210
13546 * 001000 01001001101
13551 std::string
NMD::SDX(uint64 instruction
)
13553 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13554 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
13555 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13557 std::string rd
= GPR(copy(rd_value
));
13558 std::string rs
= GPR(copy(rs_value
));
13559 std::string rt
= GPR(copy(rt_value
));
13561 return img::format("SDX %s, %s(%s)", rd
, rs
, rt
);
13569 * 10987654321098765432109876543210
13570 * 001000 01001001101
13575 std::string
NMD::SEB(uint64 instruction
)
13577 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13578 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13580 std::string rt
= GPR(copy(rt_value
));
13581 std::string rs
= GPR(copy(rs_value
));
13583 return img::format("SEB %s, %s", rt
, rs
);
13591 * 10987654321098765432109876543210
13592 * 001000 01001001101
13597 std::string
NMD::SEH(uint64 instruction
)
13599 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13600 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13602 std::string rt
= GPR(copy(rt_value
));
13603 std::string rs
= GPR(copy(rs_value
));
13605 return img::format("SEH %s, %s", rt
, rs
);
13613 * 10987654321098765432109876543210
13614 * 001000 01001001101
13619 std::string
NMD::SEL_D(uint64 instruction
)
13621 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13622 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13623 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13625 std::string fd
= FPR(copy(fd_value
));
13626 std::string fs
= FPR(copy(fs_value
));
13627 std::string ft
= FPR(copy(ft_value
));
13629 return img::format("SEL.D %s, %s, %s", fd
, fs
, ft
);
13637 * 10987654321098765432109876543210
13638 * 001000 01001001101
13643 std::string
NMD::SEL_S(uint64 instruction
)
13645 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13646 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13647 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13649 std::string fd
= FPR(copy(fd_value
));
13650 std::string fs
= FPR(copy(fs_value
));
13651 std::string ft
= FPR(copy(ft_value
));
13653 return img::format("SEL.S %s, %s, %s", fd
, fs
, ft
);
13661 * 10987654321098765432109876543210
13662 * 001000 01001001101
13667 std::string
NMD::SELEQZ_D(uint64 instruction
)
13669 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13670 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13671 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13673 std::string fd
= FPR(copy(fd_value
));
13674 std::string fs
= FPR(copy(fs_value
));
13675 std::string ft
= FPR(copy(ft_value
));
13677 return img::format("SELEQZ.D %s, %s, %s", fd
, fs
, ft
);
13685 * 10987654321098765432109876543210
13686 * 001000 01001001101
13691 std::string
NMD::SELEQZ_S(uint64 instruction
)
13693 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13694 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13695 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13697 std::string fd
= FPR(copy(fd_value
));
13698 std::string fs
= FPR(copy(fs_value
));
13699 std::string ft
= FPR(copy(ft_value
));
13701 return img::format("SELEQZ.S %s, %s, %s", fd
, fs
, ft
);
13709 * 10987654321098765432109876543210
13710 * 001000 01001001101
13715 std::string
NMD::SELNEZ_D(uint64 instruction
)
13717 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13718 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13719 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13721 std::string fd
= FPR(copy(fd_value
));
13722 std::string fs
= FPR(copy(fs_value
));
13723 std::string ft
= FPR(copy(ft_value
));
13725 return img::format("SELNEZ.D %s, %s, %s", fd
, fs
, ft
);
13733 * 10987654321098765432109876543210
13734 * 001000 01001001101
13739 std::string
NMD::SELNEZ_S(uint64 instruction
)
13741 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
13742 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
13743 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
13745 std::string fd
= FPR(copy(fd_value
));
13746 std::string fs
= FPR(copy(fs_value
));
13747 std::string ft
= FPR(copy(ft_value
));
13749 return img::format("SELNEZ.S %s, %s, %s", fd
, fs
, ft
);
13757 * 10987654321098765432109876543210
13758 * 001000 01001001101
13763 std::string
NMD::SEQI(uint64 instruction
)
13765 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13766 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13767 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13769 std::string rt
= GPR(copy(rt_value
));
13770 std::string rs
= GPR(copy(rs_value
));
13771 std::string u
= IMMEDIATE(copy(u_value
));
13773 return img::format("SEQI %s, %s, %s", rt
, rs
, u
);
13781 * 10987654321098765432109876543210
13782 * 001000 01001001101
13787 std::string
NMD::SH_16_(uint64 instruction
)
13789 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
13790 uint64 u_value
= extr_uil1il1bs2Fmsb2(instruction
);
13791 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
13793 std::string rtz3
= GPR(encode_gpr3_store(rtz3_value
));
13794 std::string u
= IMMEDIATE(copy(u_value
));
13795 std::string rs3
= GPR(encode_gpr3(rs3_value
));
13797 return img::format("SH %s, %s(%s)", rtz3
, u
, rs3
);
13805 * 10987654321098765432109876543210
13806 * 001000 01001001101
13811 std::string
NMD::SH_GP_(uint64 instruction
)
13813 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13814 uint64 u_value
= extr_uil1il1bs17Fmsb17(instruction
);
13816 std::string rt
= GPR(copy(rt_value
));
13817 std::string u
= IMMEDIATE(copy(u_value
));
13819 return img::format("SH %s, %s($%d)", rt
, u
, 28);
13827 * 10987654321098765432109876543210
13828 * 001000 01001001101
13833 std::string
NMD::SH_S9_(uint64 instruction
)
13835 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13836 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13837 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13839 std::string rt
= GPR(copy(rt_value
));
13840 std::string s
= IMMEDIATE(copy(s_value
));
13841 std::string rs
= GPR(copy(rs_value
));
13843 return img::format("SH %s, %s(%s)", rt
, s
, rs
);
13851 * 10987654321098765432109876543210
13852 * 001000 01001001101
13857 std::string
NMD::SH_U12_(uint64 instruction
)
13859 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13860 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
13861 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13863 std::string rt
= GPR(copy(rt_value
));
13864 std::string u
= IMMEDIATE(copy(u_value
));
13865 std::string rs
= GPR(copy(rs_value
));
13867 return img::format("SH %s, %s(%s)", rt
, u
, rs
);
13875 * 10987654321098765432109876543210
13876 * 001000 01001001101
13881 std::string
NMD::SHE(uint64 instruction
)
13883 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13884 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
13885 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13887 std::string rt
= GPR(copy(rt_value
));
13888 std::string s
= IMMEDIATE(copy(s_value
));
13889 std::string rs
= GPR(copy(rs_value
));
13891 return img::format("SHE %s, %s(%s)", rt
, s
, rs
);
13896 * SHILO ac, shift - Shift an Accumulator Value Leaving the Result in the Same
13900 * 10987654321098765432109876543210
13901 * 001000xxxx xxxx0000011101
13905 std::string
NMD::SHILO(uint64 instruction
)
13907 int64 shift_value
= extract_shift_21_20_19_18_17_16(instruction
);
13908 uint64 ac_value
= extract_ac_13_12(instruction
);
13910 std::string shift
= IMMEDIATE(copy(shift_value
));
13911 std::string ac
= AC(copy(ac_value
));
13913 return img::format("SHILO %s, %s", ac
, shift
);
13918 * SHILOV ac, rs - Variable Shift of Accumulator Value Leaving the Result in
13919 * the Same Accumulator
13922 * 10987654321098765432109876543210
13923 * 001000xxxxx 01001001111111
13927 std::string
NMD::SHILOV(uint64 instruction
)
13929 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13930 uint64 ac_value
= extract_ac_13_12(instruction
);
13932 std::string rs
= GPR(copy(rs_value
));
13933 std::string ac
= AC(copy(ac_value
));
13935 return img::format("SHILOV %s, %s", ac
, rs
);
13940 * SHLL.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords
13943 * 10987654321098765432109876543210
13944 * 001000 001110110101
13949 std::string
NMD::SHLL_PH(uint64 instruction
)
13951 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13952 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13953 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
13955 std::string rt
= GPR(copy(rt_value
));
13956 std::string rs
= GPR(copy(rs_value
));
13957 std::string sa
= IMMEDIATE(copy(sa_value
));
13959 return img::format("SHLL.PH %s, %s, %s", rt
, rs
, sa
);
13964 * SHLL.QB rt, rs, sa - Shift Left Logical Vector Quad Bytes
13967 * 10987654321098765432109876543210
13968 * 001000 0100001111111
13973 std::string
NMD::SHLL_QB(uint64 instruction
)
13975 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
13976 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
13977 uint64 sa_value
= extract_sa_15_14_13(instruction
);
13979 std::string rt
= GPR(copy(rt_value
));
13980 std::string rs
= GPR(copy(rs_value
));
13981 std::string sa
= IMMEDIATE(copy(sa_value
));
13983 return img::format("SHLL.QB %s, %s, %s", rt
, rs
, sa
);
13988 * SHLL_S.PH rt, rs, sa - Shift Left Logical Vector Pair Halfwords (saturated)
13991 * 10987654321098765432109876543210
13992 * 001000 001110110101
13997 std::string
NMD::SHLL_S_PH(uint64 instruction
)
13999 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14000 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14001 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14003 std::string rt
= GPR(copy(rt_value
));
14004 std::string rs
= GPR(copy(rs_value
));
14005 std::string sa
= IMMEDIATE(copy(sa_value
));
14007 return img::format("SHLL_S.PH %s, %s, %s", rt
, rs
, sa
);
14015 * 10987654321098765432109876543210
14016 * 001000 01001001101
14021 std::string
NMD::SHLL_S_W(uint64 instruction
)
14023 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14024 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
14025 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14027 std::string rt
= GPR(copy(rt_value
));
14028 std::string rs
= GPR(copy(rs_value
));
14029 std::string sa
= IMMEDIATE(copy(sa_value
));
14031 return img::format("SHLL_S.W %s, %s, %s", rt
, rs
, sa
);
14039 * 10987654321098765432109876543210
14040 * 001000 01001001101
14045 std::string
NMD::SHLLV_PH(uint64 instruction
)
14047 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14048 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14049 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14051 std::string rd
= GPR(copy(rd_value
));
14052 std::string rt
= GPR(copy(rt_value
));
14053 std::string rs
= GPR(copy(rs_value
));
14055 return img::format("SHLLV.PH %s, %s, %s", rd
, rt
, rs
);
14063 * 10987654321098765432109876543210
14064 * 001000 01001001101
14069 std::string
NMD::SHLLV_QB(uint64 instruction
)
14071 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14072 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14073 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14075 std::string rd
= GPR(copy(rd_value
));
14076 std::string rt
= GPR(copy(rt_value
));
14077 std::string rs
= GPR(copy(rs_value
));
14079 return img::format("SHLLV.QB %s, %s, %s", rd
, rt
, rs
);
14087 * 10987654321098765432109876543210
14088 * 001000 01001001101
14093 std::string
NMD::SHLLV_S_PH(uint64 instruction
)
14095 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14096 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14097 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14099 std::string rd
= GPR(copy(rd_value
));
14100 std::string rt
= GPR(copy(rt_value
));
14101 std::string rs
= GPR(copy(rs_value
));
14103 return img::format("SHLLV_S.PH %s, %s, %s", rd
, rt
, rs
);
14111 * 10987654321098765432109876543210
14112 * 001000 01001001101
14117 std::string
NMD::SHLLV_S_W(uint64 instruction
)
14119 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14120 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14121 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14123 std::string rd
= GPR(copy(rd_value
));
14124 std::string rt
= GPR(copy(rt_value
));
14125 std::string rs
= GPR(copy(rs_value
));
14127 return img::format("SHLLV_S.W %s, %s, %s", rd
, rt
, rs
);
14135 * 10987654321098765432109876543210
14136 * 001000 01001001101
14141 std::string
NMD::SHRA_PH(uint64 instruction
)
14143 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14144 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14145 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14147 std::string rt
= GPR(copy(rt_value
));
14148 std::string rs
= GPR(copy(rs_value
));
14149 std::string sa
= IMMEDIATE(copy(sa_value
));
14151 return img::format("SHRA.PH %s, %s, %s", rt
, rs
, sa
);
14159 * 10987654321098765432109876543210
14160 * 001000 01001001101
14165 std::string
NMD::SHRA_QB(uint64 instruction
)
14167 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14168 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14169 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14171 std::string rt
= GPR(copy(rt_value
));
14172 std::string rs
= GPR(copy(rs_value
));
14173 std::string sa
= IMMEDIATE(copy(sa_value
));
14175 return img::format("SHRA.QB %s, %s, %s", rt
, rs
, sa
);
14183 * 10987654321098765432109876543210
14184 * 001000 01001001101
14189 std::string
NMD::SHRA_R_PH(uint64 instruction
)
14191 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14192 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14193 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14195 std::string rt
= GPR(copy(rt_value
));
14196 std::string rs
= GPR(copy(rs_value
));
14197 std::string sa
= IMMEDIATE(copy(sa_value
));
14199 return img::format("SHRA_R.PH %s, %s, %s", rt
, rs
, sa
);
14207 * 10987654321098765432109876543210
14208 * 001000 01001001101
14213 std::string
NMD::SHRA_R_QB(uint64 instruction
)
14215 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14216 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14217 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14219 std::string rt
= GPR(copy(rt_value
));
14220 std::string rs
= GPR(copy(rs_value
));
14221 std::string sa
= IMMEDIATE(copy(sa_value
));
14223 return img::format("SHRA_R.QB %s, %s, %s", rt
, rs
, sa
);
14231 * 10987654321098765432109876543210
14232 * 001000 01001001101
14237 std::string
NMD::SHRA_R_W(uint64 instruction
)
14239 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14240 uint64 sa_value
= extract_sa_15_14_13_12_11(instruction
);
14241 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14243 std::string rt
= GPR(copy(rt_value
));
14244 std::string rs
= GPR(copy(rs_value
));
14245 std::string sa
= IMMEDIATE(copy(sa_value
));
14247 return img::format("SHRA_R.W %s, %s, %s", rt
, rs
, sa
);
14255 * 10987654321098765432109876543210
14256 * 001000 01001001101
14261 std::string
NMD::SHRAV_PH(uint64 instruction
)
14263 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14264 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14265 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14267 std::string rd
= GPR(copy(rd_value
));
14268 std::string rt
= GPR(copy(rt_value
));
14269 std::string rs
= GPR(copy(rs_value
));
14271 return img::format("SHRAV.PH %s, %s, %s", rd
, rt
, rs
);
14279 * 10987654321098765432109876543210
14280 * 001000 01001001101
14285 std::string
NMD::SHRAV_QB(uint64 instruction
)
14287 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14288 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14289 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14291 std::string rd
= GPR(copy(rd_value
));
14292 std::string rt
= GPR(copy(rt_value
));
14293 std::string rs
= GPR(copy(rs_value
));
14295 return img::format("SHRAV.QB %s, %s, %s", rd
, rt
, rs
);
14303 * 10987654321098765432109876543210
14304 * 001000 01001001101
14309 std::string
NMD::SHRAV_R_PH(uint64 instruction
)
14311 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14312 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14313 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14315 std::string rd
= GPR(copy(rd_value
));
14316 std::string rt
= GPR(copy(rt_value
));
14317 std::string rs
= GPR(copy(rs_value
));
14319 return img::format("SHRAV_R.PH %s, %s, %s", rd
, rt
, rs
);
14327 * 10987654321098765432109876543210
14328 * 001000 01001001101
14333 std::string
NMD::SHRAV_R_QB(uint64 instruction
)
14335 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14336 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14337 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14339 std::string rd
= GPR(copy(rd_value
));
14340 std::string rt
= GPR(copy(rt_value
));
14341 std::string rs
= GPR(copy(rs_value
));
14343 return img::format("SHRAV_R.QB %s, %s, %s", rd
, rt
, rs
);
14351 * 10987654321098765432109876543210
14352 * 001000 01001001101
14357 std::string
NMD::SHRAV_R_W(uint64 instruction
)
14359 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14360 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14361 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14363 std::string rd
= GPR(copy(rd_value
));
14364 std::string rt
= GPR(copy(rt_value
));
14365 std::string rs
= GPR(copy(rs_value
));
14367 return img::format("SHRAV_R.W %s, %s, %s", rd
, rt
, rs
);
14375 * 10987654321098765432109876543210
14376 * 001000 01001001101
14381 std::string
NMD::SHRL_PH(uint64 instruction
)
14383 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14384 uint64 sa_value
= extract_sa_15_14_13_12(instruction
);
14385 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14387 std::string rt
= GPR(copy(rt_value
));
14388 std::string rs
= GPR(copy(rs_value
));
14389 std::string sa
= IMMEDIATE(copy(sa_value
));
14391 return img::format("SHRL.PH %s, %s, %s", rt
, rs
, sa
);
14399 * 10987654321098765432109876543210
14400 * 001000 01001001101
14405 std::string
NMD::SHRL_QB(uint64 instruction
)
14407 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14408 uint64 sa_value
= extract_sa_15_14_13(instruction
);
14409 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14411 std::string rt
= GPR(copy(rt_value
));
14412 std::string rs
= GPR(copy(rs_value
));
14413 std::string sa
= IMMEDIATE(copy(sa_value
));
14415 return img::format("SHRL.QB %s, %s, %s", rt
, rs
, sa
);
14423 * 10987654321098765432109876543210
14424 * 001000 01001001101
14429 std::string
NMD::SHRLV_PH(uint64 instruction
)
14431 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14432 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14433 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14435 std::string rd
= GPR(copy(rd_value
));
14436 std::string rt
= GPR(copy(rt_value
));
14437 std::string rs
= GPR(copy(rs_value
));
14439 return img::format("SHRLV.PH %s, %s, %s", rd
, rt
, rs
);
14447 * 10987654321098765432109876543210
14448 * 001000 01001001101
14453 std::string
NMD::SHRLV_QB(uint64 instruction
)
14455 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14456 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14457 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14459 std::string rd
= GPR(copy(rd_value
));
14460 std::string rt
= GPR(copy(rt_value
));
14461 std::string rs
= GPR(copy(rs_value
));
14463 return img::format("SHRLV.QB %s, %s, %s", rd
, rt
, rs
);
14471 * 10987654321098765432109876543210
14472 * 001000 01001001101
14477 std::string
NMD::SHX(uint64 instruction
)
14479 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14480 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14481 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14483 std::string rd
= GPR(copy(rd_value
));
14484 std::string rs
= GPR(copy(rs_value
));
14485 std::string rt
= GPR(copy(rt_value
));
14487 return img::format("SHX %s, %s(%s)", rd
, rs
, rt
);
14495 * 10987654321098765432109876543210
14496 * 001000 01001001101
14501 std::string
NMD::SHXS(uint64 instruction
)
14503 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14504 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14505 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14507 std::string rd
= GPR(copy(rd_value
));
14508 std::string rs
= GPR(copy(rs_value
));
14509 std::string rt
= GPR(copy(rt_value
));
14511 return img::format("SHXS %s, %s(%s)", rd
, rs
, rt
);
14519 * 10987654321098765432109876543210
14520 * 001000 01001001101
14525 std::string
NMD::SIGRIE(uint64 instruction
)
14527 uint64 code_value
= extract_code_18_to_0(instruction
);
14529 std::string code
= IMMEDIATE(copy(code_value
));
14531 return img::format("SIGRIE %s", code
);
14539 * 10987654321098765432109876543210
14540 * 001000 01001001101
14545 std::string
NMD::SLL_16_(uint64 instruction
)
14547 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14548 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14549 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14551 std::string rt3
= GPR(encode_gpr3(rt3_value
));
14552 std::string rs3
= GPR(encode_gpr3(rs3_value
));
14553 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14555 return img::format("SLL %s, %s, %s", rt3
, rs3
, shift3
);
14563 * 10987654321098765432109876543210
14564 * 001000 01001001101
14569 std::string
NMD::SLL_32_(uint64 instruction
)
14571 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14572 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14573 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14575 std::string rt
= GPR(copy(rt_value
));
14576 std::string rs
= GPR(copy(rs_value
));
14577 std::string shift
= IMMEDIATE(copy(shift_value
));
14579 return img::format("SLL %s, %s, %s", rt
, rs
, shift
);
14587 * 10987654321098765432109876543210
14588 * 001000 01001001101
14593 std::string
NMD::SLLV(uint64 instruction
)
14595 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14596 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14597 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14599 std::string rd
= GPR(copy(rd_value
));
14600 std::string rs
= GPR(copy(rs_value
));
14601 std::string rt
= GPR(copy(rt_value
));
14603 return img::format("SLLV %s, %s, %s", rd
, rs
, rt
);
14611 * 10987654321098765432109876543210
14612 * 001000 01001001101
14617 std::string
NMD::SLT(uint64 instruction
)
14619 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14620 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14621 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14623 std::string rd
= GPR(copy(rd_value
));
14624 std::string rs
= GPR(copy(rs_value
));
14625 std::string rt
= GPR(copy(rt_value
));
14627 return img::format("SLT %s, %s, %s", rd
, rs
, rt
);
14635 * 10987654321098765432109876543210
14636 * 001000 01001001101
14641 std::string
NMD::SLTI(uint64 instruction
)
14643 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14644 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14645 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14647 std::string rt
= GPR(copy(rt_value
));
14648 std::string rs
= GPR(copy(rs_value
));
14649 std::string u
= IMMEDIATE(copy(u_value
));
14651 return img::format("SLTI %s, %s, %s", rt
, rs
, u
);
14659 * 10987654321098765432109876543210
14660 * 001000 01001001101
14665 std::string
NMD::SLTIU(uint64 instruction
)
14667 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14668 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
14669 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14671 std::string rt
= GPR(copy(rt_value
));
14672 std::string rs
= GPR(copy(rs_value
));
14673 std::string u
= IMMEDIATE(copy(u_value
));
14675 return img::format("SLTIU %s, %s, %s", rt
, rs
, u
);
14683 * 10987654321098765432109876543210
14684 * 001000 01001001101
14689 std::string
NMD::SLTU(uint64 instruction
)
14691 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14692 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14693 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14695 std::string rd
= GPR(copy(rd_value
));
14696 std::string rs
= GPR(copy(rs_value
));
14697 std::string rt
= GPR(copy(rt_value
));
14699 return img::format("SLTU %s, %s, %s", rd
, rs
, rt
);
14707 * 10987654321098765432109876543210
14708 * 001000 01001001101
14713 std::string
NMD::SOV(uint64 instruction
)
14715 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14716 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14717 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14719 std::string rd
= GPR(copy(rd_value
));
14720 std::string rs
= GPR(copy(rs_value
));
14721 std::string rt
= GPR(copy(rt_value
));
14723 return img::format("SOV %s, %s, %s", rd
, rs
, rt
);
14731 * 10987654321098765432109876543210
14732 * 001000 01001001101
14737 std::string
NMD::SPECIAL2(uint64 instruction
)
14739 uint64 op_value
= extract_op_25_to_3(instruction
);
14741 std::string op
= IMMEDIATE(copy(op_value
));
14743 return img::format("SPECIAL2 %s", op
);
14751 * 10987654321098765432109876543210
14752 * 001000 01001001101
14757 std::string
NMD::SQRT_D(uint64 instruction
)
14759 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
14760 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
14762 std::string ft
= FPR(copy(ft_value
));
14763 std::string fs
= FPR(copy(fs_value
));
14765 return img::format("SQRT.D %s, %s", ft
, fs
);
14773 * 10987654321098765432109876543210
14774 * 001000 01001001101
14779 std::string
NMD::SQRT_S(uint64 instruction
)
14781 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
14782 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
14784 std::string ft
= FPR(copy(ft_value
));
14785 std::string fs
= FPR(copy(fs_value
));
14787 return img::format("SQRT.S %s, %s", ft
, fs
);
14792 * SRA rd, rt, sa - Shift Word Right Arithmetic
14795 * 10987654321098765432109876543210
14796 * 00000000000 000011
14801 std::string
NMD::SRA(uint64 instruction
)
14803 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14804 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14805 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14807 std::string rt
= GPR(copy(rt_value
));
14808 std::string rs
= GPR(copy(rs_value
));
14809 std::string shift
= IMMEDIATE(copy(shift_value
));
14811 return img::format("SRA %s, %s, %s", rt
, rs
, shift
);
14816 * SRAV rd, rt, rs - Shift Word Right Arithmetic Variable
14819 * 10987654321098765432109876543210
14820 * 001000 00000000111
14825 std::string
NMD::SRAV(uint64 instruction
)
14827 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14828 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14829 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14831 std::string rd
= GPR(copy(rd_value
));
14832 std::string rs
= GPR(copy(rs_value
));
14833 std::string rt
= GPR(copy(rt_value
));
14835 return img::format("SRAV %s, %s, %s", rd
, rs
, rt
);
14843 * 10987654321098765432109876543210
14844 * 001000 00000000111
14849 std::string
NMD::SRL_16_(uint64 instruction
)
14851 uint64 shift3_value
= extract_shift3_2_1_0(instruction
);
14852 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
14853 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
14855 std::string rt3
= GPR(encode_gpr3(rt3_value
));
14856 std::string rs3
= GPR(encode_gpr3(rs3_value
));
14857 std::string shift3
= IMMEDIATE(encode_shift3_from_shift(shift3_value
));
14859 return img::format("SRL %s, %s, %s", rt3
, rs3
, shift3
);
14867 * 10987654321098765432109876543210
14868 * 001000 01001001101
14873 std::string
NMD::SRL_32_(uint64 instruction
)
14875 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14876 uint64 shift_value
= extract_shift_4_3_2_1_0(instruction
);
14877 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14879 std::string rt
= GPR(copy(rt_value
));
14880 std::string rs
= GPR(copy(rs_value
));
14881 std::string shift
= IMMEDIATE(copy(shift_value
));
14883 return img::format("SRL %s, %s, %s", rt
, rs
, shift
);
14891 * 10987654321098765432109876543210
14892 * 001000 01001001101
14897 std::string
NMD::SRLV(uint64 instruction
)
14899 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14900 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14901 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14903 std::string rd
= GPR(copy(rd_value
));
14904 std::string rs
= GPR(copy(rs_value
));
14905 std::string rt
= GPR(copy(rt_value
));
14907 return img::format("SRLV %s, %s, %s", rd
, rs
, rt
);
14915 * 10987654321098765432109876543210
14916 * 001000 01001001101
14921 std::string
NMD::SUB(uint64 instruction
)
14923 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14924 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14925 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14927 std::string rd
= GPR(copy(rd_value
));
14928 std::string rs
= GPR(copy(rs_value
));
14929 std::string rt
= GPR(copy(rt_value
));
14931 return img::format("SUB %s, %s, %s", rd
, rs
, rt
);
14939 * 10987654321098765432109876543210
14940 * 001000 01001001101
14945 std::string
NMD::SUB_D(uint64 instruction
)
14947 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
14948 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
14949 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
14951 std::string fd
= FPR(copy(fd_value
));
14952 std::string fs
= FPR(copy(fs_value
));
14953 std::string ft
= FPR(copy(ft_value
));
14955 return img::format("SUB.D %s, %s, %s", fd
, fs
, ft
);
14963 * 10987654321098765432109876543210
14964 * 001000 01001001101
14969 std::string
NMD::SUB_S(uint64 instruction
)
14971 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
14972 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
14973 uint64 fd_value
= extract_fd_10_9_8_7_6(instruction
);
14975 std::string fd
= FPR(copy(fd_value
));
14976 std::string fs
= FPR(copy(fs_value
));
14977 std::string ft
= FPR(copy(ft_value
));
14979 return img::format("SUB.S %s, %s, %s", fd
, fs
, ft
);
14987 * 10987654321098765432109876543210
14988 * 001000 01001001101
14993 std::string
NMD::SUBQ_PH(uint64 instruction
)
14995 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
14996 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
14997 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
14999 std::string rd
= GPR(copy(rd_value
));
15000 std::string rs
= GPR(copy(rs_value
));
15001 std::string rt
= GPR(copy(rt_value
));
15003 return img::format("SUBQ.PH %s, %s, %s", rd
, rs
, rt
);
15008 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15012 * 10987654321098765432109876543210
15013 * 001000 01001001101
15018 std::string
NMD::SUBQ_S_PH(uint64 instruction
)
15020 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15021 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15022 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15024 std::string rd
= GPR(copy(rd_value
));
15025 std::string rs
= GPR(copy(rs_value
));
15026 std::string rt
= GPR(copy(rt_value
));
15028 return img::format("SUBQ_S.PH %s, %s, %s", rd
, rs
, rt
);
15033 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15037 * 10987654321098765432109876543210
15038 * 001000 01001001101
15043 std::string
NMD::SUBQ_S_W(uint64 instruction
)
15045 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15046 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15047 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15049 std::string rd
= GPR(copy(rd_value
));
15050 std::string rs
= GPR(copy(rs_value
));
15051 std::string rt
= GPR(copy(rt_value
));
15053 return img::format("SUBQ_S.W %s, %s, %s", rd
, rs
, rt
);
15058 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15062 * 10987654321098765432109876543210
15063 * 001000 01001001101
15068 std::string
NMD::SUBQH_PH(uint64 instruction
)
15070 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15071 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15072 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15074 std::string rd
= GPR(copy(rd_value
));
15075 std::string rs
= GPR(copy(rs_value
));
15076 std::string rt
= GPR(copy(rt_value
));
15078 return img::format("SUBQH.PH %s, %s, %s", rd
, rs
, rt
);
15083 * SUBQH.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15087 * 10987654321098765432109876543210
15088 * 001000 01001001101
15093 std::string
NMD::SUBQH_R_PH(uint64 instruction
)
15095 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15096 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15097 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15099 std::string rd
= GPR(copy(rd_value
));
15100 std::string rs
= GPR(copy(rs_value
));
15101 std::string rt
= GPR(copy(rt_value
));
15103 return img::format("SUBQH_R.PH %s, %s, %s", rd
, rs
, rt
);
15108 * SUBQH_R.PH rd, rt, rs - Subtract Fractional Halfword Vectors And Shift Right
15109 * to Halve Results (rounding)
15112 * 10987654321098765432109876543210
15113 * 001000 11001001101
15118 std::string
NMD::SUBQH_R_W(uint64 instruction
)
15120 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15121 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15122 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15124 std::string rd
= GPR(copy(rd_value
));
15125 std::string rs
= GPR(copy(rs_value
));
15126 std::string rt
= GPR(copy(rt_value
));
15128 return img::format("SUBQH_R.W %s, %s, %s", rd
, rs
, rt
);
15133 * SUBQH.W rd, rs, rt - Subtract Fractional Words And Shift Right to Halve
15137 * 10987654321098765432109876543210
15138 * 001000 01010001101
15143 std::string
NMD::SUBQH_W(uint64 instruction
)
15145 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15146 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15147 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15149 std::string rd
= GPR(copy(rd_value
));
15150 std::string rs
= GPR(copy(rs_value
));
15151 std::string rt
= GPR(copy(rt_value
));
15153 return img::format("SUBQH.W %s, %s, %s", rd
, rs
, rt
);
15158 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15161 * 10987654321098765432109876543210
15162 * 001000 00010001101
15167 std::string
NMD::SUBU_16_(uint64 instruction
)
15169 uint64 rd3_value
= extract_rd3_3_2_1(instruction
);
15170 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
15171 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15173 std::string rd3
= GPR(encode_gpr3(rd3_value
));
15174 std::string rs3
= GPR(encode_gpr3(rs3_value
));
15175 std::string rt3
= GPR(encode_gpr3(rt3_value
));
15177 return img::format("SUBU %s, %s, %s", rd3
, rs3
, rt3
);
15182 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15185 * 10987654321098765432109876543210
15186 * 001000 00010001101
15191 std::string
NMD::SUBU_32_(uint64 instruction
)
15193 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15194 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15195 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15197 std::string rd
= GPR(copy(rd_value
));
15198 std::string rs
= GPR(copy(rs_value
));
15199 std::string rt
= GPR(copy(rt_value
));
15201 return img::format("SUBU %s, %s, %s", rd
, rs
, rt
);
15206 * SUBU.PH rd, rs, rt - Subtract Unsigned Integer Halfwords
15209 * 10987654321098765432109876543210
15210 * 001000 01100001101
15215 std::string
NMD::SUBU_PH(uint64 instruction
)
15217 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15218 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15219 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15221 std::string rd
= GPR(copy(rd_value
));
15222 std::string rs
= GPR(copy(rs_value
));
15223 std::string rt
= GPR(copy(rt_value
));
15225 return img::format("SUBU.PH %s, %s, %s", rd
, rs
, rt
);
15230 * SUBU.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector
15233 * 10987654321098765432109876543210
15234 * 001000 01011001101
15239 std::string
NMD::SUBU_QB(uint64 instruction
)
15241 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15242 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15243 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15245 std::string rd
= GPR(copy(rd_value
));
15246 std::string rs
= GPR(copy(rs_value
));
15247 std::string rt
= GPR(copy(rt_value
));
15249 return img::format("SUBU.QB %s, %s, %s", rd
, rs
, rt
);
15254 * SUBU_S.PH rd, rs, rt - Subtract Unsigned Integer Halfwords (saturating)
15257 * 10987654321098765432109876543210
15258 * 001000 11100001101
15263 std::string
NMD::SUBU_S_PH(uint64 instruction
)
15265 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15266 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15267 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15269 std::string rd
= GPR(copy(rd_value
));
15270 std::string rs
= GPR(copy(rs_value
));
15271 std::string rt
= GPR(copy(rt_value
));
15273 return img::format("SUBU_S.PH %s, %s, %s", rd
, rs
, rt
);
15278 * SUBU_S.QB rd, rs, rt - Subtract Unsigned Quad Byte Vector (saturating)
15281 * 10987654321098765432109876543210
15282 * 001000 11011001101
15287 std::string
NMD::SUBU_S_QB(uint64 instruction
)
15289 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15290 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15291 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15293 std::string rd
= GPR(copy(rd_value
));
15294 std::string rs
= GPR(copy(rs_value
));
15295 std::string rt
= GPR(copy(rt_value
));
15297 return img::format("SUBU_S.QB %s, %s, %s", rd
, rs
, rt
);
15302 * SUBUH.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15306 * 10987654321098765432109876543210
15307 * 001000 01101001101
15312 std::string
NMD::SUBUH_QB(uint64 instruction
)
15314 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15315 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15316 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15318 std::string rd
= GPR(copy(rd_value
));
15319 std::string rs
= GPR(copy(rs_value
));
15320 std::string rt
= GPR(copy(rt_value
));
15322 return img::format("SUBUH.QB %s, %s, %s", rd
, rs
, rt
);
15327 * SUBUH_R.QB rd, rs, rt - Subtract Unsigned Bytes And Right Shift to Halve
15328 * Results (rounding)
15331 * 10987654321098765432109876543210
15332 * 001000 11101001101
15337 std::string
NMD::SUBUH_R_QB(uint64 instruction
)
15339 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15340 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15341 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15343 std::string rd
= GPR(copy(rd_value
));
15344 std::string rs
= GPR(copy(rs_value
));
15345 std::string rt
= GPR(copy(rt_value
));
15347 return img::format("SUBUH_R.QB %s, %s, %s", rd
, rs
, rt
);
15352 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15355 * 10987654321098765432109876543210
15356 * 001000 00010001101
15361 std::string
NMD::SW_16_(uint64 instruction
)
15363 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15364 uint64 u_value
= extr_uil0il2bs4Fmsb5(instruction
);
15365 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
15367 std::string rtz3
= GPR(encode_gpr3_store(rtz3_value
));
15368 std::string u
= IMMEDIATE(copy(u_value
));
15369 std::string rs3
= GPR(encode_gpr3(rs3_value
));
15371 return img::format("SW %s, %s(%s)", rtz3
, u
, rs3
);
15376 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15379 * 10987654321098765432109876543210
15380 * 001000 00010001101
15385 std::string
NMD::SW_4X4_(uint64 instruction
)
15387 uint64 rs4_value
= extract_rs4_4_2_1_0(instruction
);
15388 uint64 rtz4_value
= extract_rtz4_9_7_6_5(instruction
);
15389 uint64 u_value
= extr_uil3il3bs1_il8il2bs1Fmsb3(instruction
);
15391 std::string rtz4
= GPR(encode_gpr4_zero(rtz4_value
));
15392 std::string u
= IMMEDIATE(copy(u_value
));
15393 std::string rs4
= GPR(encode_gpr4(rs4_value
));
15395 return img::format("SW %s, %s(%s)", rtz4
, u
, rs4
);
15400 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15403 * 10987654321098765432109876543210
15404 * 001000 00010001101
15409 std::string
NMD::SW_GP16_(uint64 instruction
)
15411 uint64 rtz3_value
= extract_rtz3_9_8_7(instruction
);
15412 uint64 u_value
= extr_uil0il2bs7Fmsb8(instruction
);
15414 std::string rtz3
= GPR(encode_gpr3_store(rtz3_value
));
15415 std::string u
= IMMEDIATE(copy(u_value
));
15417 return img::format("SW %s, %s($%d)", rtz3
, u
, 28);
15422 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15425 * 10987654321098765432109876543210
15426 * 001000 00010001101
15431 std::string
NMD::SW_GP_(uint64 instruction
)
15433 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15434 uint64 u_value
= extr_uil2il2bs19Fmsb20(instruction
);
15436 std::string rt
= GPR(copy(rt_value
));
15437 std::string u
= IMMEDIATE(copy(u_value
));
15439 return img::format("SW %s, %s($%d)", rt
, u
, 28);
15444 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15447 * 10987654321098765432109876543210
15448 * 001000 00010001101
15453 std::string
NMD::SW_S9_(uint64 instruction
)
15455 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15456 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15457 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15459 std::string rt
= GPR(copy(rt_value
));
15460 std::string s
= IMMEDIATE(copy(s_value
));
15461 std::string rs
= GPR(copy(rs_value
));
15463 return img::format("SW %s, %s(%s)", rt
, s
, rs
);
15468 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15471 * 10987654321098765432109876543210
15472 * 001000 00010001101
15477 std::string
NMD::SW_SP_(uint64 instruction
)
15479 uint64 rt_value
= extract_rt_9_8_7_6_5(instruction
);
15480 uint64 u_value
= extr_uil0il2bs5Fmsb6(instruction
);
15482 std::string rt
= GPR(copy(rt_value
));
15483 std::string u
= IMMEDIATE(copy(u_value
));
15485 return img::format("SW %s, %s($%d)", rt
, u
, 29);
15490 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15493 * 10987654321098765432109876543210
15494 * 001000 00010001101
15499 std::string
NMD::SW_U12_(uint64 instruction
)
15501 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15502 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15503 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15505 std::string rt
= GPR(copy(rt_value
));
15506 std::string u
= IMMEDIATE(copy(u_value
));
15507 std::string rs
= GPR(copy(rs_value
));
15509 return img::format("SW %s, %s(%s)", rt
, u
, rs
);
15514 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15517 * 10987654321098765432109876543210
15518 * 001000 00010001101
15523 std::string
NMD::SWC1_GP_(uint64 instruction
)
15525 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
15526 uint64 u_value
= extr_uil2il2bs16Fmsb17(instruction
);
15528 std::string ft
= FPR(copy(ft_value
));
15529 std::string u
= IMMEDIATE(copy(u_value
));
15531 return img::format("SWC1 %s, %s($%d)", ft
, u
, 28);
15536 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15539 * 10987654321098765432109876543210
15540 * 001000 00010001101
15545 std::string
NMD::SWC1_S9_(uint64 instruction
)
15547 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15548 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
15549 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15551 std::string ft
= FPR(copy(ft_value
));
15552 std::string s
= IMMEDIATE(copy(s_value
));
15553 std::string rs
= GPR(copy(rs_value
));
15555 return img::format("SWC1 %s, %s(%s)", ft
, s
, rs
);
15560 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15563 * 10987654321098765432109876543210
15564 * 001000 00010001101
15569 std::string
NMD::SWC1_U12_(uint64 instruction
)
15571 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
15572 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
15573 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15575 std::string ft
= FPR(copy(ft_value
));
15576 std::string u
= IMMEDIATE(copy(u_value
));
15577 std::string rs
= GPR(copy(rs_value
));
15579 return img::format("SWC1 %s, %s(%s)", ft
, u
, rs
);
15584 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15587 * 10987654321098765432109876543210
15588 * 001000 00010001101
15593 std::string
NMD::SWC1X(uint64 instruction
)
15595 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15596 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15597 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15599 std::string ft
= FPR(copy(ft_value
));
15600 std::string rs
= GPR(copy(rs_value
));
15601 std::string rt
= GPR(copy(rt_value
));
15603 return img::format("SWC1X %s, %s(%s)", ft
, rs
, rt
);
15608 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15611 * 10987654321098765432109876543210
15612 * 001000 00010001101
15617 std::string
NMD::SWC1XS(uint64 instruction
)
15619 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15620 uint64 ft_value
= extract_ft_15_14_13_12_11(instruction
);
15621 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15623 std::string ft
= FPR(copy(ft_value
));
15624 std::string rs
= GPR(copy(rs_value
));
15625 std::string rt
= GPR(copy(rt_value
));
15627 return img::format("SWC1XS %s, %s(%s)", ft
, rs
, rt
);
15632 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15635 * 10987654321098765432109876543210
15636 * 001000 00010001101
15641 std::string
NMD::SWC2(uint64 instruction
)
15643 uint64 cs_value
= extract_cs_25_24_23_22_21(instruction
);
15644 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15645 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15647 std::string cs
= CPR(copy(cs_value
));
15648 std::string s
= IMMEDIATE(copy(s_value
));
15649 std::string rs
= GPR(copy(rs_value
));
15651 return img::format("SWC2 %s, %s(%s)", cs
, s
, rs
);
15656 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15659 * 10987654321098765432109876543210
15660 * 001000 00010001101
15665 std::string
NMD::SWE(uint64 instruction
)
15667 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15668 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15669 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15671 std::string rt
= GPR(copy(rt_value
));
15672 std::string s
= IMMEDIATE(copy(s_value
));
15673 std::string rs
= GPR(copy(rs_value
));
15675 return img::format("SWE %s, %s(%s)", rt
, s
, rs
);
15680 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15683 * 10987654321098765432109876543210
15684 * 001000 00010001101
15689 std::string
NMD::SWM(uint64 instruction
)
15691 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15692 uint64 count3_value
= extract_count3_14_13_12(instruction
);
15693 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15694 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15696 std::string rt
= GPR(copy(rt_value
));
15697 std::string s
= IMMEDIATE(copy(s_value
));
15698 std::string rs
= GPR(copy(rs_value
));
15699 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
15701 return img::format("SWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
15706 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15709 * 10987654321098765432109876543210
15710 * 001000 00010001101
15715 std::string
NMD::SWPC_48_(uint64 instruction
)
15717 uint64 rt_value
= extract_rt_41_40_39_38_37(instruction
);
15718 int64 s_value
= extr_sil0il16bs16_il16il0bs16Tmsb31(instruction
);
15720 std::string rt
= GPR(copy(rt_value
));
15721 std::string s
= ADDRESS(encode_s_from_address(s_value
), 6);
15723 return img::format("SWPC %s, %s", rt
, s
);
15728 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15731 * 10987654321098765432109876543210
15732 * 001000 00010001101
15737 std::string
NMD::SWX(uint64 instruction
)
15739 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15740 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15741 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15743 std::string rd
= GPR(copy(rd_value
));
15744 std::string rs
= GPR(copy(rs_value
));
15745 std::string rt
= GPR(copy(rt_value
));
15747 return img::format("SWX %s, %s(%s)", rd
, rs
, rt
);
15752 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15755 * 10987654321098765432109876543210
15756 * 001000 00010001101
15761 std::string
NMD::SWXS(uint64 instruction
)
15763 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15764 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
15765 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15767 std::string rd
= GPR(copy(rd_value
));
15768 std::string rs
= GPR(copy(rs_value
));
15769 std::string rt
= GPR(copy(rt_value
));
15771 return img::format("SWXS %s, %s(%s)", rd
, rs
, rt
);
15776 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15779 * 10987654321098765432109876543210
15780 * 001000 00010001101
15785 std::string
NMD::SYNC(uint64 instruction
)
15787 uint64 stype_value
= extract_stype_20_19_18_17_16(instruction
);
15789 std::string stype
= IMMEDIATE(copy(stype_value
));
15791 return img::format("SYNC %s", stype
);
15796 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15799 * 10987654321098765432109876543210
15800 * 001000 00010001101
15805 std::string
NMD::SYNCI(uint64 instruction
)
15807 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15808 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15810 std::string s
= IMMEDIATE(copy(s_value
));
15811 std::string rs
= GPR(copy(rs_value
));
15813 return img::format("SYNCI %s(%s)", s
, rs
);
15818 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15821 * 10987654321098765432109876543210
15822 * 001000 00010001101
15827 std::string
NMD::SYNCIE(uint64 instruction
)
15829 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
15830 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15832 std::string s
= IMMEDIATE(copy(s_value
));
15833 std::string rs
= GPR(copy(rs_value
));
15835 return img::format("SYNCIE %s(%s)", s
, rs
);
15840 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15843 * 10987654321098765432109876543210
15844 * 001000 00010001101
15849 std::string
NMD::SYSCALL_16_(uint64 instruction
)
15851 uint64 code_value
= extract_code_1_0(instruction
);
15853 std::string code
= IMMEDIATE(copy(code_value
));
15855 return img::format("SYSCALL %s", code
);
15860 * SYSCALL code - System Call. Cause a System Call Exception
15863 * 10987654321098765432109876543210
15865 * code ------------------
15867 std::string
NMD::SYSCALL_32_(uint64 instruction
)
15869 uint64 code_value
= extract_code_17_to_0(instruction
);
15871 std::string code
= IMMEDIATE(copy(code_value
));
15873 return img::format("SYSCALL %s", code
);
15878 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15881 * 10987654321098765432109876543210
15882 * 001000 00010001101
15887 std::string
NMD::TEQ(uint64 instruction
)
15889 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
15890 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
15892 std::string rs
= GPR(copy(rs_value
));
15893 std::string rt
= GPR(copy(rt_value
));
15895 return img::format("TEQ %s, %s", rs
, rt
);
15900 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15903 * 10987654321098765432109876543210
15904 * 001000 00010001101
15909 std::string
NMD::TLBGINV(uint64 instruction
)
15918 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15921 * 10987654321098765432109876543210
15922 * 001000 00010001101
15927 std::string
NMD::TLBGINVF(uint64 instruction
)
15931 return "TLBGINVF ";
15936 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15939 * 10987654321098765432109876543210
15940 * 001000 00010001101
15945 std::string
NMD::TLBGP(uint64 instruction
)
15954 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15957 * 10987654321098765432109876543210
15958 * 001000 00010001101
15963 std::string
NMD::TLBGR(uint64 instruction
)
15972 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15975 * 10987654321098765432109876543210
15976 * 001000 00010001101
15981 std::string
NMD::TLBGWI(uint64 instruction
)
15990 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
15993 * 10987654321098765432109876543210
15994 * 001000 00010001101
15999 std::string
NMD::TLBGWR(uint64 instruction
)
16008 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16011 * 10987654321098765432109876543210
16012 * 001000 00010001101
16017 std::string
NMD::TLBINV(uint64 instruction
)
16026 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16029 * 10987654321098765432109876543210
16030 * 001000 00010001101
16035 std::string
NMD::TLBINVF(uint64 instruction
)
16044 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16047 * 10987654321098765432109876543210
16048 * 001000 00010001101
16053 std::string
NMD::TLBP(uint64 instruction
)
16062 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16065 * 10987654321098765432109876543210
16066 * 001000 00010001101
16071 std::string
NMD::TLBR(uint64 instruction
)
16080 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16083 * 10987654321098765432109876543210
16084 * 001000 00010001101
16089 std::string
NMD::TLBWI(uint64 instruction
)
16098 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16101 * 10987654321098765432109876543210
16102 * 001000 00010001101
16107 std::string
NMD::TLBWR(uint64 instruction
)
16116 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16119 * 10987654321098765432109876543210
16120 * 001000 00010001101
16125 std::string
NMD::TNE(uint64 instruction
)
16127 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16128 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16130 std::string rs
= GPR(copy(rs_value
));
16131 std::string rt
= GPR(copy(rt_value
));
16133 return img::format("TNE %s, %s", rs
, rt
);
16138 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16141 * 10987654321098765432109876543210
16142 * 001000 00010001101
16147 std::string
NMD::TRUNC_L_D(uint64 instruction
)
16149 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
16150 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
16152 std::string ft
= FPR(copy(ft_value
));
16153 std::string fs
= FPR(copy(fs_value
));
16155 return img::format("TRUNC.L.D %s, %s", ft
, fs
);
16160 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16163 * 10987654321098765432109876543210
16164 * 001000 00010001101
16169 std::string
NMD::TRUNC_L_S(uint64 instruction
)
16171 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
16172 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
16174 std::string ft
= FPR(copy(ft_value
));
16175 std::string fs
= FPR(copy(fs_value
));
16177 return img::format("TRUNC.L.S %s, %s", ft
, fs
);
16182 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16185 * 10987654321098765432109876543210
16186 * 001000 00010001101
16191 std::string
NMD::TRUNC_W_D(uint64 instruction
)
16193 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
16194 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
16196 std::string ft
= FPR(copy(ft_value
));
16197 std::string fs
= FPR(copy(fs_value
));
16199 return img::format("TRUNC.W.D %s, %s", ft
, fs
);
16204 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16207 * 10987654321098765432109876543210
16208 * 001000 00010001101
16213 std::string
NMD::TRUNC_W_S(uint64 instruction
)
16215 uint64 fs_value
= extract_fs_15_14_13_12_11(instruction
);
16216 uint64 ft_value
= extract_ft_20_19_18_17_16(instruction
);
16218 std::string ft
= FPR(copy(ft_value
));
16219 std::string fs
= FPR(copy(fs_value
));
16221 return img::format("TRUNC.W.S %s, %s", ft
, fs
);
16226 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16229 * 10987654321098765432109876543210
16230 * 001000 00010001101
16235 std::string
NMD::UALDM(uint64 instruction
)
16237 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16238 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16239 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16240 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16242 std::string rt
= GPR(copy(rt_value
));
16243 std::string s
= IMMEDIATE(copy(s_value
));
16244 std::string rs
= GPR(copy(rs_value
));
16245 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16247 return img::format("UALDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16252 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16255 * 10987654321098765432109876543210
16256 * 001000 00010001101
16261 std::string
NMD::UALH(uint64 instruction
)
16263 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16264 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16265 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16267 std::string rt
= GPR(copy(rt_value
));
16268 std::string s
= IMMEDIATE(copy(s_value
));
16269 std::string rs
= GPR(copy(rs_value
));
16271 return img::format("UALH %s, %s(%s)", rt
, s
, rs
);
16276 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16279 * 10987654321098765432109876543210
16280 * 001000 00010001101
16285 std::string
NMD::UALWM(uint64 instruction
)
16287 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16288 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16289 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16290 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16292 std::string rt
= GPR(copy(rt_value
));
16293 std::string s
= IMMEDIATE(copy(s_value
));
16294 std::string rs
= GPR(copy(rs_value
));
16295 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16297 return img::format("UALWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16302 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16305 * 10987654321098765432109876543210
16306 * 001000 00010001101
16311 std::string
NMD::UASDM(uint64 instruction
)
16313 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16314 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16315 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16316 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16318 std::string rt
= GPR(copy(rt_value
));
16319 std::string s
= IMMEDIATE(copy(s_value
));
16320 std::string rs
= GPR(copy(rs_value
));
16321 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16323 return img::format("UASDM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16328 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16331 * 10987654321098765432109876543210
16332 * 001000 00010001101
16337 std::string
NMD::UASH(uint64 instruction
)
16339 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16340 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16341 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16343 std::string rt
= GPR(copy(rt_value
));
16344 std::string s
= IMMEDIATE(copy(s_value
));
16345 std::string rs
= GPR(copy(rs_value
));
16347 return img::format("UASH %s, %s(%s)", rt
, s
, rs
);
16352 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16355 * 10987654321098765432109876543210
16356 * 001000 00010001101
16361 std::string
NMD::UASWM(uint64 instruction
)
16363 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16364 uint64 count3_value
= extract_count3_14_13_12(instruction
);
16365 int64 s_value
= extr_sil0il0bs8_il15il8bs1Tmsb8(instruction
);
16366 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16368 std::string rt
= GPR(copy(rt_value
));
16369 std::string s
= IMMEDIATE(copy(s_value
));
16370 std::string rs
= GPR(copy(rs_value
));
16371 std::string count3
= IMMEDIATE(encode_count3_from_count(count3_value
));
16373 return img::format("UASWM %s, %s(%s), %s", rt
, s
, rs
, count3
);
16378 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16381 * 10987654321098765432109876543210
16382 * 001000 00010001101
16387 std::string
NMD::UDI(uint64 instruction
)
16389 uint64 op_value
= extract_op_25_to_3(instruction
);
16391 std::string op
= IMMEDIATE(copy(op_value
));
16393 return img::format("UDI %s", op
);
16398 * WAIT code - Enter Wait State
16401 * 10987654321098765432109876543210
16402 * 001000 1100001101111111
16405 std::string
NMD::WAIT(uint64 instruction
)
16407 uint64 code_value
= extract_code_25_24_23_22_21_20_19_18_17_16(instruction
);
16409 std::string code
= IMMEDIATE(copy(code_value
));
16411 return img::format("WAIT %s", code
);
16416 * WRDSP rt, mask - Write Fields to DSPControl Register from a GPR
16419 * 10987654321098765432109876543210
16420 * 001000 01011001111111
16424 std::string
NMD::WRDSP(uint64 instruction
)
16426 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16427 uint64 mask_value
= extract_mask_20_19_18_17_16_15_14(instruction
);
16429 std::string rt
= GPR(copy(rt_value
));
16430 std::string mask
= IMMEDIATE(copy(mask_value
));
16432 return img::format("WRDSP %s, %s", rt
, mask
);
16437 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16440 * 10987654321098765432109876543210
16441 * 001000 00010001101
16446 std::string
NMD::WRPGPR(uint64 instruction
)
16448 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16449 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16451 std::string rt
= GPR(copy(rt_value
));
16452 std::string rs
= GPR(copy(rs_value
));
16454 return img::format("WRPGPR %s, %s", rt
, rs
);
16459 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16462 * 10987654321098765432109876543210
16463 * 001000 00010001101
16468 std::string
NMD::XOR_16_(uint64 instruction
)
16470 uint64 rt3_value
= extract_rt3_9_8_7(instruction
);
16471 uint64 rs3_value
= extract_rs3_6_5_4(instruction
);
16473 std::string rs3
= GPR(encode_gpr3(rs3_value
));
16474 std::string rt3
= GPR(encode_gpr3(rt3_value
));
16476 return img::format("XOR %s, %s", rs3
, rt3
);
16481 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16484 * 10987654321098765432109876543210
16485 * 001000 00010001101
16490 std::string
NMD::XOR_32_(uint64 instruction
)
16492 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16493 uint64 rd_value
= extract_rd_20_19_18_17_16(instruction
);
16494 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16496 std::string rd
= GPR(copy(rd_value
));
16497 std::string rs
= GPR(copy(rs_value
));
16498 std::string rt
= GPR(copy(rt_value
));
16500 return img::format("XOR %s, %s, %s", rd
, rs
, rt
);
16505 * ADDQH_R.W rd, rt, rs - Add Fractional Words And Shift Right to Halve Results
16508 * 10987654321098765432109876543210
16509 * 001000 00010001101
16514 std::string
NMD::XORI(uint64 instruction
)
16516 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16517 uint64 u_value
= extract_u_11_10_9_8_7_6_5_4_3_2_1_0(instruction
);
16518 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16520 std::string rt
= GPR(copy(rt_value
));
16521 std::string rs
= GPR(copy(rs_value
));
16522 std::string u
= IMMEDIATE(copy(u_value
));
16524 return img::format("XORI %s, %s, %s", rt
, rs
, u
);
16532 * 10987654321098765432109876543210
16533 * 001000 00010001101
16537 std::string
NMD::YIELD(uint64 instruction
)
16539 uint64 rt_value
= extract_rt_25_24_23_22_21(instruction
);
16540 uint64 rs_value
= extract_rs_20_19_18_17_16(instruction
);
16542 std::string rt
= GPR(copy(rt_value
));
16543 std::string rs
= GPR(copy(rs_value
));
16545 return img::format("YIELD %s, %s", rt
, rs
);
16550 NMD::Pool
NMD::P_SYSCALL
[2] = {
16551 { instruction
, 0 , 0 , 32,
16552 0xfffc0000, 0x00080000, &NMD::SYSCALL_32_
, 0,
16553 0x0 }, /* SYSCALL[32] */
16554 { instruction
, 0 , 0 , 32,
16555 0xfffc0000, 0x000c0000, &NMD::HYPCALL
, 0,
16556 CP0_
| VZ_
}, /* HYPCALL */
16560 NMD::Pool
NMD::P_RI
[4] = {
16561 { instruction
, 0 , 0 , 32,
16562 0xfff80000, 0x00000000, &NMD::SIGRIE
, 0,
16563 0x0 }, /* SIGRIE */
16564 { pool
, P_SYSCALL
, 2 , 32,
16565 0xfff80000, 0x00080000, 0 , 0,
16566 0x0 }, /* P.SYSCALL */
16567 { instruction
, 0 , 0 , 32,
16568 0xfff80000, 0x00100000, &NMD::BREAK_32_
, 0,
16569 0x0 }, /* BREAK[32] */
16570 { instruction
, 0 , 0 , 32,
16571 0xfff80000, 0x00180000, &NMD::SDBBP_32_
, 0,
16572 EJTAG_
}, /* SDBBP[32] */
16576 NMD::Pool
NMD::P_ADDIU
[2] = {
16577 { pool
, P_RI
, 4 , 32,
16578 0xffe00000, 0x00000000, 0 , 0,
16580 { instruction
, 0 , 0 , 32,
16581 0xfc000000, 0x00000000, &NMD::ADDIU_32_
, &NMD::ADDIU_32__cond
,
16582 0x0 }, /* ADDIU[32] */
16586 NMD::Pool
NMD::P_TRAP
[2] = {
16587 { instruction
, 0 , 0 , 32,
16588 0xfc0007ff, 0x20000000, &NMD::TEQ
, 0,
16590 { instruction
, 0 , 0 , 32,
16591 0xfc0007ff, 0x20000400, &NMD::TNE
, 0,
16596 NMD::Pool
NMD::P_CMOVE
[2] = {
16597 { instruction
, 0 , 0 , 32,
16598 0xfc0007ff, 0x20000210, &NMD::MOVZ
, 0,
16600 { instruction
, 0 , 0 , 32,
16601 0xfc0007ff, 0x20000610, &NMD::MOVN
, 0,
16606 NMD::Pool
NMD::P_D_MT_VPE
[2] = {
16607 { instruction
, 0 , 0 , 32,
16608 0xfc1f3fff, 0x20010ab0, &NMD::DMT
, 0,
16610 { instruction
, 0 , 0 , 32,
16611 0xfc1f3fff, 0x20000ab0, &NMD::DVPE
, 0,
16616 NMD::Pool
NMD::P_E_MT_VPE
[2] = {
16617 { instruction
, 0 , 0 , 32,
16618 0xfc1f3fff, 0x20010eb0, &NMD::EMT
, 0,
16620 { instruction
, 0 , 0 , 32,
16621 0xfc1f3fff, 0x20000eb0, &NMD::EVPE
, 0,
16626 NMD::Pool
NMD::_P_MT_VPE
[2] = {
16627 { pool
, P_D_MT_VPE
, 2 , 32,
16628 0xfc003fff, 0x20000ab0, 0 , 0,
16629 0x0 }, /* P.D_MT_VPE */
16630 { pool
, P_E_MT_VPE
, 2 , 32,
16631 0xfc003fff, 0x20000eb0, 0 , 0,
16632 0x0 }, /* P.E_MT_VPE */
16636 NMD::Pool
NMD::P_MT_VPE
[8] = {
16637 { reserved_block
, 0 , 0 , 32,
16638 0xfc003bff, 0x200002b0, 0 , 0,
16639 0x0 }, /* P.MT_VPE~*(0) */
16640 { pool
, _P_MT_VPE
, 2 , 32,
16641 0xfc003bff, 0x20000ab0, 0 , 0,
16642 0x0 }, /* _P.MT_VPE */
16643 { reserved_block
, 0 , 0 , 32,
16644 0xfc003bff, 0x200012b0, 0 , 0,
16645 0x0 }, /* P.MT_VPE~*(2) */
16646 { reserved_block
, 0 , 0 , 32,
16647 0xfc003bff, 0x20001ab0, 0 , 0,
16648 0x0 }, /* P.MT_VPE~*(3) */
16649 { reserved_block
, 0 , 0 , 32,
16650 0xfc003bff, 0x200022b0, 0 , 0,
16651 0x0 }, /* P.MT_VPE~*(4) */
16652 { reserved_block
, 0 , 0 , 32,
16653 0xfc003bff, 0x20002ab0, 0 , 0,
16654 0x0 }, /* P.MT_VPE~*(5) */
16655 { reserved_block
, 0 , 0 , 32,
16656 0xfc003bff, 0x200032b0, 0 , 0,
16657 0x0 }, /* P.MT_VPE~*(6) */
16658 { reserved_block
, 0 , 0 , 32,
16659 0xfc003bff, 0x20003ab0, 0 , 0,
16660 0x0 }, /* P.MT_VPE~*(7) */
16664 NMD::Pool
NMD::P_DVP
[2] = {
16665 { instruction
, 0 , 0 , 32,
16666 0xfc00ffff, 0x20000390, &NMD::DVP
, 0,
16668 { instruction
, 0 , 0 , 32,
16669 0xfc00ffff, 0x20000790, &NMD::EVP
, 0,
16674 NMD::Pool
NMD::P_SLTU
[2] = {
16675 { pool
, P_DVP
, 2 , 32,
16676 0xfc00fbff, 0x20000390, 0 , 0,
16678 { instruction
, 0 , 0 , 32,
16679 0xfc0003ff, 0x20000390, &NMD::SLTU
, &NMD::SLTU_cond
,
16684 NMD::Pool
NMD::_POOL32A0
[128] = {
16685 { pool
, P_TRAP
, 2 , 32,
16686 0xfc0003ff, 0x20000000, 0 , 0,
16687 0x0 }, /* P.TRAP */
16688 { instruction
, 0 , 0 , 32,
16689 0xfc0003ff, 0x20000008, &NMD::SEB
, 0,
16691 { instruction
, 0 , 0 , 32,
16692 0xfc0003ff, 0x20000010, &NMD::SLLV
, 0,
16694 { instruction
, 0 , 0 , 32,
16695 0xfc0003ff, 0x20000018, &NMD::MUL_32_
, 0,
16696 0x0 }, /* MUL[32] */
16697 { reserved_block
, 0 , 0 , 32,
16698 0xfc0003ff, 0x20000020, 0 , 0,
16699 0x0 }, /* _POOL32A0~*(4) */
16700 { reserved_block
, 0 , 0 , 32,
16701 0xfc0003ff, 0x20000028, 0 , 0,
16702 0x0 }, /* _POOL32A0~*(5) */
16703 { instruction
, 0 , 0 , 32,
16704 0xfc0003ff, 0x20000030, &NMD::MFC0
, 0,
16706 { instruction
, 0 , 0 , 32,
16707 0xfc0003ff, 0x20000038, &NMD::MFHC0
, 0,
16708 CP0_
| MVH_
}, /* MFHC0 */
16709 { reserved_block
, 0 , 0 , 32,
16710 0xfc0003ff, 0x20000040, 0 , 0,
16711 0x0 }, /* _POOL32A0~*(8) */
16712 { instruction
, 0 , 0 , 32,
16713 0xfc0003ff, 0x20000048, &NMD::SEH
, 0,
16715 { instruction
, 0 , 0 , 32,
16716 0xfc0003ff, 0x20000050, &NMD::SRLV
, 0,
16718 { instruction
, 0 , 0 , 32,
16719 0xfc0003ff, 0x20000058, &NMD::MUH
, 0,
16721 { reserved_block
, 0 , 0 , 32,
16722 0xfc0003ff, 0x20000060, 0 , 0,
16723 0x0 }, /* _POOL32A0~*(12) */
16724 { reserved_block
, 0 , 0 , 32,
16725 0xfc0003ff, 0x20000068, 0 , 0,
16726 0x0 }, /* _POOL32A0~*(13) */
16727 { instruction
, 0 , 0 , 32,
16728 0xfc0003ff, 0x20000070, &NMD::MTC0
, 0,
16730 { instruction
, 0 , 0 , 32,
16731 0xfc0003ff, 0x20000078, &NMD::MTHC0
, 0,
16732 CP0_
| MVH_
}, /* MTHC0 */
16733 { reserved_block
, 0 , 0 , 32,
16734 0xfc0003ff, 0x20000080, 0 , 0,
16735 0x0 }, /* _POOL32A0~*(16) */
16736 { reserved_block
, 0 , 0 , 32,
16737 0xfc0003ff, 0x20000088, 0 , 0,
16738 0x0 }, /* _POOL32A0~*(17) */
16739 { instruction
, 0 , 0 , 32,
16740 0xfc0003ff, 0x20000090, &NMD::SRAV
, 0,
16742 { instruction
, 0 , 0 , 32,
16743 0xfc0003ff, 0x20000098, &NMD::MULU
, 0,
16745 { reserved_block
, 0 , 0 , 32,
16746 0xfc0003ff, 0x200000a0, 0 , 0,
16747 0x0 }, /* _POOL32A0~*(20) */
16748 { reserved_block
, 0 , 0 , 32,
16749 0xfc0003ff, 0x200000a8, 0 , 0,
16750 0x0 }, /* _POOL32A0~*(21) */
16751 { instruction
, 0 , 0 , 32,
16752 0xfc0003ff, 0x200000b0, &NMD::MFGC0
, 0,
16753 CP0_
| VZ_
}, /* MFGC0 */
16754 { instruction
, 0 , 0 , 32,
16755 0xfc0003ff, 0x200000b8, &NMD::MFHGC0
, 0,
16756 CP0_
| VZ_
| MVH_
}, /* MFHGC0 */
16757 { reserved_block
, 0 , 0 , 32,
16758 0xfc0003ff, 0x200000c0, 0 , 0,
16759 0x0 }, /* _POOL32A0~*(24) */
16760 { reserved_block
, 0 , 0 , 32,
16761 0xfc0003ff, 0x200000c8, 0 , 0,
16762 0x0 }, /* _POOL32A0~*(25) */
16763 { instruction
, 0 , 0 , 32,
16764 0xfc0003ff, 0x200000d0, &NMD::ROTRV
, 0,
16766 { instruction
, 0 , 0 , 32,
16767 0xfc0003ff, 0x200000d8, &NMD::MUHU
, 0,
16769 { reserved_block
, 0 , 0 , 32,
16770 0xfc0003ff, 0x200000e0, 0 , 0,
16771 0x0 }, /* _POOL32A0~*(28) */
16772 { reserved_block
, 0 , 0 , 32,
16773 0xfc0003ff, 0x200000e8, 0 , 0,
16774 0x0 }, /* _POOL32A0~*(29) */
16775 { instruction
, 0 , 0 , 32,
16776 0xfc0003ff, 0x200000f0, &NMD::MTGC0
, 0,
16777 CP0_
| VZ_
}, /* MTGC0 */
16778 { instruction
, 0 , 0 , 32,
16779 0xfc0003ff, 0x200000f8, &NMD::MTHGC0
, 0,
16780 CP0_
| VZ_
| MVH_
}, /* MTHGC0 */
16781 { reserved_block
, 0 , 0 , 32,
16782 0xfc0003ff, 0x20000100, 0 , 0,
16783 0x0 }, /* _POOL32A0~*(32) */
16784 { reserved_block
, 0 , 0 , 32,
16785 0xfc0003ff, 0x20000108, 0 , 0,
16786 0x0 }, /* _POOL32A0~*(33) */
16787 { instruction
, 0 , 0 , 32,
16788 0xfc0003ff, 0x20000110, &NMD::ADD
, 0,
16790 { instruction
, 0 , 0 , 32,
16791 0xfc0003ff, 0x20000118, &NMD::DIV
, 0,
16793 { reserved_block
, 0 , 0 , 32,
16794 0xfc0003ff, 0x20000120, 0 , 0,
16795 0x0 }, /* _POOL32A0~*(36) */
16796 { reserved_block
, 0 , 0 , 32,
16797 0xfc0003ff, 0x20000128, 0 , 0,
16798 0x0 }, /* _POOL32A0~*(37) */
16799 { instruction
, 0 , 0 , 32,
16800 0xfc0003ff, 0x20000130, &NMD::DMFC0
, 0,
16801 CP0_
| MIPS64_
}, /* DMFC0 */
16802 { reserved_block
, 0 , 0 , 32,
16803 0xfc0003ff, 0x20000138, 0 , 0,
16804 0x0 }, /* _POOL32A0~*(39) */
16805 { reserved_block
, 0 , 0 , 32,
16806 0xfc0003ff, 0x20000140, 0 , 0,
16807 0x0 }, /* _POOL32A0~*(40) */
16808 { reserved_block
, 0 , 0 , 32,
16809 0xfc0003ff, 0x20000148, 0 , 0,
16810 0x0 }, /* _POOL32A0~*(41) */
16811 { instruction
, 0 , 0 , 32,
16812 0xfc0003ff, 0x20000150, &NMD::ADDU_32_
, 0,
16813 0x0 }, /* ADDU[32] */
16814 { instruction
, 0 , 0 , 32,
16815 0xfc0003ff, 0x20000158, &NMD::MOD
, 0,
16817 { reserved_block
, 0 , 0 , 32,
16818 0xfc0003ff, 0x20000160, 0 , 0,
16819 0x0 }, /* _POOL32A0~*(44) */
16820 { reserved_block
, 0 , 0 , 32,
16821 0xfc0003ff, 0x20000168, 0 , 0,
16822 0x0 }, /* _POOL32A0~*(45) */
16823 { instruction
, 0 , 0 , 32,
16824 0xfc0003ff, 0x20000170, &NMD::DMTC0
, 0,
16825 CP0_
| MIPS64_
}, /* DMTC0 */
16826 { reserved_block
, 0 , 0 , 32,
16827 0xfc0003ff, 0x20000178, 0 , 0,
16828 0x0 }, /* _POOL32A0~*(47) */
16829 { reserved_block
, 0 , 0 , 32,
16830 0xfc0003ff, 0x20000180, 0 , 0,
16831 0x0 }, /* _POOL32A0~*(48) */
16832 { reserved_block
, 0 , 0 , 32,
16833 0xfc0003ff, 0x20000188, 0 , 0,
16834 0x0 }, /* _POOL32A0~*(49) */
16835 { instruction
, 0 , 0 , 32,
16836 0xfc0003ff, 0x20000190, &NMD::SUB
, 0,
16838 { instruction
, 0 , 0 , 32,
16839 0xfc0003ff, 0x20000198, &NMD::DIVU
, 0,
16841 { reserved_block
, 0 , 0 , 32,
16842 0xfc0003ff, 0x200001a0, 0 , 0,
16843 0x0 }, /* _POOL32A0~*(52) */
16844 { reserved_block
, 0 , 0 , 32,
16845 0xfc0003ff, 0x200001a8, 0 , 0,
16846 0x0 }, /* _POOL32A0~*(53) */
16847 { instruction
, 0 , 0 , 32,
16848 0xfc0003ff, 0x200001b0, &NMD::DMFGC0
, 0,
16849 CP0_
| MIPS64_
| VZ_
}, /* DMFGC0 */
16850 { reserved_block
, 0 , 0 , 32,
16851 0xfc0003ff, 0x200001b8, 0 , 0,
16852 0x0 }, /* _POOL32A0~*(55) */
16853 { instruction
, 0 , 0 , 32,
16854 0xfc0003ff, 0x200001c0, &NMD::RDHWR
, 0,
16855 XMMS_
}, /* RDHWR */
16856 { reserved_block
, 0 , 0 , 32,
16857 0xfc0003ff, 0x200001c8, 0 , 0,
16858 0x0 }, /* _POOL32A0~*(57) */
16859 { instruction
, 0 , 0 , 32,
16860 0xfc0003ff, 0x200001d0, &NMD::SUBU_32_
, 0,
16861 0x0 }, /* SUBU[32] */
16862 { instruction
, 0 , 0 , 32,
16863 0xfc0003ff, 0x200001d8, &NMD::MODU
, 0,
16865 { reserved_block
, 0 , 0 , 32,
16866 0xfc0003ff, 0x200001e0, 0 , 0,
16867 0x0 }, /* _POOL32A0~*(60) */
16868 { reserved_block
, 0 , 0 , 32,
16869 0xfc0003ff, 0x200001e8, 0 , 0,
16870 0x0 }, /* _POOL32A0~*(61) */
16871 { instruction
, 0 , 0 , 32,
16872 0xfc0003ff, 0x200001f0, &NMD::DMTGC0
, 0,
16873 CP0_
| MIPS64_
| VZ_
}, /* DMTGC0 */
16874 { reserved_block
, 0 , 0 , 32,
16875 0xfc0003ff, 0x200001f8, 0 , 0,
16876 0x0 }, /* _POOL32A0~*(63) */
16877 { reserved_block
, 0 , 0 , 32,
16878 0xfc0003ff, 0x20000200, 0 , 0,
16879 0x0 }, /* _POOL32A0~*(64) */
16880 { reserved_block
, 0 , 0 , 32,
16881 0xfc0003ff, 0x20000208, 0 , 0,
16882 0x0 }, /* _POOL32A0~*(65) */
16883 { pool
, P_CMOVE
, 2 , 32,
16884 0xfc0003ff, 0x20000210, 0 , 0,
16885 0x0 }, /* P.CMOVE */
16886 { reserved_block
, 0 , 0 , 32,
16887 0xfc0003ff, 0x20000218, 0 , 0,
16888 0x0 }, /* _POOL32A0~*(67) */
16889 { reserved_block
, 0 , 0 , 32,
16890 0xfc0003ff, 0x20000220, 0 , 0,
16891 0x0 }, /* _POOL32A0~*(68) */
16892 { instruction
, 0 , 0 , 32,
16893 0xfc0003ff, 0x20000228, &NMD::FORK
, 0,
16895 { instruction
, 0 , 0 , 32,
16896 0xfc0003ff, 0x20000230, &NMD::MFTR
, 0,
16898 { instruction
, 0 , 0 , 32,
16899 0xfc0003ff, 0x20000238, &NMD::MFHTR
, 0,
16901 { reserved_block
, 0 , 0 , 32,
16902 0xfc0003ff, 0x20000240, 0 , 0,
16903 0x0 }, /* _POOL32A0~*(72) */
16904 { reserved_block
, 0 , 0 , 32,
16905 0xfc0003ff, 0x20000248, 0 , 0,
16906 0x0 }, /* _POOL32A0~*(73) */
16907 { instruction
, 0 , 0 , 32,
16908 0xfc0003ff, 0x20000250, &NMD::AND_32_
, 0,
16909 0x0 }, /* AND[32] */
16910 { reserved_block
, 0 , 0 , 32,
16911 0xfc0003ff, 0x20000258, 0 , 0,
16912 0x0 }, /* _POOL32A0~*(75) */
16913 { reserved_block
, 0 , 0 , 32,
16914 0xfc0003ff, 0x20000260, 0 , 0,
16915 0x0 }, /* _POOL32A0~*(76) */
16916 { instruction
, 0 , 0 , 32,
16917 0xfc0003ff, 0x20000268, &NMD::YIELD
, 0,
16919 { instruction
, 0 , 0 , 32,
16920 0xfc0003ff, 0x20000270, &NMD::MTTR
, 0,
16922 { instruction
, 0 , 0 , 32,
16923 0xfc0003ff, 0x20000278, &NMD::MTHTR
, 0,
16925 { reserved_block
, 0 , 0 , 32,
16926 0xfc0003ff, 0x20000280, 0 , 0,
16927 0x0 }, /* _POOL32A0~*(80) */
16928 { reserved_block
, 0 , 0 , 32,
16929 0xfc0003ff, 0x20000288, 0 , 0,
16930 0x0 }, /* _POOL32A0~*(81) */
16931 { instruction
, 0 , 0 , 32,
16932 0xfc0003ff, 0x20000290, &NMD::OR_32_
, 0,
16933 0x0 }, /* OR[32] */
16934 { reserved_block
, 0 , 0 , 32,
16935 0xfc0003ff, 0x20000298, 0 , 0,
16936 0x0 }, /* _POOL32A0~*(83) */
16937 { reserved_block
, 0 , 0 , 32,
16938 0xfc0003ff, 0x200002a0, 0 , 0,
16939 0x0 }, /* _POOL32A0~*(84) */
16940 { reserved_block
, 0 , 0 , 32,
16941 0xfc0003ff, 0x200002a8, 0 , 0,
16942 0x0 }, /* _POOL32A0~*(85) */
16943 { pool
, P_MT_VPE
, 8 , 32,
16944 0xfc0003ff, 0x200002b0, 0 , 0,
16945 0x0 }, /* P.MT_VPE */
16946 { reserved_block
, 0 , 0 , 32,
16947 0xfc0003ff, 0x200002b8, 0 , 0,
16948 0x0 }, /* _POOL32A0~*(87) */
16949 { reserved_block
, 0 , 0 , 32,
16950 0xfc0003ff, 0x200002c0, 0 , 0,
16951 0x0 }, /* _POOL32A0~*(88) */
16952 { reserved_block
, 0 , 0 , 32,
16953 0xfc0003ff, 0x200002c8, 0 , 0,
16954 0x0 }, /* _POOL32A0~*(89) */
16955 { instruction
, 0 , 0 , 32,
16956 0xfc0003ff, 0x200002d0, &NMD::NOR
, 0,
16958 { reserved_block
, 0 , 0 , 32,
16959 0xfc0003ff, 0x200002d8, 0 , 0,
16960 0x0 }, /* _POOL32A0~*(91) */
16961 { reserved_block
, 0 , 0 , 32,
16962 0xfc0003ff, 0x200002e0, 0 , 0,
16963 0x0 }, /* _POOL32A0~*(92) */
16964 { reserved_block
, 0 , 0 , 32,
16965 0xfc0003ff, 0x200002e8, 0 , 0,
16966 0x0 }, /* _POOL32A0~*(93) */
16967 { reserved_block
, 0 , 0 , 32,
16968 0xfc0003ff, 0x200002f0, 0 , 0,
16969 0x0 }, /* _POOL32A0~*(94) */
16970 { reserved_block
, 0 , 0 , 32,
16971 0xfc0003ff, 0x200002f8, 0 , 0,
16972 0x0 }, /* _POOL32A0~*(95) */
16973 { reserved_block
, 0 , 0 , 32,
16974 0xfc0003ff, 0x20000300, 0 , 0,
16975 0x0 }, /* _POOL32A0~*(96) */
16976 { reserved_block
, 0 , 0 , 32,
16977 0xfc0003ff, 0x20000308, 0 , 0,
16978 0x0 }, /* _POOL32A0~*(97) */
16979 { instruction
, 0 , 0 , 32,
16980 0xfc0003ff, 0x20000310, &NMD::XOR_32_
, 0,
16981 0x0 }, /* XOR[32] */
16982 { reserved_block
, 0 , 0 , 32,
16983 0xfc0003ff, 0x20000318, 0 , 0,
16984 0x0 }, /* _POOL32A0~*(99) */
16985 { reserved_block
, 0 , 0 , 32,
16986 0xfc0003ff, 0x20000320, 0 , 0,
16987 0x0 }, /* _POOL32A0~*(100) */
16988 { reserved_block
, 0 , 0 , 32,
16989 0xfc0003ff, 0x20000328, 0 , 0,
16990 0x0 }, /* _POOL32A0~*(101) */
16991 { reserved_block
, 0 , 0 , 32,
16992 0xfc0003ff, 0x20000330, 0 , 0,
16993 0x0 }, /* _POOL32A0~*(102) */
16994 { reserved_block
, 0 , 0 , 32,
16995 0xfc0003ff, 0x20000338, 0 , 0,
16996 0x0 }, /* _POOL32A0~*(103) */
16997 { reserved_block
, 0 , 0 , 32,
16998 0xfc0003ff, 0x20000340, 0 , 0,
16999 0x0 }, /* _POOL32A0~*(104) */
17000 { reserved_block
, 0 , 0 , 32,
17001 0xfc0003ff, 0x20000348, 0 , 0,
17002 0x0 }, /* _POOL32A0~*(105) */
17003 { instruction
, 0 , 0 , 32,
17004 0xfc0003ff, 0x20000350, &NMD::SLT
, 0,
17006 { reserved_block
, 0 , 0 , 32,
17007 0xfc0003ff, 0x20000358, 0 , 0,
17008 0x0 }, /* _POOL32A0~*(107) */
17009 { reserved_block
, 0 , 0 , 32,
17010 0xfc0003ff, 0x20000360, 0 , 0,
17011 0x0 }, /* _POOL32A0~*(108) */
17012 { reserved_block
, 0 , 0 , 32,
17013 0xfc0003ff, 0x20000368, 0 , 0,
17014 0x0 }, /* _POOL32A0~*(109) */
17015 { reserved_block
, 0 , 0 , 32,
17016 0xfc0003ff, 0x20000370, 0 , 0,
17017 0x0 }, /* _POOL32A0~*(110) */
17018 { reserved_block
, 0 , 0 , 32,
17019 0xfc0003ff, 0x20000378, 0 , 0,
17020 0x0 }, /* _POOL32A0~*(111) */
17021 { reserved_block
, 0 , 0 , 32,
17022 0xfc0003ff, 0x20000380, 0 , 0,
17023 0x0 }, /* _POOL32A0~*(112) */
17024 { reserved_block
, 0 , 0 , 32,
17025 0xfc0003ff, 0x20000388, 0 , 0,
17026 0x0 }, /* _POOL32A0~*(113) */
17027 { pool
, P_SLTU
, 2 , 32,
17028 0xfc0003ff, 0x20000390, 0 , 0,
17029 0x0 }, /* P.SLTU */
17030 { reserved_block
, 0 , 0 , 32,
17031 0xfc0003ff, 0x20000398, 0 , 0,
17032 0x0 }, /* _POOL32A0~*(115) */
17033 { reserved_block
, 0 , 0 , 32,
17034 0xfc0003ff, 0x200003a0, 0 , 0,
17035 0x0 }, /* _POOL32A0~*(116) */
17036 { reserved_block
, 0 , 0 , 32,
17037 0xfc0003ff, 0x200003a8, 0 , 0,
17038 0x0 }, /* _POOL32A0~*(117) */
17039 { reserved_block
, 0 , 0 , 32,
17040 0xfc0003ff, 0x200003b0, 0 , 0,
17041 0x0 }, /* _POOL32A0~*(118) */
17042 { reserved_block
, 0 , 0 , 32,
17043 0xfc0003ff, 0x200003b8, 0 , 0,
17044 0x0 }, /* _POOL32A0~*(119) */
17045 { reserved_block
, 0 , 0 , 32,
17046 0xfc0003ff, 0x200003c0, 0 , 0,
17047 0x0 }, /* _POOL32A0~*(120) */
17048 { reserved_block
, 0 , 0 , 32,
17049 0xfc0003ff, 0x200003c8, 0 , 0,
17050 0x0 }, /* _POOL32A0~*(121) */
17051 { instruction
, 0 , 0 , 32,
17052 0xfc0003ff, 0x200003d0, &NMD::SOV
, 0,
17054 { reserved_block
, 0 , 0 , 32,
17055 0xfc0003ff, 0x200003d8, 0 , 0,
17056 0x0 }, /* _POOL32A0~*(123) */
17057 { reserved_block
, 0 , 0 , 32,
17058 0xfc0003ff, 0x200003e0, 0 , 0,
17059 0x0 }, /* _POOL32A0~*(124) */
17060 { reserved_block
, 0 , 0 , 32,
17061 0xfc0003ff, 0x200003e8, 0 , 0,
17062 0x0 }, /* _POOL32A0~*(125) */
17063 { reserved_block
, 0 , 0 , 32,
17064 0xfc0003ff, 0x200003f0, 0 , 0,
17065 0x0 }, /* _POOL32A0~*(126) */
17066 { reserved_block
, 0 , 0 , 32,
17067 0xfc0003ff, 0x200003f8, 0 , 0,
17068 0x0 }, /* _POOL32A0~*(127) */
17072 NMD::Pool
NMD::ADDQ__S__PH
[2] = {
17073 { instruction
, 0 , 0 , 32,
17074 0xfc0007ff, 0x2000000d, &NMD::ADDQ_PH
, 0,
17075 DSP_
}, /* ADDQ.PH */
17076 { instruction
, 0 , 0 , 32,
17077 0xfc0007ff, 0x2000040d, &NMD::ADDQ_S_PH
, 0,
17078 DSP_
}, /* ADDQ_S.PH */
17082 NMD::Pool
NMD::MUL__S__PH
[2] = {
17083 { instruction
, 0 , 0 , 32,
17084 0xfc0007ff, 0x2000002d, &NMD::MUL_PH
, 0,
17085 DSP_
}, /* MUL.PH */
17086 { instruction
, 0 , 0 , 32,
17087 0xfc0007ff, 0x2000042d, &NMD::MUL_S_PH
, 0,
17088 DSP_
}, /* MUL_S.PH */
17092 NMD::Pool
NMD::ADDQH__R__PH
[2] = {
17093 { instruction
, 0 , 0 , 32,
17094 0xfc0007ff, 0x2000004d, &NMD::ADDQH_PH
, 0,
17095 DSP_
}, /* ADDQH.PH */
17096 { instruction
, 0 , 0 , 32,
17097 0xfc0007ff, 0x2000044d, &NMD::ADDQH_R_PH
, 0,
17098 DSP_
}, /* ADDQH_R.PH */
17102 NMD::Pool
NMD::ADDQH__R__W
[2] = {
17103 { instruction
, 0 , 0 , 32,
17104 0xfc0007ff, 0x2000008d, &NMD::ADDQH_W
, 0,
17105 DSP_
}, /* ADDQH.W */
17106 { instruction
, 0 , 0 , 32,
17107 0xfc0007ff, 0x2000048d, &NMD::ADDQH_R_W
, 0,
17108 DSP_
}, /* ADDQH_R.W */
17112 NMD::Pool
NMD::ADDU__S__QB
[2] = {
17113 { instruction
, 0 , 0 , 32,
17114 0xfc0007ff, 0x200000cd, &NMD::ADDU_QB
, 0,
17115 DSP_
}, /* ADDU.QB */
17116 { instruction
, 0 , 0 , 32,
17117 0xfc0007ff, 0x200004cd, &NMD::ADDU_S_QB
, 0,
17118 DSP_
}, /* ADDU_S.QB */
17122 NMD::Pool
NMD::ADDU__S__PH
[2] = {
17123 { instruction
, 0 , 0 , 32,
17124 0xfc0007ff, 0x2000010d, &NMD::ADDU_PH
, 0,
17125 DSP_
}, /* ADDU.PH */
17126 { instruction
, 0 , 0 , 32,
17127 0xfc0007ff, 0x2000050d, &NMD::ADDU_S_PH
, 0,
17128 DSP_
}, /* ADDU_S.PH */
17132 NMD::Pool
NMD::ADDUH__R__QB
[2] = {
17133 { instruction
, 0 , 0 , 32,
17134 0xfc0007ff, 0x2000014d, &NMD::ADDUH_QB
, 0,
17135 DSP_
}, /* ADDUH.QB */
17136 { instruction
, 0 , 0 , 32,
17137 0xfc0007ff, 0x2000054d, &NMD::ADDUH_R_QB
, 0,
17138 DSP_
}, /* ADDUH_R.QB */
17142 NMD::Pool
NMD::SHRAV__R__PH
[2] = {
17143 { instruction
, 0 , 0 , 32,
17144 0xfc0007ff, 0x2000018d, &NMD::SHRAV_PH
, 0,
17145 DSP_
}, /* SHRAV.PH */
17146 { instruction
, 0 , 0 , 32,
17147 0xfc0007ff, 0x2000058d, &NMD::SHRAV_R_PH
, 0,
17148 DSP_
}, /* SHRAV_R.PH */
17152 NMD::Pool
NMD::SHRAV__R__QB
[2] = {
17153 { instruction
, 0 , 0 , 32,
17154 0xfc0007ff, 0x200001cd, &NMD::SHRAV_QB
, 0,
17155 DSP_
}, /* SHRAV.QB */
17156 { instruction
, 0 , 0 , 32,
17157 0xfc0007ff, 0x200005cd, &NMD::SHRAV_R_QB
, 0,
17158 DSP_
}, /* SHRAV_R.QB */
17162 NMD::Pool
NMD::SUBQ__S__PH
[2] = {
17163 { instruction
, 0 , 0 , 32,
17164 0xfc0007ff, 0x2000020d, &NMD::SUBQ_PH
, 0,
17165 DSP_
}, /* SUBQ.PH */
17166 { instruction
, 0 , 0 , 32,
17167 0xfc0007ff, 0x2000060d, &NMD::SUBQ_S_PH
, 0,
17168 DSP_
}, /* SUBQ_S.PH */
17172 NMD::Pool
NMD::SUBQH__R__PH
[2] = {
17173 { instruction
, 0 , 0 , 32,
17174 0xfc0007ff, 0x2000024d, &NMD::SUBQH_PH
, 0,
17175 DSP_
}, /* SUBQH.PH */
17176 { instruction
, 0 , 0 , 32,
17177 0xfc0007ff, 0x2000064d, &NMD::SUBQH_R_PH
, 0,
17178 DSP_
}, /* SUBQH_R.PH */
17182 NMD::Pool
NMD::SUBQH__R__W
[2] = {
17183 { instruction
, 0 , 0 , 32,
17184 0xfc0007ff, 0x2000028d, &NMD::SUBQH_W
, 0,
17185 DSP_
}, /* SUBQH.W */
17186 { instruction
, 0 , 0 , 32,
17187 0xfc0007ff, 0x2000068d, &NMD::SUBQH_R_W
, 0,
17188 DSP_
}, /* SUBQH_R.W */
17192 NMD::Pool
NMD::SUBU__S__QB
[2] = {
17193 { instruction
, 0 , 0 , 32,
17194 0xfc0007ff, 0x200002cd, &NMD::SUBU_QB
, 0,
17195 DSP_
}, /* SUBU.QB */
17196 { instruction
, 0 , 0 , 32,
17197 0xfc0007ff, 0x200006cd, &NMD::SUBU_S_QB
, 0,
17198 DSP_
}, /* SUBU_S.QB */
17202 NMD::Pool
NMD::SUBU__S__PH
[2] = {
17203 { instruction
, 0 , 0 , 32,
17204 0xfc0007ff, 0x2000030d, &NMD::SUBU_PH
, 0,
17205 DSP_
}, /* SUBU.PH */
17206 { instruction
, 0 , 0 , 32,
17207 0xfc0007ff, 0x2000070d, &NMD::SUBU_S_PH
, 0,
17208 DSP_
}, /* SUBU_S.PH */
17212 NMD::Pool
NMD::SHRA__R__PH
[2] = {
17213 { instruction
, 0 , 0 , 32,
17214 0xfc0007ff, 0x20000335, &NMD::SHRA_PH
, 0,
17215 DSP_
}, /* SHRA.PH */
17216 { instruction
, 0 , 0 , 32,
17217 0xfc0007ff, 0x20000735, &NMD::SHRA_R_PH
, 0,
17218 DSP_
}, /* SHRA_R.PH */
17222 NMD::Pool
NMD::SUBUH__R__QB
[2] = {
17223 { instruction
, 0 , 0 , 32,
17224 0xfc0007ff, 0x2000034d, &NMD::SUBUH_QB
, 0,
17225 DSP_
}, /* SUBUH.QB */
17226 { instruction
, 0 , 0 , 32,
17227 0xfc0007ff, 0x2000074d, &NMD::SUBUH_R_QB
, 0,
17228 DSP_
}, /* SUBUH_R.QB */
17232 NMD::Pool
NMD::SHLLV__S__PH
[2] = {
17233 { instruction
, 0 , 0 , 32,
17234 0xfc0007ff, 0x2000038d, &NMD::SHLLV_PH
, 0,
17235 DSP_
}, /* SHLLV.PH */
17236 { instruction
, 0 , 0 , 32,
17237 0xfc0007ff, 0x2000078d, &NMD::SHLLV_S_PH
, 0,
17238 DSP_
}, /* SHLLV_S.PH */
17242 NMD::Pool
NMD::SHLL__S__PH
[4] = {
17243 { instruction
, 0 , 0 , 32,
17244 0xfc000fff, 0x200003b5, &NMD::SHLL_PH
, 0,
17245 DSP_
}, /* SHLL.PH */
17246 { reserved_block
, 0 , 0 , 32,
17247 0xfc000fff, 0x200007b5, 0 , 0,
17248 0x0 }, /* SHLL[_S].PH~*(1) */
17249 { instruction
, 0 , 0 , 32,
17250 0xfc000fff, 0x20000bb5, &NMD::SHLL_S_PH
, 0,
17251 DSP_
}, /* SHLL_S.PH */
17252 { reserved_block
, 0 , 0 , 32,
17253 0xfc000fff, 0x20000fb5, 0 , 0,
17254 0x0 }, /* SHLL[_S].PH~*(3) */
17258 NMD::Pool
NMD::PRECR_SRA__R__PH_W
[2] = {
17259 { instruction
, 0 , 0 , 32,
17260 0xfc0007ff, 0x200003cd, &NMD::PRECR_SRA_PH_W
, 0,
17261 DSP_
}, /* PRECR_SRA.PH.W */
17262 { instruction
, 0 , 0 , 32,
17263 0xfc0007ff, 0x200007cd, &NMD::PRECR_SRA_R_PH_W
, 0,
17264 DSP_
}, /* PRECR_SRA_R.PH.W */
17268 NMD::Pool
NMD::_POOL32A5
[128] = {
17269 { instruction
, 0 , 0 , 32,
17270 0xfc0003ff, 0x20000005, &NMD::CMP_EQ_PH
, 0,
17271 DSP_
}, /* CMP.EQ.PH */
17272 { pool
, ADDQ__S__PH
, 2 , 32,
17273 0xfc0003ff, 0x2000000d, 0 , 0,
17274 0x0 }, /* ADDQ[_S].PH */
17275 { reserved_block
, 0 , 0 , 32,
17276 0xfc0003ff, 0x20000015, 0 , 0,
17277 0x0 }, /* _POOL32A5~*(2) */
17278 { instruction
, 0 , 0 , 32,
17279 0xfc0003ff, 0x2000001d, &NMD::SHILO
, 0,
17280 DSP_
}, /* SHILO */
17281 { instruction
, 0 , 0 , 32,
17282 0xfc0003ff, 0x20000025, &NMD::MULEQ_S_W_PHL
, 0,
17283 DSP_
}, /* MULEQ_S.W.PHL */
17284 { pool
, MUL__S__PH
, 2 , 32,
17285 0xfc0003ff, 0x2000002d, 0 , 0,
17286 0x0 }, /* MUL[_S].PH */
17287 { reserved_block
, 0 , 0 , 32,
17288 0xfc0003ff, 0x20000035, 0 , 0,
17289 0x0 }, /* _POOL32A5~*(6) */
17290 { instruction
, 0 , 0 , 32,
17291 0xfc0003ff, 0x2000003d, &NMD::REPL_PH
, 0,
17292 DSP_
}, /* REPL.PH */
17293 { instruction
, 0 , 0 , 32,
17294 0xfc0003ff, 0x20000045, &NMD::CMP_LT_PH
, 0,
17295 DSP_
}, /* CMP.LT.PH */
17296 { pool
, ADDQH__R__PH
, 2 , 32,
17297 0xfc0003ff, 0x2000004d, 0 , 0,
17298 0x0 }, /* ADDQH[_R].PH */
17299 { reserved_block
, 0 , 0 , 32,
17300 0xfc0003ff, 0x20000055, 0 , 0,
17301 0x0 }, /* _POOL32A5~*(10) */
17302 { reserved_block
, 0 , 0 , 32,
17303 0xfc0003ff, 0x2000005d, 0 , 0,
17304 0x0 }, /* _POOL32A5~*(11) */
17305 { instruction
, 0 , 0 , 32,
17306 0xfc0003ff, 0x20000065, &NMD::MULEQ_S_W_PHR
, 0,
17307 DSP_
}, /* MULEQ_S.W.PHR */
17308 { instruction
, 0 , 0 , 32,
17309 0xfc0003ff, 0x2000006d, &NMD::PRECR_QB_PH
, 0,
17310 DSP_
}, /* PRECR.QB.PH */
17311 { reserved_block
, 0 , 0 , 32,
17312 0xfc0003ff, 0x20000075, 0 , 0,
17313 0x0 }, /* _POOL32A5~*(14) */
17314 { reserved_block
, 0 , 0 , 32,
17315 0xfc0003ff, 0x2000007d, 0 , 0,
17316 0x0 }, /* _POOL32A5~*(15) */
17317 { instruction
, 0 , 0 , 32,
17318 0xfc0003ff, 0x20000085, &NMD::CMP_LE_PH
, 0,
17319 DSP_
}, /* CMP.LE.PH */
17320 { pool
, ADDQH__R__W
, 2 , 32,
17321 0xfc0003ff, 0x2000008d, 0 , 0,
17322 0x0 }, /* ADDQH[_R].W */
17323 { instruction
, 0 , 0 , 32,
17324 0xfc0003ff, 0x20000095, &NMD::MULEU_S_PH_QBL
, 0,
17325 DSP_
}, /* MULEU_S.PH.QBL */
17326 { reserved_block
, 0 , 0 , 32,
17327 0xfc0003ff, 0x2000009d, 0 , 0,
17328 0x0 }, /* _POOL32A5~*(19) */
17329 { reserved_block
, 0 , 0 , 32,
17330 0xfc0003ff, 0x200000a5, 0 , 0,
17331 0x0 }, /* _POOL32A5~*(20) */
17332 { instruction
, 0 , 0 , 32,
17333 0xfc0003ff, 0x200000ad, &NMD::PRECRQ_QB_PH
, 0,
17334 DSP_
}, /* PRECRQ.QB.PH */
17335 { reserved_block
, 0 , 0 , 32,
17336 0xfc0003ff, 0x200000b5, 0 , 0,
17337 0x0 }, /* _POOL32A5~*(22) */
17338 { reserved_block
, 0 , 0 , 32,
17339 0xfc0003ff, 0x200000bd, 0 , 0,
17340 0x0 }, /* _POOL32A5~*(23) */
17341 { instruction
, 0 , 0 , 32,
17342 0xfc0003ff, 0x200000c5, &NMD::CMPGU_EQ_QB
, 0,
17343 DSP_
}, /* CMPGU.EQ.QB */
17344 { pool
, ADDU__S__QB
, 2 , 32,
17345 0xfc0003ff, 0x200000cd, 0 , 0,
17346 0x0 }, /* ADDU[_S].QB */
17347 { instruction
, 0 , 0 , 32,
17348 0xfc0003ff, 0x200000d5, &NMD::MULEU_S_PH_QBR
, 0,
17349 DSP_
}, /* MULEU_S.PH.QBR */
17350 { reserved_block
, 0 , 0 , 32,
17351 0xfc0003ff, 0x200000dd, 0 , 0,
17352 0x0 }, /* _POOL32A5~*(27) */
17353 { reserved_block
, 0 , 0 , 32,
17354 0xfc0003ff, 0x200000e5, 0 , 0,
17355 0x0 }, /* _POOL32A5~*(28) */
17356 { instruction
, 0 , 0 , 32,
17357 0xfc0003ff, 0x200000ed, &NMD::PRECRQ_PH_W
, 0,
17358 DSP_
}, /* PRECRQ.PH.W */
17359 { reserved_block
, 0 , 0 , 32,
17360 0xfc0003ff, 0x200000f5, 0 , 0,
17361 0x0 }, /* _POOL32A5~*(30) */
17362 { reserved_block
, 0 , 0 , 32,
17363 0xfc0003ff, 0x200000fd, 0 , 0,
17364 0x0 }, /* _POOL32A5~*(31) */
17365 { instruction
, 0 , 0 , 32,
17366 0xfc0003ff, 0x20000105, &NMD::CMPGU_LT_QB
, 0,
17367 DSP_
}, /* CMPGU.LT.QB */
17368 { pool
, ADDU__S__PH
, 2 , 32,
17369 0xfc0003ff, 0x2000010d, 0 , 0,
17370 0x0 }, /* ADDU[_S].PH */
17371 { instruction
, 0 , 0 , 32,
17372 0xfc0003ff, 0x20000115, &NMD::MULQ_RS_PH
, 0,
17373 DSP_
}, /* MULQ_RS.PH */
17374 { reserved_block
, 0 , 0 , 32,
17375 0xfc0003ff, 0x2000011d, 0 , 0,
17376 0x0 }, /* _POOL32A5~*(35) */
17377 { reserved_block
, 0 , 0 , 32,
17378 0xfc0003ff, 0x20000125, 0 , 0,
17379 0x0 }, /* _POOL32A5~*(36) */
17380 { instruction
, 0 , 0 , 32,
17381 0xfc0003ff, 0x2000012d, &NMD::PRECRQ_RS_PH_W
, 0,
17382 DSP_
}, /* PRECRQ_RS.PH.W */
17383 { reserved_block
, 0 , 0 , 32,
17384 0xfc0003ff, 0x20000135, 0 , 0,
17385 0x0 }, /* _POOL32A5~*(38) */
17386 { reserved_block
, 0 , 0 , 32,
17387 0xfc0003ff, 0x2000013d, 0 , 0,
17388 0x0 }, /* _POOL32A5~*(39) */
17389 { instruction
, 0 , 0 , 32,
17390 0xfc0003ff, 0x20000145, &NMD::CMPGU_LE_QB
, 0,
17391 DSP_
}, /* CMPGU.LE.QB */
17392 { pool
, ADDUH__R__QB
, 2 , 32,
17393 0xfc0003ff, 0x2000014d, 0 , 0,
17394 0x0 }, /* ADDUH[_R].QB */
17395 { instruction
, 0 , 0 , 32,
17396 0xfc0003ff, 0x20000155, &NMD::MULQ_S_PH
, 0,
17397 DSP_
}, /* MULQ_S.PH */
17398 { reserved_block
, 0 , 0 , 32,
17399 0xfc0003ff, 0x2000015d, 0 , 0,
17400 0x0 }, /* _POOL32A5~*(43) */
17401 { reserved_block
, 0 , 0 , 32,
17402 0xfc0003ff, 0x20000165, 0 , 0,
17403 0x0 }, /* _POOL32A5~*(44) */
17404 { instruction
, 0 , 0 , 32,
17405 0xfc0003ff, 0x2000016d, &NMD::PRECRQU_S_QB_PH
, 0,
17406 DSP_
}, /* PRECRQU_S.QB.PH */
17407 { reserved_block
, 0 , 0 , 32,
17408 0xfc0003ff, 0x20000175, 0 , 0,
17409 0x0 }, /* _POOL32A5~*(46) */
17410 { reserved_block
, 0 , 0 , 32,
17411 0xfc0003ff, 0x2000017d, 0 , 0,
17412 0x0 }, /* _POOL32A5~*(47) */
17413 { instruction
, 0 , 0 , 32,
17414 0xfc0003ff, 0x20000185, &NMD::CMPGDU_EQ_QB
, 0,
17415 DSP_
}, /* CMPGDU.EQ.QB */
17416 { pool
, SHRAV__R__PH
, 2 , 32,
17417 0xfc0003ff, 0x2000018d, 0 , 0,
17418 0x0 }, /* SHRAV[_R].PH */
17419 { instruction
, 0 , 0 , 32,
17420 0xfc0003ff, 0x20000195, &NMD::MULQ_RS_W
, 0,
17421 DSP_
}, /* MULQ_RS.W */
17422 { reserved_block
, 0 , 0 , 32,
17423 0xfc0003ff, 0x2000019d, 0 , 0,
17424 0x0 }, /* _POOL32A5~*(51) */
17425 { reserved_block
, 0 , 0 , 32,
17426 0xfc0003ff, 0x200001a5, 0 , 0,
17427 0x0 }, /* _POOL32A5~*(52) */
17428 { instruction
, 0 , 0 , 32,
17429 0xfc0003ff, 0x200001ad, &NMD::PACKRL_PH
, 0,
17430 DSP_
}, /* PACKRL.PH */
17431 { reserved_block
, 0 , 0 , 32,
17432 0xfc0003ff, 0x200001b5, 0 , 0,
17433 0x0 }, /* _POOL32A5~*(54) */
17434 { reserved_block
, 0 , 0 , 32,
17435 0xfc0003ff, 0x200001bd, 0 , 0,
17436 0x0 }, /* _POOL32A5~*(55) */
17437 { instruction
, 0 , 0 , 32,
17438 0xfc0003ff, 0x200001c5, &NMD::CMPGDU_LT_QB
, 0,
17439 DSP_
}, /* CMPGDU.LT.QB */
17440 { pool
, SHRAV__R__QB
, 2 , 32,
17441 0xfc0003ff, 0x200001cd, 0 , 0,
17442 0x0 }, /* SHRAV[_R].QB */
17443 { instruction
, 0 , 0 , 32,
17444 0xfc0003ff, 0x200001d5, &NMD::MULQ_S_W
, 0,
17445 DSP_
}, /* MULQ_S.W */
17446 { reserved_block
, 0 , 0 , 32,
17447 0xfc0003ff, 0x200001dd, 0 , 0,
17448 0x0 }, /* _POOL32A5~*(59) */
17449 { reserved_block
, 0 , 0 , 32,
17450 0xfc0003ff, 0x200001e5, 0 , 0,
17451 0x0 }, /* _POOL32A5~*(60) */
17452 { instruction
, 0 , 0 , 32,
17453 0xfc0003ff, 0x200001ed, &NMD::PICK_QB
, 0,
17454 DSP_
}, /* PICK.QB */
17455 { reserved_block
, 0 , 0 , 32,
17456 0xfc0003ff, 0x200001f5, 0 , 0,
17457 0x0 }, /* _POOL32A5~*(62) */
17458 { reserved_block
, 0 , 0 , 32,
17459 0xfc0003ff, 0x200001fd, 0 , 0,
17460 0x0 }, /* _POOL32A5~*(63) */
17461 { instruction
, 0 , 0 , 32,
17462 0xfc0003ff, 0x20000205, &NMD::CMPGDU_LE_QB
, 0,
17463 DSP_
}, /* CMPGDU.LE.QB */
17464 { pool
, SUBQ__S__PH
, 2 , 32,
17465 0xfc0003ff, 0x2000020d, 0 , 0,
17466 0x0 }, /* SUBQ[_S].PH */
17467 { instruction
, 0 , 0 , 32,
17468 0xfc0003ff, 0x20000215, &NMD::APPEND
, 0,
17469 DSP_
}, /* APPEND */
17470 { reserved_block
, 0 , 0 , 32,
17471 0xfc0003ff, 0x2000021d, 0 , 0,
17472 0x0 }, /* _POOL32A5~*(67) */
17473 { reserved_block
, 0 , 0 , 32,
17474 0xfc0003ff, 0x20000225, 0 , 0,
17475 0x0 }, /* _POOL32A5~*(68) */
17476 { instruction
, 0 , 0 , 32,
17477 0xfc0003ff, 0x2000022d, &NMD::PICK_PH
, 0,
17478 DSP_
}, /* PICK.PH */
17479 { reserved_block
, 0 , 0 , 32,
17480 0xfc0003ff, 0x20000235, 0 , 0,
17481 0x0 }, /* _POOL32A5~*(70) */
17482 { reserved_block
, 0 , 0 , 32,
17483 0xfc0003ff, 0x2000023d, 0 , 0,
17484 0x0 }, /* _POOL32A5~*(71) */
17485 { instruction
, 0 , 0 , 32,
17486 0xfc0003ff, 0x20000245, &NMD::CMPU_EQ_QB
, 0,
17487 DSP_
}, /* CMPU.EQ.QB */
17488 { pool
, SUBQH__R__PH
, 2 , 32,
17489 0xfc0003ff, 0x2000024d, 0 , 0,
17490 0x0 }, /* SUBQH[_R].PH */
17491 { instruction
, 0 , 0 , 32,
17492 0xfc0003ff, 0x20000255, &NMD::PREPEND
, 0,
17493 DSP_
}, /* PREPEND */
17494 { reserved_block
, 0 , 0 , 32,
17495 0xfc0003ff, 0x2000025d, 0 , 0,
17496 0x0 }, /* _POOL32A5~*(75) */
17497 { reserved_block
, 0 , 0 , 32,
17498 0xfc0003ff, 0x20000265, 0 , 0,
17499 0x0 }, /* _POOL32A5~*(76) */
17500 { reserved_block
, 0 , 0 , 32,
17501 0xfc0003ff, 0x2000026d, 0 , 0,
17502 0x0 }, /* _POOL32A5~*(77) */
17503 { reserved_block
, 0 , 0 , 32,
17504 0xfc0003ff, 0x20000275, 0 , 0,
17505 0x0 }, /* _POOL32A5~*(78) */
17506 { reserved_block
, 0 , 0 , 32,
17507 0xfc0003ff, 0x2000027d, 0 , 0,
17508 0x0 }, /* _POOL32A5~*(79) */
17509 { instruction
, 0 , 0 , 32,
17510 0xfc0003ff, 0x20000285, &NMD::CMPU_LT_QB
, 0,
17511 DSP_
}, /* CMPU.LT.QB */
17512 { pool
, SUBQH__R__W
, 2 , 32,
17513 0xfc0003ff, 0x2000028d, 0 , 0,
17514 0x0 }, /* SUBQH[_R].W */
17515 { instruction
, 0 , 0 , 32,
17516 0xfc0003ff, 0x20000295, &NMD::MODSUB
, 0,
17517 DSP_
}, /* MODSUB */
17518 { reserved_block
, 0 , 0 , 32,
17519 0xfc0003ff, 0x2000029d, 0 , 0,
17520 0x0 }, /* _POOL32A5~*(83) */
17521 { reserved_block
, 0 , 0 , 32,
17522 0xfc0003ff, 0x200002a5, 0 , 0,
17523 0x0 }, /* _POOL32A5~*(84) */
17524 { reserved_block
, 0 , 0 , 32,
17525 0xfc0003ff, 0x200002ad, 0 , 0,
17526 0x0 }, /* _POOL32A5~*(85) */
17527 { reserved_block
, 0 , 0 , 32,
17528 0xfc0003ff, 0x200002b5, 0 , 0,
17529 0x0 }, /* _POOL32A5~*(86) */
17530 { reserved_block
, 0 , 0 , 32,
17531 0xfc0003ff, 0x200002bd, 0 , 0,
17532 0x0 }, /* _POOL32A5~*(87) */
17533 { instruction
, 0 , 0 , 32,
17534 0xfc0003ff, 0x200002c5, &NMD::CMPU_LE_QB
, 0,
17535 DSP_
}, /* CMPU.LE.QB */
17536 { pool
, SUBU__S__QB
, 2 , 32,
17537 0xfc0003ff, 0x200002cd, 0 , 0,
17538 0x0 }, /* SUBU[_S].QB */
17539 { instruction
, 0 , 0 , 32,
17540 0xfc0003ff, 0x200002d5, &NMD::SHRAV_R_W
, 0,
17541 DSP_
}, /* SHRAV_R.W */
17542 { reserved_block
, 0 , 0 , 32,
17543 0xfc0003ff, 0x200002dd, 0 , 0,
17544 0x0 }, /* _POOL32A5~*(91) */
17545 { reserved_block
, 0 , 0 , 32,
17546 0xfc0003ff, 0x200002e5, 0 , 0,
17547 0x0 }, /* _POOL32A5~*(92) */
17548 { reserved_block
, 0 , 0 , 32,
17549 0xfc0003ff, 0x200002ed, 0 , 0,
17550 0x0 }, /* _POOL32A5~*(93) */
17551 { instruction
, 0 , 0 , 32,
17552 0xfc0003ff, 0x200002f5, &NMD::SHRA_R_W
, 0,
17553 DSP_
}, /* SHRA_R.W */
17554 { reserved_block
, 0 , 0 , 32,
17555 0xfc0003ff, 0x200002fd, 0 , 0,
17556 0x0 }, /* _POOL32A5~*(95) */
17557 { instruction
, 0 , 0 , 32,
17558 0xfc0003ff, 0x20000305, &NMD::ADDQ_S_W
, 0,
17559 DSP_
}, /* ADDQ_S.W */
17560 { pool
, SUBU__S__PH
, 2 , 32,
17561 0xfc0003ff, 0x2000030d, 0 , 0,
17562 0x0 }, /* SUBU[_S].PH */
17563 { instruction
, 0 , 0 , 32,
17564 0xfc0003ff, 0x20000315, &NMD::SHRLV_PH
, 0,
17565 DSP_
}, /* SHRLV.PH */
17566 { reserved_block
, 0 , 0 , 32,
17567 0xfc0003ff, 0x2000031d, 0 , 0,
17568 0x0 }, /* _POOL32A5~*(99) */
17569 { reserved_block
, 0 , 0 , 32,
17570 0xfc0003ff, 0x20000325, 0 , 0,
17571 0x0 }, /* _POOL32A5~*(100) */
17572 { reserved_block
, 0 , 0 , 32,
17573 0xfc0003ff, 0x2000032d, 0 , 0,
17574 0x0 }, /* _POOL32A5~*(101) */
17575 { pool
, SHRA__R__PH
, 2 , 32,
17576 0xfc0003ff, 0x20000335, 0 , 0,
17577 0x0 }, /* SHRA[_R].PH */
17578 { reserved_block
, 0 , 0 , 32,
17579 0xfc0003ff, 0x2000033d, 0 , 0,
17580 0x0 }, /* _POOL32A5~*(103) */
17581 { instruction
, 0 , 0 , 32,
17582 0xfc0003ff, 0x20000345, &NMD::SUBQ_S_W
, 0,
17583 DSP_
}, /* SUBQ_S.W */
17584 { pool
, SUBUH__R__QB
, 2 , 32,
17585 0xfc0003ff, 0x2000034d, 0 , 0,
17586 0x0 }, /* SUBUH[_R].QB */
17587 { instruction
, 0 , 0 , 32,
17588 0xfc0003ff, 0x20000355, &NMD::SHRLV_QB
, 0,
17589 DSP_
}, /* SHRLV.QB */
17590 { reserved_block
, 0 , 0 , 32,
17591 0xfc0003ff, 0x2000035d, 0 , 0,
17592 0x0 }, /* _POOL32A5~*(107) */
17593 { reserved_block
, 0 , 0 , 32,
17594 0xfc0003ff, 0x20000365, 0 , 0,
17595 0x0 }, /* _POOL32A5~*(108) */
17596 { reserved_block
, 0 , 0 , 32,
17597 0xfc0003ff, 0x2000036d, 0 , 0,
17598 0x0 }, /* _POOL32A5~*(109) */
17599 { reserved_block
, 0 , 0 , 32,
17600 0xfc0003ff, 0x20000375, 0 , 0,
17601 0x0 }, /* _POOL32A5~*(110) */
17602 { reserved_block
, 0 , 0 , 32,
17603 0xfc0003ff, 0x2000037d, 0 , 0,
17604 0x0 }, /* _POOL32A5~*(111) */
17605 { instruction
, 0 , 0 , 32,
17606 0xfc0003ff, 0x20000385, &NMD::ADDSC
, 0,
17607 DSP_
}, /* ADDSC */
17608 { pool
, SHLLV__S__PH
, 2 , 32,
17609 0xfc0003ff, 0x2000038d, 0 , 0,
17610 0x0 }, /* SHLLV[_S].PH */
17611 { instruction
, 0 , 0 , 32,
17612 0xfc0003ff, 0x20000395, &NMD::SHLLV_QB
, 0,
17613 DSP_
}, /* SHLLV.QB */
17614 { reserved_block
, 0 , 0 , 32,
17615 0xfc0003ff, 0x2000039d, 0 , 0,
17616 0x0 }, /* _POOL32A5~*(115) */
17617 { reserved_block
, 0 , 0 , 32,
17618 0xfc0003ff, 0x200003a5, 0 , 0,
17619 0x0 }, /* _POOL32A5~*(116) */
17620 { reserved_block
, 0 , 0 , 32,
17621 0xfc0003ff, 0x200003ad, 0 , 0,
17622 0x0 }, /* _POOL32A5~*(117) */
17623 { pool
, SHLL__S__PH
, 4 , 32,
17624 0xfc0003ff, 0x200003b5, 0 , 0,
17625 0x0 }, /* SHLL[_S].PH */
17626 { reserved_block
, 0 , 0 , 32,
17627 0xfc0003ff, 0x200003bd, 0 , 0,
17628 0x0 }, /* _POOL32A5~*(119) */
17629 { instruction
, 0 , 0 , 32,
17630 0xfc0003ff, 0x200003c5, &NMD::ADDWC
, 0,
17631 DSP_
}, /* ADDWC */
17632 { pool
, PRECR_SRA__R__PH_W
, 2 , 32,
17633 0xfc0003ff, 0x200003cd, 0 , 0,
17634 0x0 }, /* PRECR_SRA[_R].PH.W */
17635 { instruction
, 0 , 0 , 32,
17636 0xfc0003ff, 0x200003d5, &NMD::SHLLV_S_W
, 0,
17637 DSP_
}, /* SHLLV_S.W */
17638 { reserved_block
, 0 , 0 , 32,
17639 0xfc0003ff, 0x200003dd, 0 , 0,
17640 0x0 }, /* _POOL32A5~*(123) */
17641 { reserved_block
, 0 , 0 , 32,
17642 0xfc0003ff, 0x200003e5, 0 , 0,
17643 0x0 }, /* _POOL32A5~*(124) */
17644 { reserved_block
, 0 , 0 , 32,
17645 0xfc0003ff, 0x200003ed, 0 , 0,
17646 0x0 }, /* _POOL32A5~*(125) */
17647 { instruction
, 0 , 0 , 32,
17648 0xfc0003ff, 0x200003f5, &NMD::SHLL_S_W
, 0,
17649 DSP_
}, /* SHLL_S.W */
17650 { reserved_block
, 0 , 0 , 32,
17651 0xfc0003ff, 0x200003fd, 0 , 0,
17652 0x0 }, /* _POOL32A5~*(127) */
17656 NMD::Pool
NMD::PP_LSX
[16] = {
17657 { instruction
, 0 , 0 , 32,
17658 0xfc0007ff, 0x20000007, &NMD::LBX
, 0,
17660 { instruction
, 0 , 0 , 32,
17661 0xfc0007ff, 0x20000087, &NMD::SBX
, 0,
17663 { instruction
, 0 , 0 , 32,
17664 0xfc0007ff, 0x20000107, &NMD::LBUX
, 0,
17666 { reserved_block
, 0 , 0 , 32,
17667 0xfc0007ff, 0x20000187, 0 , 0,
17668 0x0 }, /* PP.LSX~*(3) */
17669 { instruction
, 0 , 0 , 32,
17670 0xfc0007ff, 0x20000207, &NMD::LHX
, 0,
17672 { instruction
, 0 , 0 , 32,
17673 0xfc0007ff, 0x20000287, &NMD::SHX
, 0,
17675 { instruction
, 0 , 0 , 32,
17676 0xfc0007ff, 0x20000307, &NMD::LHUX
, 0,
17678 { instruction
, 0 , 0 , 32,
17679 0xfc0007ff, 0x20000387, &NMD::LWUX
, 0,
17680 MIPS64_
}, /* LWUX */
17681 { instruction
, 0 , 0 , 32,
17682 0xfc0007ff, 0x20000407, &NMD::LWX
, 0,
17684 { instruction
, 0 , 0 , 32,
17685 0xfc0007ff, 0x20000487, &NMD::SWX
, 0,
17687 { instruction
, 0 , 0 , 32,
17688 0xfc0007ff, 0x20000507, &NMD::LWC1X
, 0,
17689 CP1_
}, /* LWC1X */
17690 { instruction
, 0 , 0 , 32,
17691 0xfc0007ff, 0x20000587, &NMD::SWC1X
, 0,
17692 CP1_
}, /* SWC1X */
17693 { instruction
, 0 , 0 , 32,
17694 0xfc0007ff, 0x20000607, &NMD::LDX
, 0,
17695 MIPS64_
}, /* LDX */
17696 { instruction
, 0 , 0 , 32,
17697 0xfc0007ff, 0x20000687, &NMD::SDX
, 0,
17698 MIPS64_
}, /* SDX */
17699 { instruction
, 0 , 0 , 32,
17700 0xfc0007ff, 0x20000707, &NMD::LDC1X
, 0,
17701 CP1_
}, /* LDC1X */
17702 { instruction
, 0 , 0 , 32,
17703 0xfc0007ff, 0x20000787, &NMD::SDC1X
, 0,
17704 CP1_
}, /* SDC1X */
17708 NMD::Pool
NMD::PP_LSXS
[16] = {
17709 { reserved_block
, 0 , 0 , 32,
17710 0xfc0007ff, 0x20000047, 0 , 0,
17711 0x0 }, /* PP.LSXS~*(0) */
17712 { reserved_block
, 0 , 0 , 32,
17713 0xfc0007ff, 0x200000c7, 0 , 0,
17714 0x0 }, /* PP.LSXS~*(1) */
17715 { reserved_block
, 0 , 0 , 32,
17716 0xfc0007ff, 0x20000147, 0 , 0,
17717 0x0 }, /* PP.LSXS~*(2) */
17718 { reserved_block
, 0 , 0 , 32,
17719 0xfc0007ff, 0x200001c7, 0 , 0,
17720 0x0 }, /* PP.LSXS~*(3) */
17721 { instruction
, 0 , 0 , 32,
17722 0xfc0007ff, 0x20000247, &NMD::LHXS
, 0,
17724 { instruction
, 0 , 0 , 32,
17725 0xfc0007ff, 0x200002c7, &NMD::SHXS
, 0,
17726 XMMS_
}, /* SHXS */
17727 { instruction
, 0 , 0 , 32,
17728 0xfc0007ff, 0x20000347, &NMD::LHUXS
, 0,
17730 { instruction
, 0 , 0 , 32,
17731 0xfc0007ff, 0x200003c7, &NMD::LWUXS
, 0,
17732 MIPS64_
}, /* LWUXS */
17733 { instruction
, 0 , 0 , 32,
17734 0xfc0007ff, 0x20000447, &NMD::LWXS_32_
, 0,
17735 0x0 }, /* LWXS[32] */
17736 { instruction
, 0 , 0 , 32,
17737 0xfc0007ff, 0x200004c7, &NMD::SWXS
, 0,
17738 XMMS_
}, /* SWXS */
17739 { instruction
, 0 , 0 , 32,
17740 0xfc0007ff, 0x20000547, &NMD::LWC1XS
, 0,
17741 CP1_
}, /* LWC1XS */
17742 { instruction
, 0 , 0 , 32,
17743 0xfc0007ff, 0x200005c7, &NMD::SWC1XS
, 0,
17744 CP1_
}, /* SWC1XS */
17745 { instruction
, 0 , 0 , 32,
17746 0xfc0007ff, 0x20000647, &NMD::LDXS
, 0,
17747 MIPS64_
}, /* LDXS */
17748 { instruction
, 0 , 0 , 32,
17749 0xfc0007ff, 0x200006c7, &NMD::SDXS
, 0,
17750 MIPS64_
}, /* SDXS */
17751 { instruction
, 0 , 0 , 32,
17752 0xfc0007ff, 0x20000747, &NMD::LDC1XS
, 0,
17753 CP1_
}, /* LDC1XS */
17754 { instruction
, 0 , 0 , 32,
17755 0xfc0007ff, 0x200007c7, &NMD::SDC1XS
, 0,
17756 CP1_
}, /* SDC1XS */
17760 NMD::Pool
NMD::P_LSX
[2] = {
17761 { pool
, PP_LSX
, 16 , 32,
17762 0xfc00007f, 0x20000007, 0 , 0,
17763 0x0 }, /* PP.LSX */
17764 { pool
, PP_LSXS
, 16 , 32,
17765 0xfc00007f, 0x20000047, 0 , 0,
17766 0x0 }, /* PP.LSXS */
17770 NMD::Pool
NMD::POOL32Axf_1_0
[4] = {
17771 { instruction
, 0 , 0 , 32,
17772 0xfc003fff, 0x2000007f, &NMD::MFHI_DSP_
, 0,
17773 DSP_
}, /* MFHI[DSP] */
17774 { instruction
, 0 , 0 , 32,
17775 0xfc003fff, 0x2000107f, &NMD::MFLO_DSP_
, 0,
17776 DSP_
}, /* MFLO[DSP] */
17777 { instruction
, 0 , 0 , 32,
17778 0xfc003fff, 0x2000207f, &NMD::MTHI_DSP_
, 0,
17779 DSP_
}, /* MTHI[DSP] */
17780 { instruction
, 0 , 0 , 32,
17781 0xfc003fff, 0x2000307f, &NMD::MTLO_DSP_
, 0,
17782 DSP_
}, /* MTLO[DSP] */
17786 NMD::Pool
NMD::POOL32Axf_1_1
[4] = {
17787 { instruction
, 0 , 0 , 32,
17788 0xfc003fff, 0x2000027f, &NMD::MTHLIP
, 0,
17789 DSP_
}, /* MTHLIP */
17790 { instruction
, 0 , 0 , 32,
17791 0xfc003fff, 0x2000127f, &NMD::SHILOV
, 0,
17792 DSP_
}, /* SHILOV */
17793 { reserved_block
, 0 , 0 , 32,
17794 0xfc003fff, 0x2000227f, 0 , 0,
17795 0x0 }, /* POOL32Axf_1_1~*(2) */
17796 { reserved_block
, 0 , 0 , 32,
17797 0xfc003fff, 0x2000327f, 0 , 0,
17798 0x0 }, /* POOL32Axf_1_1~*(3) */
17802 NMD::Pool
NMD::POOL32Axf_1_3
[4] = {
17803 { instruction
, 0 , 0 , 32,
17804 0xfc003fff, 0x2000067f, &NMD::RDDSP
, 0,
17805 DSP_
}, /* RDDSP */
17806 { instruction
, 0 , 0 , 32,
17807 0xfc003fff, 0x2000167f, &NMD::WRDSP
, 0,
17808 DSP_
}, /* WRDSP */
17809 { instruction
, 0 , 0 , 32,
17810 0xfc003fff, 0x2000267f, &NMD::EXTP
, 0,
17812 { instruction
, 0 , 0 , 32,
17813 0xfc003fff, 0x2000367f, &NMD::EXTPDP
, 0,
17814 DSP_
}, /* EXTPDP */
17818 NMD::Pool
NMD::POOL32Axf_1_4
[2] = {
17819 { instruction
, 0 , 0 , 32,
17820 0xfc001fff, 0x2000087f, &NMD::SHLL_QB
, 0,
17821 DSP_
}, /* SHLL.QB */
17822 { instruction
, 0 , 0 , 32,
17823 0xfc001fff, 0x2000187f, &NMD::SHRL_QB
, 0,
17824 DSP_
}, /* SHRL.QB */
17828 NMD::Pool
NMD::MAQ_S_A__W_PHR
[2] = {
17829 { instruction
, 0 , 0 , 32,
17830 0xfc003fff, 0x20000a7f, &NMD::MAQ_S_W_PHR
, 0,
17831 DSP_
}, /* MAQ_S.W.PHR */
17832 { instruction
, 0 , 0 , 32,
17833 0xfc003fff, 0x20002a7f, &NMD::MAQ_SA_W_PHR
, 0,
17834 DSP_
}, /* MAQ_SA.W.PHR */
17838 NMD::Pool
NMD::MAQ_S_A__W_PHL
[2] = {
17839 { instruction
, 0 , 0 , 32,
17840 0xfc003fff, 0x20001a7f, &NMD::MAQ_S_W_PHL
, 0,
17841 DSP_
}, /* MAQ_S.W.PHL */
17842 { instruction
, 0 , 0 , 32,
17843 0xfc003fff, 0x20003a7f, &NMD::MAQ_SA_W_PHL
, 0,
17844 DSP_
}, /* MAQ_SA.W.PHL */
17848 NMD::Pool
NMD::POOL32Axf_1_5
[2] = {
17849 { pool
, MAQ_S_A__W_PHR
, 2 , 32,
17850 0xfc001fff, 0x20000a7f, 0 , 0,
17851 0x0 }, /* MAQ_S[A].W.PHR */
17852 { pool
, MAQ_S_A__W_PHL
, 2 , 32,
17853 0xfc001fff, 0x20001a7f, 0 , 0,
17854 0x0 }, /* MAQ_S[A].W.PHL */
17858 NMD::Pool
NMD::POOL32Axf_1_7
[4] = {
17859 { instruction
, 0 , 0 , 32,
17860 0xfc003fff, 0x20000e7f, &NMD::EXTR_W
, 0,
17861 DSP_
}, /* EXTR.W */
17862 { instruction
, 0 , 0 , 32,
17863 0xfc003fff, 0x20001e7f, &NMD::EXTR_R_W
, 0,
17864 DSP_
}, /* EXTR_R.W */
17865 { instruction
, 0 , 0 , 32,
17866 0xfc003fff, 0x20002e7f, &NMD::EXTR_RS_W
, 0,
17867 DSP_
}, /* EXTR_RS.W */
17868 { instruction
, 0 , 0 , 32,
17869 0xfc003fff, 0x20003e7f, &NMD::EXTR_S_H
, 0,
17870 DSP_
}, /* EXTR_S.H */
17874 NMD::Pool
NMD::POOL32Axf_1
[8] = {
17875 { pool
, POOL32Axf_1_0
, 4 , 32,
17876 0xfc000fff, 0x2000007f, 0 , 0,
17877 0x0 }, /* POOL32Axf_1_0 */
17878 { pool
, POOL32Axf_1_1
, 4 , 32,
17879 0xfc000fff, 0x2000027f, 0 , 0,
17880 0x0 }, /* POOL32Axf_1_1 */
17881 { reserved_block
, 0 , 0 , 32,
17882 0xfc000fff, 0x2000047f, 0 , 0,
17883 0x0 }, /* POOL32Axf_1~*(2) */
17884 { pool
, POOL32Axf_1_3
, 4 , 32,
17885 0xfc000fff, 0x2000067f, 0 , 0,
17886 0x0 }, /* POOL32Axf_1_3 */
17887 { pool
, POOL32Axf_1_4
, 2 , 32,
17888 0xfc000fff, 0x2000087f, 0 , 0,
17889 0x0 }, /* POOL32Axf_1_4 */
17890 { pool
, POOL32Axf_1_5
, 2 , 32,
17891 0xfc000fff, 0x20000a7f, 0 , 0,
17892 0x0 }, /* POOL32Axf_1_5 */
17893 { reserved_block
, 0 , 0 , 32,
17894 0xfc000fff, 0x20000c7f, 0 , 0,
17895 0x0 }, /* POOL32Axf_1~*(6) */
17896 { pool
, POOL32Axf_1_7
, 4 , 32,
17897 0xfc000fff, 0x20000e7f, 0 , 0,
17898 0x0 }, /* POOL32Axf_1_7 */
17902 NMD::Pool
NMD::POOL32Axf_2_DSP__0_7
[8] = {
17903 { instruction
, 0 , 0 , 32,
17904 0xfc003fff, 0x200000bf, &NMD::DPA_W_PH
, 0,
17905 DSP_
}, /* DPA.W.PH */
17906 { instruction
, 0 , 0 , 32,
17907 0xfc003fff, 0x200002bf, &NMD::DPAQ_S_W_PH
, 0,
17908 DSP_
}, /* DPAQ_S.W.PH */
17909 { instruction
, 0 , 0 , 32,
17910 0xfc003fff, 0x200004bf, &NMD::DPS_W_PH
, 0,
17911 DSP_
}, /* DPS.W.PH */
17912 { instruction
, 0 , 0 , 32,
17913 0xfc003fff, 0x200006bf, &NMD::DPSQ_S_W_PH
, 0,
17914 DSP_
}, /* DPSQ_S.W.PH */
17915 { reserved_block
, 0 , 0 , 32,
17916 0xfc003fff, 0x200008bf, 0 , 0,
17917 0x0 }, /* POOL32Axf_2(DSP)_0_7~*(4) */
17918 { instruction
, 0 , 0 , 32,
17919 0xfc003fff, 0x20000abf, &NMD::MADD_DSP_
, 0,
17920 DSP_
}, /* MADD[DSP] */
17921 { instruction
, 0 , 0 , 32,
17922 0xfc003fff, 0x20000cbf, &NMD::MULT_DSP_
, 0,
17923 DSP_
}, /* MULT[DSP] */
17924 { instruction
, 0 , 0 , 32,
17925 0xfc003fff, 0x20000ebf, &NMD::EXTRV_W
, 0,
17926 DSP_
}, /* EXTRV.W */
17930 NMD::Pool
NMD::POOL32Axf_2_DSP__8_15
[8] = {
17931 { instruction
, 0 , 0 , 32,
17932 0xfc003fff, 0x200010bf, &NMD::DPAX_W_PH
, 0,
17933 DSP_
}, /* DPAX.W.PH */
17934 { instruction
, 0 , 0 , 32,
17935 0xfc003fff, 0x200012bf, &NMD::DPAQ_SA_L_W
, 0,
17936 DSP_
}, /* DPAQ_SA.L.W */
17937 { instruction
, 0 , 0 , 32,
17938 0xfc003fff, 0x200014bf, &NMD::DPSX_W_PH
, 0,
17939 DSP_
}, /* DPSX.W.PH */
17940 { instruction
, 0 , 0 , 32,
17941 0xfc003fff, 0x200016bf, &NMD::DPSQ_SA_L_W
, 0,
17942 DSP_
}, /* DPSQ_SA.L.W */
17943 { reserved_block
, 0 , 0 , 32,
17944 0xfc003fff, 0x200018bf, 0 , 0,
17945 0x0 }, /* POOL32Axf_2(DSP)_8_15~*(4) */
17946 { instruction
, 0 , 0 , 32,
17947 0xfc003fff, 0x20001abf, &NMD::MADDU_DSP_
, 0,
17948 DSP_
}, /* MADDU[DSP] */
17949 { instruction
, 0 , 0 , 32,
17950 0xfc003fff, 0x20001cbf, &NMD::MULTU_DSP_
, 0,
17951 DSP_
}, /* MULTU[DSP] */
17952 { instruction
, 0 , 0 , 32,
17953 0xfc003fff, 0x20001ebf, &NMD::EXTRV_R_W
, 0,
17954 DSP_
}, /* EXTRV_R.W */
17958 NMD::Pool
NMD::POOL32Axf_2_DSP__16_23
[8] = {
17959 { instruction
, 0 , 0 , 32,
17960 0xfc003fff, 0x200020bf, &NMD::DPAU_H_QBL
, 0,
17961 DSP_
}, /* DPAU.H.QBL */
17962 { instruction
, 0 , 0 , 32,
17963 0xfc003fff, 0x200022bf, &NMD::DPAQX_S_W_PH
, 0,
17964 DSP_
}, /* DPAQX_S.W.PH */
17965 { instruction
, 0 , 0 , 32,
17966 0xfc003fff, 0x200024bf, &NMD::DPSU_H_QBL
, 0,
17967 DSP_
}, /* DPSU.H.QBL */
17968 { instruction
, 0 , 0 , 32,
17969 0xfc003fff, 0x200026bf, &NMD::DPSQX_S_W_PH
, 0,
17970 DSP_
}, /* DPSQX_S.W.PH */
17971 { instruction
, 0 , 0 , 32,
17972 0xfc003fff, 0x200028bf, &NMD::EXTPV
, 0,
17973 DSP_
}, /* EXTPV */
17974 { instruction
, 0 , 0 , 32,
17975 0xfc003fff, 0x20002abf, &NMD::MSUB_DSP_
, 0,
17976 DSP_
}, /* MSUB[DSP] */
17977 { instruction
, 0 , 0 , 32,
17978 0xfc003fff, 0x20002cbf, &NMD::MULSA_W_PH
, 0,
17979 DSP_
}, /* MULSA.W.PH */
17980 { instruction
, 0 , 0 , 32,
17981 0xfc003fff, 0x20002ebf, &NMD::EXTRV_RS_W
, 0,
17982 DSP_
}, /* EXTRV_RS.W */
17986 NMD::Pool
NMD::POOL32Axf_2_DSP__24_31
[8] = {
17987 { instruction
, 0 , 0 , 32,
17988 0xfc003fff, 0x200030bf, &NMD::DPAU_H_QBR
, 0,
17989 DSP_
}, /* DPAU.H.QBR */
17990 { instruction
, 0 , 0 , 32,
17991 0xfc003fff, 0x200032bf, &NMD::DPAQX_SA_W_PH
, 0,
17992 DSP_
}, /* DPAQX_SA.W.PH */
17993 { instruction
, 0 , 0 , 32,
17994 0xfc003fff, 0x200034bf, &NMD::DPSU_H_QBR
, 0,
17995 DSP_
}, /* DPSU.H.QBR */
17996 { instruction
, 0 , 0 , 32,
17997 0xfc003fff, 0x200036bf, &NMD::DPSQX_SA_W_PH
, 0,
17998 DSP_
}, /* DPSQX_SA.W.PH */
17999 { instruction
, 0 , 0 , 32,
18000 0xfc003fff, 0x200038bf, &NMD::EXTPDPV
, 0,
18001 DSP_
}, /* EXTPDPV */
18002 { instruction
, 0 , 0 , 32,
18003 0xfc003fff, 0x20003abf, &NMD::MSUBU_DSP_
, 0,
18004 DSP_
}, /* MSUBU[DSP] */
18005 { instruction
, 0 , 0 , 32,
18006 0xfc003fff, 0x20003cbf, &NMD::MULSAQ_S_W_PH
, 0,
18007 DSP_
}, /* MULSAQ_S.W.PH */
18008 { instruction
, 0 , 0 , 32,
18009 0xfc003fff, 0x20003ebf, &NMD::EXTRV_S_H
, 0,
18010 DSP_
}, /* EXTRV_S.H */
18014 NMD::Pool
NMD::POOL32Axf_2
[4] = {
18015 { pool
, POOL32Axf_2_DSP__0_7
, 8 , 32,
18016 0xfc0031ff, 0x200000bf, 0 , 0,
18017 0x0 }, /* POOL32Axf_2(DSP)_0_7 */
18018 { pool
, POOL32Axf_2_DSP__8_15
, 8 , 32,
18019 0xfc0031ff, 0x200010bf, 0 , 0,
18020 0x0 }, /* POOL32Axf_2(DSP)_8_15 */
18021 { pool
, POOL32Axf_2_DSP__16_23
, 8 , 32,
18022 0xfc0031ff, 0x200020bf, 0 , 0,
18023 0x0 }, /* POOL32Axf_2(DSP)_16_23 */
18024 { pool
, POOL32Axf_2_DSP__24_31
, 8 , 32,
18025 0xfc0031ff, 0x200030bf, 0 , 0,
18026 0x0 }, /* POOL32Axf_2(DSP)_24_31 */
18030 NMD::Pool
NMD::POOL32Axf_4
[128] = {
18031 { instruction
, 0 , 0 , 32,
18032 0xfc00ffff, 0x2000013f, &NMD::ABSQ_S_QB
, 0,
18033 DSP_
}, /* ABSQ_S.QB */
18034 { instruction
, 0 , 0 , 32,
18035 0xfc00ffff, 0x2000033f, &NMD::REPLV_PH
, 0,
18036 DSP_
}, /* REPLV.PH */
18037 { reserved_block
, 0 , 0 , 32,
18038 0xfc00ffff, 0x2000053f, 0 , 0,
18039 0x0 }, /* POOL32Axf_4~*(2) */
18040 { reserved_block
, 0 , 0 , 32,
18041 0xfc00ffff, 0x2000073f, 0 , 0,
18042 0x0 }, /* POOL32Axf_4~*(3) */
18043 { reserved_block
, 0 , 0 , 32,
18044 0xfc00ffff, 0x2000093f, 0 , 0,
18045 0x0 }, /* POOL32Axf_4~*(4) */
18046 { reserved_block
, 0 , 0 , 32,
18047 0xfc00ffff, 0x20000b3f, 0 , 0,
18048 0x0 }, /* POOL32Axf_4~*(5) */
18049 { reserved_block
, 0 , 0 , 32,
18050 0xfc00ffff, 0x20000d3f, 0 , 0,
18051 0x0 }, /* POOL32Axf_4~*(6) */
18052 { reserved_block
, 0 , 0 , 32,
18053 0xfc00ffff, 0x20000f3f, 0 , 0,
18054 0x0 }, /* POOL32Axf_4~*(7) */
18055 { instruction
, 0 , 0 , 32,
18056 0xfc00ffff, 0x2000113f, &NMD::ABSQ_S_PH
, 0,
18057 DSP_
}, /* ABSQ_S.PH */
18058 { instruction
, 0 , 0 , 32,
18059 0xfc00ffff, 0x2000133f, &NMD::REPLV_QB
, 0,
18060 DSP_
}, /* REPLV.QB */
18061 { reserved_block
, 0 , 0 , 32,
18062 0xfc00ffff, 0x2000153f, 0 , 0,
18063 0x0 }, /* POOL32Axf_4~*(10) */
18064 { reserved_block
, 0 , 0 , 32,
18065 0xfc00ffff, 0x2000173f, 0 , 0,
18066 0x0 }, /* POOL32Axf_4~*(11) */
18067 { reserved_block
, 0 , 0 , 32,
18068 0xfc00ffff, 0x2000193f, 0 , 0,
18069 0x0 }, /* POOL32Axf_4~*(12) */
18070 { reserved_block
, 0 , 0 , 32,
18071 0xfc00ffff, 0x20001b3f, 0 , 0,
18072 0x0 }, /* POOL32Axf_4~*(13) */
18073 { reserved_block
, 0 , 0 , 32,
18074 0xfc00ffff, 0x20001d3f, 0 , 0,
18075 0x0 }, /* POOL32Axf_4~*(14) */
18076 { reserved_block
, 0 , 0 , 32,
18077 0xfc00ffff, 0x20001f3f, 0 , 0,
18078 0x0 }, /* POOL32Axf_4~*(15) */
18079 { instruction
, 0 , 0 , 32,
18080 0xfc00ffff, 0x2000213f, &NMD::ABSQ_S_W
, 0,
18081 DSP_
}, /* ABSQ_S.W */
18082 { reserved_block
, 0 , 0 , 32,
18083 0xfc00ffff, 0x2000233f, 0 , 0,
18084 0x0 }, /* POOL32Axf_4~*(17) */
18085 { reserved_block
, 0 , 0 , 32,
18086 0xfc00ffff, 0x2000253f, 0 , 0,
18087 0x0 }, /* POOL32Axf_4~*(18) */
18088 { reserved_block
, 0 , 0 , 32,
18089 0xfc00ffff, 0x2000273f, 0 , 0,
18090 0x0 }, /* POOL32Axf_4~*(19) */
18091 { reserved_block
, 0 , 0 , 32,
18092 0xfc00ffff, 0x2000293f, 0 , 0,
18093 0x0 }, /* POOL32Axf_4~*(20) */
18094 { reserved_block
, 0 , 0 , 32,
18095 0xfc00ffff, 0x20002b3f, 0 , 0,
18096 0x0 }, /* POOL32Axf_4~*(21) */
18097 { reserved_block
, 0 , 0 , 32,
18098 0xfc00ffff, 0x20002d3f, 0 , 0,
18099 0x0 }, /* POOL32Axf_4~*(22) */
18100 { reserved_block
, 0 , 0 , 32,
18101 0xfc00ffff, 0x20002f3f, 0 , 0,
18102 0x0 }, /* POOL32Axf_4~*(23) */
18103 { reserved_block
, 0 , 0 , 32,
18104 0xfc00ffff, 0x2000313f, 0 , 0,
18105 0x0 }, /* POOL32Axf_4~*(24) */
18106 { reserved_block
, 0 , 0 , 32,
18107 0xfc00ffff, 0x2000333f, 0 , 0,
18108 0x0 }, /* POOL32Axf_4~*(25) */
18109 { reserved_block
, 0 , 0 , 32,
18110 0xfc00ffff, 0x2000353f, 0 , 0,
18111 0x0 }, /* POOL32Axf_4~*(26) */
18112 { reserved_block
, 0 , 0 , 32,
18113 0xfc00ffff, 0x2000373f, 0 , 0,
18114 0x0 }, /* POOL32Axf_4~*(27) */
18115 { reserved_block
, 0 , 0 , 32,
18116 0xfc00ffff, 0x2000393f, 0 , 0,
18117 0x0 }, /* POOL32Axf_4~*(28) */
18118 { reserved_block
, 0 , 0 , 32,
18119 0xfc00ffff, 0x20003b3f, 0 , 0,
18120 0x0 }, /* POOL32Axf_4~*(29) */
18121 { reserved_block
, 0 , 0 , 32,
18122 0xfc00ffff, 0x20003d3f, 0 , 0,
18123 0x0 }, /* POOL32Axf_4~*(30) */
18124 { reserved_block
, 0 , 0 , 32,
18125 0xfc00ffff, 0x20003f3f, 0 , 0,
18126 0x0 }, /* POOL32Axf_4~*(31) */
18127 { instruction
, 0 , 0 , 32,
18128 0xfc00ffff, 0x2000413f, &NMD::INSV
, 0,
18130 { reserved_block
, 0 , 0 , 32,
18131 0xfc00ffff, 0x2000433f, 0 , 0,
18132 0x0 }, /* POOL32Axf_4~*(33) */
18133 { reserved_block
, 0 , 0 , 32,
18134 0xfc00ffff, 0x2000453f, 0 , 0,
18135 0x0 }, /* POOL32Axf_4~*(34) */
18136 { reserved_block
, 0 , 0 , 32,
18137 0xfc00ffff, 0x2000473f, 0 , 0,
18138 0x0 }, /* POOL32Axf_4~*(35) */
18139 { reserved_block
, 0 , 0 , 32,
18140 0xfc00ffff, 0x2000493f, 0 , 0,
18141 0x0 }, /* POOL32Axf_4~*(36) */
18142 { instruction
, 0 , 0 , 32,
18143 0xfc00ffff, 0x20004b3f, &NMD::CLO
, 0,
18145 { instruction
, 0 , 0 , 32,
18146 0xfc00ffff, 0x20004d3f, &NMD::MFC2
, 0,
18148 { reserved_block
, 0 , 0 , 32,
18149 0xfc00ffff, 0x20004f3f, 0 , 0,
18150 0x0 }, /* POOL32Axf_4~*(39) */
18151 { instruction
, 0 , 0 , 32,
18152 0xfc00ffff, 0x2000513f, &NMD::PRECEQ_W_PHL
, 0,
18153 DSP_
}, /* PRECEQ.W.PHL */
18154 { reserved_block
, 0 , 0 , 32,
18155 0xfc00ffff, 0x2000533f, 0 , 0,
18156 0x0 }, /* POOL32Axf_4~*(41) */
18157 { reserved_block
, 0 , 0 , 32,
18158 0xfc00ffff, 0x2000553f, 0 , 0,
18159 0x0 }, /* POOL32Axf_4~*(42) */
18160 { reserved_block
, 0 , 0 , 32,
18161 0xfc00ffff, 0x2000573f, 0 , 0,
18162 0x0 }, /* POOL32Axf_4~*(43) */
18163 { reserved_block
, 0 , 0 , 32,
18164 0xfc00ffff, 0x2000593f, 0 , 0,
18165 0x0 }, /* POOL32Axf_4~*(44) */
18166 { instruction
, 0 , 0 , 32,
18167 0xfc00ffff, 0x20005b3f, &NMD::CLZ
, 0,
18169 { instruction
, 0 , 0 , 32,
18170 0xfc00ffff, 0x20005d3f, &NMD::MTC2
, 0,
18172 { reserved_block
, 0 , 0 , 32,
18173 0xfc00ffff, 0x20005f3f, 0 , 0,
18174 0x0 }, /* POOL32Axf_4~*(47) */
18175 { instruction
, 0 , 0 , 32,
18176 0xfc00ffff, 0x2000613f, &NMD::PRECEQ_W_PHR
, 0,
18177 DSP_
}, /* PRECEQ.W.PHR */
18178 { reserved_block
, 0 , 0 , 32,
18179 0xfc00ffff, 0x2000633f, 0 , 0,
18180 0x0 }, /* POOL32Axf_4~*(49) */
18181 { reserved_block
, 0 , 0 , 32,
18182 0xfc00ffff, 0x2000653f, 0 , 0,
18183 0x0 }, /* POOL32Axf_4~*(50) */
18184 { reserved_block
, 0 , 0 , 32,
18185 0xfc00ffff, 0x2000673f, 0 , 0,
18186 0x0 }, /* POOL32Axf_4~*(51) */
18187 { reserved_block
, 0 , 0 , 32,
18188 0xfc00ffff, 0x2000693f, 0 , 0,
18189 0x0 }, /* POOL32Axf_4~*(52) */
18190 { reserved_block
, 0 , 0 , 32,
18191 0xfc00ffff, 0x20006b3f, 0 , 0,
18192 0x0 }, /* POOL32Axf_4~*(53) */
18193 { instruction
, 0 , 0 , 32,
18194 0xfc00ffff, 0x20006d3f, &NMD::DMFC2
, 0,
18195 CP2_
}, /* DMFC2 */
18196 { reserved_block
, 0 , 0 , 32,
18197 0xfc00ffff, 0x20006f3f, 0 , 0,
18198 0x0 }, /* POOL32Axf_4~*(55) */
18199 { instruction
, 0 , 0 , 32,
18200 0xfc00ffff, 0x2000713f, &NMD::PRECEQU_PH_QBL
, 0,
18201 DSP_
}, /* PRECEQU.PH.QBL */
18202 { instruction
, 0 , 0 , 32,
18203 0xfc00ffff, 0x2000733f, &NMD::PRECEQU_PH_QBLA
, 0,
18204 DSP_
}, /* PRECEQU.PH.QBLA */
18205 { reserved_block
, 0 , 0 , 32,
18206 0xfc00ffff, 0x2000753f, 0 , 0,
18207 0x0 }, /* POOL32Axf_4~*(58) */
18208 { reserved_block
, 0 , 0 , 32,
18209 0xfc00ffff, 0x2000773f, 0 , 0,
18210 0x0 }, /* POOL32Axf_4~*(59) */
18211 { reserved_block
, 0 , 0 , 32,
18212 0xfc00ffff, 0x2000793f, 0 , 0,
18213 0x0 }, /* POOL32Axf_4~*(60) */
18214 { reserved_block
, 0 , 0 , 32,
18215 0xfc00ffff, 0x20007b3f, 0 , 0,
18216 0x0 }, /* POOL32Axf_4~*(61) */
18217 { instruction
, 0 , 0 , 32,
18218 0xfc00ffff, 0x20007d3f, &NMD::DMTC2
, 0,
18219 CP2_
}, /* DMTC2 */
18220 { reserved_block
, 0 , 0 , 32,
18221 0xfc00ffff, 0x20007f3f, 0 , 0,
18222 0x0 }, /* POOL32Axf_4~*(63) */
18223 { reserved_block
, 0 , 0 , 32,
18224 0xfc00ffff, 0x2000813f, 0 , 0,
18225 0x0 }, /* POOL32Axf_4~*(64) */
18226 { reserved_block
, 0 , 0 , 32,
18227 0xfc00ffff, 0x2000833f, 0 , 0,
18228 0x0 }, /* POOL32Axf_4~*(65) */
18229 { reserved_block
, 0 , 0 , 32,
18230 0xfc00ffff, 0x2000853f, 0 , 0,
18231 0x0 }, /* POOL32Axf_4~*(66) */
18232 { reserved_block
, 0 , 0 , 32,
18233 0xfc00ffff, 0x2000873f, 0 , 0,
18234 0x0 }, /* POOL32Axf_4~*(67) */
18235 { reserved_block
, 0 , 0 , 32,
18236 0xfc00ffff, 0x2000893f, 0 , 0,
18237 0x0 }, /* POOL32Axf_4~*(68) */
18238 { reserved_block
, 0 , 0 , 32,
18239 0xfc00ffff, 0x20008b3f, 0 , 0,
18240 0x0 }, /* POOL32Axf_4~*(69) */
18241 { instruction
, 0 , 0 , 32,
18242 0xfc00ffff, 0x20008d3f, &NMD::MFHC2
, 0,
18243 CP2_
}, /* MFHC2 */
18244 { reserved_block
, 0 , 0 , 32,
18245 0xfc00ffff, 0x20008f3f, 0 , 0,
18246 0x0 }, /* POOL32Axf_4~*(71) */
18247 { instruction
, 0 , 0 , 32,
18248 0xfc00ffff, 0x2000913f, &NMD::PRECEQU_PH_QBR
, 0,
18249 DSP_
}, /* PRECEQU.PH.QBR */
18250 { instruction
, 0 , 0 , 32,
18251 0xfc00ffff, 0x2000933f, &NMD::PRECEQU_PH_QBRA
, 0,
18252 DSP_
}, /* PRECEQU.PH.QBRA */
18253 { reserved_block
, 0 , 0 , 32,
18254 0xfc00ffff, 0x2000953f, 0 , 0,
18255 0x0 }, /* POOL32Axf_4~*(74) */
18256 { reserved_block
, 0 , 0 , 32,
18257 0xfc00ffff, 0x2000973f, 0 , 0,
18258 0x0 }, /* POOL32Axf_4~*(75) */
18259 { reserved_block
, 0 , 0 , 32,
18260 0xfc00ffff, 0x2000993f, 0 , 0,
18261 0x0 }, /* POOL32Axf_4~*(76) */
18262 { reserved_block
, 0 , 0 , 32,
18263 0xfc00ffff, 0x20009b3f, 0 , 0,
18264 0x0 }, /* POOL32Axf_4~*(77) */
18265 { instruction
, 0 , 0 , 32,
18266 0xfc00ffff, 0x20009d3f, &NMD::MTHC2
, 0,
18267 CP2_
}, /* MTHC2 */
18268 { reserved_block
, 0 , 0 , 32,
18269 0xfc00ffff, 0x20009f3f, 0 , 0,
18270 0x0 }, /* POOL32Axf_4~*(79) */
18271 { reserved_block
, 0 , 0 , 32,
18272 0xfc00ffff, 0x2000a13f, 0 , 0,
18273 0x0 }, /* POOL32Axf_4~*(80) */
18274 { reserved_block
, 0 , 0 , 32,
18275 0xfc00ffff, 0x2000a33f, 0 , 0,
18276 0x0 }, /* POOL32Axf_4~*(81) */
18277 { reserved_block
, 0 , 0 , 32,
18278 0xfc00ffff, 0x2000a53f, 0 , 0,
18279 0x0 }, /* POOL32Axf_4~*(82) */
18280 { reserved_block
, 0 , 0 , 32,
18281 0xfc00ffff, 0x2000a73f, 0 , 0,
18282 0x0 }, /* POOL32Axf_4~*(83) */
18283 { reserved_block
, 0 , 0 , 32,
18284 0xfc00ffff, 0x2000a93f, 0 , 0,
18285 0x0 }, /* POOL32Axf_4~*(84) */
18286 { reserved_block
, 0 , 0 , 32,
18287 0xfc00ffff, 0x2000ab3f, 0 , 0,
18288 0x0 }, /* POOL32Axf_4~*(85) */
18289 { reserved_block
, 0 , 0 , 32,
18290 0xfc00ffff, 0x2000ad3f, 0 , 0,
18291 0x0 }, /* POOL32Axf_4~*(86) */
18292 { reserved_block
, 0 , 0 , 32,
18293 0xfc00ffff, 0x2000af3f, 0 , 0,
18294 0x0 }, /* POOL32Axf_4~*(87) */
18295 { instruction
, 0 , 0 , 32,
18296 0xfc00ffff, 0x2000b13f, &NMD::PRECEU_PH_QBL
, 0,
18297 DSP_
}, /* PRECEU.PH.QBL */
18298 { instruction
, 0 , 0 , 32,
18299 0xfc00ffff, 0x2000b33f, &NMD::PRECEU_PH_QBLA
, 0,
18300 DSP_
}, /* PRECEU.PH.QBLA */
18301 { reserved_block
, 0 , 0 , 32,
18302 0xfc00ffff, 0x2000b53f, 0 , 0,
18303 0x0 }, /* POOL32Axf_4~*(90) */
18304 { reserved_block
, 0 , 0 , 32,
18305 0xfc00ffff, 0x2000b73f, 0 , 0,
18306 0x0 }, /* POOL32Axf_4~*(91) */
18307 { reserved_block
, 0 , 0 , 32,
18308 0xfc00ffff, 0x2000b93f, 0 , 0,
18309 0x0 }, /* POOL32Axf_4~*(92) */
18310 { reserved_block
, 0 , 0 , 32,
18311 0xfc00ffff, 0x2000bb3f, 0 , 0,
18312 0x0 }, /* POOL32Axf_4~*(93) */
18313 { reserved_block
, 0 , 0 , 32,
18314 0xfc00ffff, 0x2000bd3f, 0 , 0,
18315 0x0 }, /* POOL32Axf_4~*(94) */
18316 { reserved_block
, 0 , 0 , 32,
18317 0xfc00ffff, 0x2000bf3f, 0 , 0,
18318 0x0 }, /* POOL32Axf_4~*(95) */
18319 { reserved_block
, 0 , 0 , 32,
18320 0xfc00ffff, 0x2000c13f, 0 , 0,
18321 0x0 }, /* POOL32Axf_4~*(96) */
18322 { reserved_block
, 0 , 0 , 32,
18323 0xfc00ffff, 0x2000c33f, 0 , 0,
18324 0x0 }, /* POOL32Axf_4~*(97) */
18325 { reserved_block
, 0 , 0 , 32,
18326 0xfc00ffff, 0x2000c53f, 0 , 0,
18327 0x0 }, /* POOL32Axf_4~*(98) */
18328 { reserved_block
, 0 , 0 , 32,
18329 0xfc00ffff, 0x2000c73f, 0 , 0,
18330 0x0 }, /* POOL32Axf_4~*(99) */
18331 { reserved_block
, 0 , 0 , 32,
18332 0xfc00ffff, 0x2000c93f, 0 , 0,
18333 0x0 }, /* POOL32Axf_4~*(100) */
18334 { reserved_block
, 0 , 0 , 32,
18335 0xfc00ffff, 0x2000cb3f, 0 , 0,
18336 0x0 }, /* POOL32Axf_4~*(101) */
18337 { instruction
, 0 , 0 , 32,
18338 0xfc00ffff, 0x2000cd3f, &NMD::CFC2
, 0,
18340 { reserved_block
, 0 , 0 , 32,
18341 0xfc00ffff, 0x2000cf3f, 0 , 0,
18342 0x0 }, /* POOL32Axf_4~*(103) */
18343 { instruction
, 0 , 0 , 32,
18344 0xfc00ffff, 0x2000d13f, &NMD::PRECEU_PH_QBR
, 0,
18345 DSP_
}, /* PRECEU.PH.QBR */
18346 { instruction
, 0 , 0 , 32,
18347 0xfc00ffff, 0x2000d33f, &NMD::PRECEU_PH_QBRA
, 0,
18348 DSP_
}, /* PRECEU.PH.QBRA */
18349 { reserved_block
, 0 , 0 , 32,
18350 0xfc00ffff, 0x2000d53f, 0 , 0,
18351 0x0 }, /* POOL32Axf_4~*(106) */
18352 { reserved_block
, 0 , 0 , 32,
18353 0xfc00ffff, 0x2000d73f, 0 , 0,
18354 0x0 }, /* POOL32Axf_4~*(107) */
18355 { reserved_block
, 0 , 0 , 32,
18356 0xfc00ffff, 0x2000d93f, 0 , 0,
18357 0x0 }, /* POOL32Axf_4~*(108) */
18358 { reserved_block
, 0 , 0 , 32,
18359 0xfc00ffff, 0x2000db3f, 0 , 0,
18360 0x0 }, /* POOL32Axf_4~*(109) */
18361 { instruction
, 0 , 0 , 32,
18362 0xfc00ffff, 0x2000dd3f, &NMD::CTC2
, 0,
18364 { reserved_block
, 0 , 0 , 32,
18365 0xfc00ffff, 0x2000df3f, 0 , 0,
18366 0x0 }, /* POOL32Axf_4~*(111) */
18367 { reserved_block
, 0 , 0 , 32,
18368 0xfc00ffff, 0x2000e13f, 0 , 0,
18369 0x0 }, /* POOL32Axf_4~*(112) */
18370 { reserved_block
, 0 , 0 , 32,
18371 0xfc00ffff, 0x2000e33f, 0 , 0,
18372 0x0 }, /* POOL32Axf_4~*(113) */
18373 { reserved_block
, 0 , 0 , 32,
18374 0xfc00ffff, 0x2000e53f, 0 , 0,
18375 0x0 }, /* POOL32Axf_4~*(114) */
18376 { reserved_block
, 0 , 0 , 32,
18377 0xfc00ffff, 0x2000e73f, 0 , 0,
18378 0x0 }, /* POOL32Axf_4~*(115) */
18379 { reserved_block
, 0 , 0 , 32,
18380 0xfc00ffff, 0x2000e93f, 0 , 0,
18381 0x0 }, /* POOL32Axf_4~*(116) */
18382 { reserved_block
, 0 , 0 , 32,
18383 0xfc00ffff, 0x2000eb3f, 0 , 0,
18384 0x0 }, /* POOL32Axf_4~*(117) */
18385 { reserved_block
, 0 , 0 , 32,
18386 0xfc00ffff, 0x2000ed3f, 0 , 0,
18387 0x0 }, /* POOL32Axf_4~*(118) */
18388 { reserved_block
, 0 , 0 , 32,
18389 0xfc00ffff, 0x2000ef3f, 0 , 0,
18390 0x0 }, /* POOL32Axf_4~*(119) */
18391 { instruction
, 0 , 0 , 32,
18392 0xfc00ffff, 0x2000f13f, &NMD::RADDU_W_QB
, 0,
18393 DSP_
}, /* RADDU.W.QB */
18394 { reserved_block
, 0 , 0 , 32,
18395 0xfc00ffff, 0x2000f33f, 0 , 0,
18396 0x0 }, /* POOL32Axf_4~*(121) */
18397 { reserved_block
, 0 , 0 , 32,
18398 0xfc00ffff, 0x2000f53f, 0 , 0,
18399 0x0 }, /* POOL32Axf_4~*(122) */
18400 { reserved_block
, 0 , 0 , 32,
18401 0xfc00ffff, 0x2000f73f, 0 , 0,
18402 0x0 }, /* POOL32Axf_4~*(123) */
18403 { reserved_block
, 0 , 0 , 32,
18404 0xfc00ffff, 0x2000f93f, 0 , 0,
18405 0x0 }, /* POOL32Axf_4~*(124) */
18406 { reserved_block
, 0 , 0 , 32,
18407 0xfc00ffff, 0x2000fb3f, 0 , 0,
18408 0x0 }, /* POOL32Axf_4~*(125) */
18409 { reserved_block
, 0 , 0 , 32,
18410 0xfc00ffff, 0x2000fd3f, 0 , 0,
18411 0x0 }, /* POOL32Axf_4~*(126) */
18412 { reserved_block
, 0 , 0 , 32,
18413 0xfc00ffff, 0x2000ff3f, 0 , 0,
18414 0x0 }, /* POOL32Axf_4~*(127) */
18418 NMD::Pool
NMD::POOL32Axf_5_group0
[32] = {
18419 { instruction
, 0 , 0 , 32,
18420 0xfc00ffff, 0x2000017f, &NMD::TLBGP
, 0,
18421 CP0_
| VZ_
| TLB_
}, /* TLBGP */
18422 { instruction
, 0 , 0 , 32,
18423 0xfc00ffff, 0x2000037f, &NMD::TLBP
, 0,
18424 CP0_
| TLB_
}, /* TLBP */
18425 { instruction
, 0 , 0 , 32,
18426 0xfc00ffff, 0x2000057f, &NMD::TLBGINV
, 0,
18427 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINV */
18428 { instruction
, 0 , 0 , 32,
18429 0xfc00ffff, 0x2000077f, &NMD::TLBINV
, 0,
18430 CP0_
| TLB_
| TLBINV_
}, /* TLBINV */
18431 { reserved_block
, 0 , 0 , 32,
18432 0xfc00ffff, 0x2000097f, 0 , 0,
18433 0x0 }, /* POOL32Axf_5_group0~*(4) */
18434 { reserved_block
, 0 , 0 , 32,
18435 0xfc00ffff, 0x20000b7f, 0 , 0,
18436 0x0 }, /* POOL32Axf_5_group0~*(5) */
18437 { reserved_block
, 0 , 0 , 32,
18438 0xfc00ffff, 0x20000d7f, 0 , 0,
18439 0x0 }, /* POOL32Axf_5_group0~*(6) */
18440 { reserved_block
, 0 , 0 , 32,
18441 0xfc00ffff, 0x20000f7f, 0 , 0,
18442 0x0 }, /* POOL32Axf_5_group0~*(7) */
18443 { instruction
, 0 , 0 , 32,
18444 0xfc00ffff, 0x2000117f, &NMD::TLBGR
, 0,
18445 CP0_
| VZ_
| TLB_
}, /* TLBGR */
18446 { instruction
, 0 , 0 , 32,
18447 0xfc00ffff, 0x2000137f, &NMD::TLBR
, 0,
18448 CP0_
| TLB_
}, /* TLBR */
18449 { instruction
, 0 , 0 , 32,
18450 0xfc00ffff, 0x2000157f, &NMD::TLBGINVF
, 0,
18451 CP0_
| VZ_
| TLB_
| TLBINV_
}, /* TLBGINVF */
18452 { instruction
, 0 , 0 , 32,
18453 0xfc00ffff, 0x2000177f, &NMD::TLBINVF
, 0,
18454 CP0_
| TLB_
| TLBINV_
}, /* TLBINVF */
18455 { reserved_block
, 0 , 0 , 32,
18456 0xfc00ffff, 0x2000197f, 0 , 0,
18457 0x0 }, /* POOL32Axf_5_group0~*(12) */
18458 { reserved_block
, 0 , 0 , 32,
18459 0xfc00ffff, 0x20001b7f, 0 , 0,
18460 0x0 }, /* POOL32Axf_5_group0~*(13) */
18461 { reserved_block
, 0 , 0 , 32,
18462 0xfc00ffff, 0x20001d7f, 0 , 0,
18463 0x0 }, /* POOL32Axf_5_group0~*(14) */
18464 { reserved_block
, 0 , 0 , 32,
18465 0xfc00ffff, 0x20001f7f, 0 , 0,
18466 0x0 }, /* POOL32Axf_5_group0~*(15) */
18467 { instruction
, 0 , 0 , 32,
18468 0xfc00ffff, 0x2000217f, &NMD::TLBGWI
, 0,
18469 CP0_
| VZ_
| TLB_
}, /* TLBGWI */
18470 { instruction
, 0 , 0 , 32,
18471 0xfc00ffff, 0x2000237f, &NMD::TLBWI
, 0,
18472 CP0_
| TLB_
}, /* TLBWI */
18473 { reserved_block
, 0 , 0 , 32,
18474 0xfc00ffff, 0x2000257f, 0 , 0,
18475 0x0 }, /* POOL32Axf_5_group0~*(18) */
18476 { reserved_block
, 0 , 0 , 32,
18477 0xfc00ffff, 0x2000277f, 0 , 0,
18478 0x0 }, /* POOL32Axf_5_group0~*(19) */
18479 { reserved_block
, 0 , 0 , 32,
18480 0xfc00ffff, 0x2000297f, 0 , 0,
18481 0x0 }, /* POOL32Axf_5_group0~*(20) */
18482 { reserved_block
, 0 , 0 , 32,
18483 0xfc00ffff, 0x20002b7f, 0 , 0,
18484 0x0 }, /* POOL32Axf_5_group0~*(21) */
18485 { reserved_block
, 0 , 0 , 32,
18486 0xfc00ffff, 0x20002d7f, 0 , 0,
18487 0x0 }, /* POOL32Axf_5_group0~*(22) */
18488 { reserved_block
, 0 , 0 , 32,
18489 0xfc00ffff, 0x20002f7f, 0 , 0,
18490 0x0 }, /* POOL32Axf_5_group0~*(23) */
18491 { instruction
, 0 , 0 , 32,
18492 0xfc00ffff, 0x2000317f, &NMD::TLBGWR
, 0,
18493 CP0_
| VZ_
| TLB_
}, /* TLBGWR */
18494 { instruction
, 0 , 0 , 32,
18495 0xfc00ffff, 0x2000337f, &NMD::TLBWR
, 0,
18496 CP0_
| TLB_
}, /* TLBWR */
18497 { reserved_block
, 0 , 0 , 32,
18498 0xfc00ffff, 0x2000357f, 0 , 0,
18499 0x0 }, /* POOL32Axf_5_group0~*(26) */
18500 { reserved_block
, 0 , 0 , 32,
18501 0xfc00ffff, 0x2000377f, 0 , 0,
18502 0x0 }, /* POOL32Axf_5_group0~*(27) */
18503 { reserved_block
, 0 , 0 , 32,
18504 0xfc00ffff, 0x2000397f, 0 , 0,
18505 0x0 }, /* POOL32Axf_5_group0~*(28) */
18506 { reserved_block
, 0 , 0 , 32,
18507 0xfc00ffff, 0x20003b7f, 0 , 0,
18508 0x0 }, /* POOL32Axf_5_group0~*(29) */
18509 { reserved_block
, 0 , 0 , 32,
18510 0xfc00ffff, 0x20003d7f, 0 , 0,
18511 0x0 }, /* POOL32Axf_5_group0~*(30) */
18512 { reserved_block
, 0 , 0 , 32,
18513 0xfc00ffff, 0x20003f7f, 0 , 0,
18514 0x0 }, /* POOL32Axf_5_group0~*(31) */
18518 NMD::Pool
NMD::POOL32Axf_5_group1
[32] = {
18519 { reserved_block
, 0 , 0 , 32,
18520 0xfc00ffff, 0x2000417f, 0 , 0,
18521 0x0 }, /* POOL32Axf_5_group1~*(0) */
18522 { reserved_block
, 0 , 0 , 32,
18523 0xfc00ffff, 0x2000437f, 0 , 0,
18524 0x0 }, /* POOL32Axf_5_group1~*(1) */
18525 { reserved_block
, 0 , 0 , 32,
18526 0xfc00ffff, 0x2000457f, 0 , 0,
18527 0x0 }, /* POOL32Axf_5_group1~*(2) */
18528 { instruction
, 0 , 0 , 32,
18529 0xfc00ffff, 0x2000477f, &NMD::DI
, 0,
18531 { reserved_block
, 0 , 0 , 32,
18532 0xfc00ffff, 0x2000497f, 0 , 0,
18533 0x0 }, /* POOL32Axf_5_group1~*(4) */
18534 { reserved_block
, 0 , 0 , 32,
18535 0xfc00ffff, 0x20004b7f, 0 , 0,
18536 0x0 }, /* POOL32Axf_5_group1~*(5) */
18537 { reserved_block
, 0 , 0 , 32,
18538 0xfc00ffff, 0x20004d7f, 0 , 0,
18539 0x0 }, /* POOL32Axf_5_group1~*(6) */
18540 { reserved_block
, 0 , 0 , 32,
18541 0xfc00ffff, 0x20004f7f, 0 , 0,
18542 0x0 }, /* POOL32Axf_5_group1~*(7) */
18543 { reserved_block
, 0 , 0 , 32,
18544 0xfc00ffff, 0x2000517f, 0 , 0,
18545 0x0 }, /* POOL32Axf_5_group1~*(8) */
18546 { reserved_block
, 0 , 0 , 32,
18547 0xfc00ffff, 0x2000537f, 0 , 0,
18548 0x0 }, /* POOL32Axf_5_group1~*(9) */
18549 { reserved_block
, 0 , 0 , 32,
18550 0xfc00ffff, 0x2000557f, 0 , 0,
18551 0x0 }, /* POOL32Axf_5_group1~*(10) */
18552 { instruction
, 0 , 0 , 32,
18553 0xfc00ffff, 0x2000577f, &NMD::EI
, 0,
18555 { reserved_block
, 0 , 0 , 32,
18556 0xfc00ffff, 0x2000597f, 0 , 0,
18557 0x0 }, /* POOL32Axf_5_group1~*(12) */
18558 { reserved_block
, 0 , 0 , 32,
18559 0xfc00ffff, 0x20005b7f, 0 , 0,
18560 0x0 }, /* POOL32Axf_5_group1~*(13) */
18561 { reserved_block
, 0 , 0 , 32,
18562 0xfc00ffff, 0x20005d7f, 0 , 0,
18563 0x0 }, /* POOL32Axf_5_group1~*(14) */
18564 { reserved_block
, 0 , 0 , 32,
18565 0xfc00ffff, 0x20005f7f, 0 , 0,
18566 0x0 }, /* POOL32Axf_5_group1~*(15) */
18567 { reserved_block
, 0 , 0 , 32,
18568 0xfc00ffff, 0x2000617f, 0 , 0,
18569 0x0 }, /* POOL32Axf_5_group1~*(16) */
18570 { reserved_block
, 0 , 0 , 32,
18571 0xfc00ffff, 0x2000637f, 0 , 0,
18572 0x0 }, /* POOL32Axf_5_group1~*(17) */
18573 { reserved_block
, 0 , 0 , 32,
18574 0xfc00ffff, 0x2000657f, 0 , 0,
18575 0x0 }, /* POOL32Axf_5_group1~*(18) */
18576 { reserved_block
, 0 , 0 , 32,
18577 0xfc00ffff, 0x2000677f, 0 , 0,
18578 0x0 }, /* POOL32Axf_5_group1~*(19) */
18579 { reserved_block
, 0 , 0 , 32,
18580 0xfc00ffff, 0x2000697f, 0 , 0,
18581 0x0 }, /* POOL32Axf_5_group1~*(20) */
18582 { reserved_block
, 0 , 0 , 32,
18583 0xfc00ffff, 0x20006b7f, 0 , 0,
18584 0x0 }, /* POOL32Axf_5_group1~*(21) */
18585 { reserved_block
, 0 , 0 , 32,
18586 0xfc00ffff, 0x20006d7f, 0 , 0,
18587 0x0 }, /* POOL32Axf_5_group1~*(22) */
18588 { reserved_block
, 0 , 0 , 32,
18589 0xfc00ffff, 0x20006f7f, 0 , 0,
18590 0x0 }, /* POOL32Axf_5_group1~*(23) */
18591 { reserved_block
, 0 , 0 , 32,
18592 0xfc00ffff, 0x2000717f, 0 , 0,
18593 0x0 }, /* POOL32Axf_5_group1~*(24) */
18594 { reserved_block
, 0 , 0 , 32,
18595 0xfc00ffff, 0x2000737f, 0 , 0,
18596 0x0 }, /* POOL32Axf_5_group1~*(25) */
18597 { reserved_block
, 0 , 0 , 32,
18598 0xfc00ffff, 0x2000757f, 0 , 0,
18599 0x0 }, /* POOL32Axf_5_group1~*(26) */
18600 { reserved_block
, 0 , 0 , 32,
18601 0xfc00ffff, 0x2000777f, 0 , 0,
18602 0x0 }, /* POOL32Axf_5_group1~*(27) */
18603 { reserved_block
, 0 , 0 , 32,
18604 0xfc00ffff, 0x2000797f, 0 , 0,
18605 0x0 }, /* POOL32Axf_5_group1~*(28) */
18606 { reserved_block
, 0 , 0 , 32,
18607 0xfc00ffff, 0x20007b7f, 0 , 0,
18608 0x0 }, /* POOL32Axf_5_group1~*(29) */
18609 { reserved_block
, 0 , 0 , 32,
18610 0xfc00ffff, 0x20007d7f, 0 , 0,
18611 0x0 }, /* POOL32Axf_5_group1~*(30) */
18612 { reserved_block
, 0 , 0 , 32,
18613 0xfc00ffff, 0x20007f7f, 0 , 0,
18614 0x0 }, /* POOL32Axf_5_group1~*(31) */
18618 NMD::Pool
NMD::ERETx
[2] = {
18619 { instruction
, 0 , 0 , 32,
18620 0xfc01ffff, 0x2000f37f, &NMD::ERET
, 0,
18622 { instruction
, 0 , 0 , 32,
18623 0xfc01ffff, 0x2001f37f, &NMD::ERETNC
, 0,
18624 0x0 }, /* ERETNC */
18628 NMD::Pool
NMD::POOL32Axf_5_group3
[32] = {
18629 { reserved_block
, 0 , 0 , 32,
18630 0xfc00ffff, 0x2000c17f, 0 , 0,
18631 0x0 }, /* POOL32Axf_5_group3~*(0) */
18632 { instruction
, 0 , 0 , 32,
18633 0xfc00ffff, 0x2000c37f, &NMD::WAIT
, 0,
18635 { reserved_block
, 0 , 0 , 32,
18636 0xfc00ffff, 0x2000c57f, 0 , 0,
18637 0x0 }, /* POOL32Axf_5_group3~*(2) */
18638 { reserved_block
, 0 , 0 , 32,
18639 0xfc00ffff, 0x2000c77f, 0 , 0,
18640 0x0 }, /* POOL32Axf_5_group3~*(3) */
18641 { reserved_block
, 0 , 0 , 32,
18642 0xfc00ffff, 0x2000c97f, 0 , 0,
18643 0x0 }, /* POOL32Axf_5_group3~*(4) */
18644 { reserved_block
, 0 , 0 , 32,
18645 0xfc00ffff, 0x2000cb7f, 0 , 0,
18646 0x0 }, /* POOL32Axf_5_group3~*(5) */
18647 { reserved_block
, 0 , 0 , 32,
18648 0xfc00ffff, 0x2000cd7f, 0 , 0,
18649 0x0 }, /* POOL32Axf_5_group3~*(6) */
18650 { reserved_block
, 0 , 0 , 32,
18651 0xfc00ffff, 0x2000cf7f, 0 , 0,
18652 0x0 }, /* POOL32Axf_5_group3~*(7) */
18653 { reserved_block
, 0 , 0 , 32,
18654 0xfc00ffff, 0x2000d17f, 0 , 0,
18655 0x0 }, /* POOL32Axf_5_group3~*(8) */
18656 { instruction
, 0 , 0 , 32,
18657 0xfc00ffff, 0x2000d37f, &NMD::IRET
, 0,
18659 { reserved_block
, 0 , 0 , 32,
18660 0xfc00ffff, 0x2000d57f, 0 , 0,
18661 0x0 }, /* POOL32Axf_5_group3~*(10) */
18662 { reserved_block
, 0 , 0 , 32,
18663 0xfc00ffff, 0x2000d77f, 0 , 0,
18664 0x0 }, /* POOL32Axf_5_group3~*(11) */
18665 { reserved_block
, 0 , 0 , 32,
18666 0xfc00ffff, 0x2000d97f, 0 , 0,
18667 0x0 }, /* POOL32Axf_5_group3~*(12) */
18668 { reserved_block
, 0 , 0 , 32,
18669 0xfc00ffff, 0x2000db7f, 0 , 0,
18670 0x0 }, /* POOL32Axf_5_group3~*(13) */
18671 { reserved_block
, 0 , 0 , 32,
18672 0xfc00ffff, 0x2000dd7f, 0 , 0,
18673 0x0 }, /* POOL32Axf_5_group3~*(14) */
18674 { reserved_block
, 0 , 0 , 32,
18675 0xfc00ffff, 0x2000df7f, 0 , 0,
18676 0x0 }, /* POOL32Axf_5_group3~*(15) */
18677 { instruction
, 0 , 0 , 32,
18678 0xfc00ffff, 0x2000e17f, &NMD::RDPGPR
, 0,
18679 CP0_
}, /* RDPGPR */
18680 { instruction
, 0 , 0 , 32,
18681 0xfc00ffff, 0x2000e37f, &NMD::DERET
, 0,
18682 EJTAG_
}, /* DERET */
18683 { reserved_block
, 0 , 0 , 32,
18684 0xfc00ffff, 0x2000e57f, 0 , 0,
18685 0x0 }, /* POOL32Axf_5_group3~*(18) */
18686 { reserved_block
, 0 , 0 , 32,
18687 0xfc00ffff, 0x2000e77f, 0 , 0,
18688 0x0 }, /* POOL32Axf_5_group3~*(19) */
18689 { reserved_block
, 0 , 0 , 32,
18690 0xfc00ffff, 0x2000e97f, 0 , 0,
18691 0x0 }, /* POOL32Axf_5_group3~*(20) */
18692 { reserved_block
, 0 , 0 , 32,
18693 0xfc00ffff, 0x2000eb7f, 0 , 0,
18694 0x0 }, /* POOL32Axf_5_group3~*(21) */
18695 { reserved_block
, 0 , 0 , 32,
18696 0xfc00ffff, 0x2000ed7f, 0 , 0,
18697 0x0 }, /* POOL32Axf_5_group3~*(22) */
18698 { reserved_block
, 0 , 0 , 32,
18699 0xfc00ffff, 0x2000ef7f, 0 , 0,
18700 0x0 }, /* POOL32Axf_5_group3~*(23) */
18701 { instruction
, 0 , 0 , 32,
18702 0xfc00ffff, 0x2000f17f, &NMD::WRPGPR
, 0,
18703 CP0_
}, /* WRPGPR */
18704 { pool
, ERETx
, 2 , 32,
18705 0xfc00ffff, 0x2000f37f, 0 , 0,
18707 { reserved_block
, 0 , 0 , 32,
18708 0xfc00ffff, 0x2000f57f, 0 , 0,
18709 0x0 }, /* POOL32Axf_5_group3~*(26) */
18710 { reserved_block
, 0 , 0 , 32,
18711 0xfc00ffff, 0x2000f77f, 0 , 0,
18712 0x0 }, /* POOL32Axf_5_group3~*(27) */
18713 { reserved_block
, 0 , 0 , 32,
18714 0xfc00ffff, 0x2000f97f, 0 , 0,
18715 0x0 }, /* POOL32Axf_5_group3~*(28) */
18716 { reserved_block
, 0 , 0 , 32,
18717 0xfc00ffff, 0x2000fb7f, 0 , 0,
18718 0x0 }, /* POOL32Axf_5_group3~*(29) */
18719 { reserved_block
, 0 , 0 , 32,
18720 0xfc00ffff, 0x2000fd7f, 0 , 0,
18721 0x0 }, /* POOL32Axf_5_group3~*(30) */
18722 { reserved_block
, 0 , 0 , 32,
18723 0xfc00ffff, 0x2000ff7f, 0 , 0,
18724 0x0 }, /* POOL32Axf_5_group3~*(31) */
18728 NMD::Pool
NMD::POOL32Axf_5
[4] = {
18729 { pool
, POOL32Axf_5_group0
, 32 , 32,
18730 0xfc00c1ff, 0x2000017f, 0 , 0,
18731 0x0 }, /* POOL32Axf_5_group0 */
18732 { pool
, POOL32Axf_5_group1
, 32 , 32,
18733 0xfc00c1ff, 0x2000417f, 0 , 0,
18734 0x0 }, /* POOL32Axf_5_group1 */
18735 { reserved_block
, 0 , 0 , 32,
18736 0xfc00c1ff, 0x2000817f, 0 , 0,
18737 0x0 }, /* POOL32Axf_5~*(2) */
18738 { pool
, POOL32Axf_5_group3
, 32 , 32,
18739 0xfc00c1ff, 0x2000c17f, 0 , 0,
18740 0x0 }, /* POOL32Axf_5_group3 */
18744 NMD::Pool
NMD::SHRA__R__QB
[2] = {
18745 { instruction
, 0 , 0 , 32,
18746 0xfc001fff, 0x200001ff, &NMD::SHRA_QB
, 0,
18747 DSP_
}, /* SHRA.QB */
18748 { instruction
, 0 , 0 , 32,
18749 0xfc001fff, 0x200011ff, &NMD::SHRA_R_QB
, 0,
18750 DSP_
}, /* SHRA_R.QB */
18754 NMD::Pool
NMD::POOL32Axf_7
[8] = {
18755 { pool
, SHRA__R__QB
, 2 , 32,
18756 0xfc000fff, 0x200001ff, 0 , 0,
18757 0x0 }, /* SHRA[_R].QB */
18758 { instruction
, 0 , 0 , 32,
18759 0xfc000fff, 0x200003ff, &NMD::SHRL_PH
, 0,
18760 DSP_
}, /* SHRL.PH */
18761 { instruction
, 0 , 0 , 32,
18762 0xfc000fff, 0x200005ff, &NMD::REPL_QB
, 0,
18763 DSP_
}, /* REPL.QB */
18764 { reserved_block
, 0 , 0 , 32,
18765 0xfc000fff, 0x200007ff, 0 , 0,
18766 0x0 }, /* POOL32Axf_7~*(3) */
18767 { reserved_block
, 0 , 0 , 32,
18768 0xfc000fff, 0x200009ff, 0 , 0,
18769 0x0 }, /* POOL32Axf_7~*(4) */
18770 { reserved_block
, 0 , 0 , 32,
18771 0xfc000fff, 0x20000bff, 0 , 0,
18772 0x0 }, /* POOL32Axf_7~*(5) */
18773 { reserved_block
, 0 , 0 , 32,
18774 0xfc000fff, 0x20000dff, 0 , 0,
18775 0x0 }, /* POOL32Axf_7~*(6) */
18776 { reserved_block
, 0 , 0 , 32,
18777 0xfc000fff, 0x20000fff, 0 , 0,
18778 0x0 }, /* POOL32Axf_7~*(7) */
18782 NMD::Pool
NMD::POOL32Axf
[8] = {
18783 { reserved_block
, 0 , 0 , 32,
18784 0xfc0001ff, 0x2000003f, 0 , 0,
18785 0x0 }, /* POOL32Axf~*(0) */
18786 { pool
, POOL32Axf_1
, 8 , 32,
18787 0xfc0001ff, 0x2000007f, 0 , 0,
18788 0x0 }, /* POOL32Axf_1 */
18789 { pool
, POOL32Axf_2
, 4 , 32,
18790 0xfc0001ff, 0x200000bf, 0 , 0,
18791 0x0 }, /* POOL32Axf_2 */
18792 { reserved_block
, 0 , 0 , 32,
18793 0xfc0001ff, 0x200000ff, 0 , 0,
18794 0x0 }, /* POOL32Axf~*(3) */
18795 { pool
, POOL32Axf_4
, 128 , 32,
18796 0xfc0001ff, 0x2000013f, 0 , 0,
18797 0x0 }, /* POOL32Axf_4 */
18798 { pool
, POOL32Axf_5
, 4 , 32,
18799 0xfc0001ff, 0x2000017f, 0 , 0,
18800 0x0 }, /* POOL32Axf_5 */
18801 { reserved_block
, 0 , 0 , 32,
18802 0xfc0001ff, 0x200001bf, 0 , 0,
18803 0x0 }, /* POOL32Axf~*(6) */
18804 { pool
, POOL32Axf_7
, 8 , 32,
18805 0xfc0001ff, 0x200001ff, 0 , 0,
18806 0x0 }, /* POOL32Axf_7 */
18810 NMD::Pool
NMD::_POOL32A7
[8] = {
18811 { pool
, P_LSX
, 2 , 32,
18812 0xfc00003f, 0x20000007, 0 , 0,
18814 { instruction
, 0 , 0 , 32,
18815 0xfc00003f, 0x2000000f, &NMD::LSA
, 0,
18817 { reserved_block
, 0 , 0 , 32,
18818 0xfc00003f, 0x20000017, 0 , 0,
18819 0x0 }, /* _POOL32A7~*(2) */
18820 { instruction
, 0 , 0 , 32,
18821 0xfc00003f, 0x2000001f, &NMD::EXTW
, 0,
18823 { reserved_block
, 0 , 0 , 32,
18824 0xfc00003f, 0x20000027, 0 , 0,
18825 0x0 }, /* _POOL32A7~*(4) */
18826 { reserved_block
, 0 , 0 , 32,
18827 0xfc00003f, 0x2000002f, 0 , 0,
18828 0x0 }, /* _POOL32A7~*(5) */
18829 { reserved_block
, 0 , 0 , 32,
18830 0xfc00003f, 0x20000037, 0 , 0,
18831 0x0 }, /* _POOL32A7~*(6) */
18832 { pool
, POOL32Axf
, 8 , 32,
18833 0xfc00003f, 0x2000003f, 0 , 0,
18834 0x0 }, /* POOL32Axf */
18838 NMD::Pool
NMD::P32A
[8] = {
18839 { pool
, _POOL32A0
, 128 , 32,
18840 0xfc000007, 0x20000000, 0 , 0,
18841 0x0 }, /* _POOL32A0 */
18842 { instruction
, 0 , 0 , 32,
18843 0xfc000007, 0x20000001, &NMD::SPECIAL2
, 0,
18844 UDI_
}, /* SPECIAL2 */
18845 { instruction
, 0 , 0 , 32,
18846 0xfc000007, 0x20000002, &NMD::COP2_1
, 0,
18847 CP2_
}, /* COP2_1 */
18848 { instruction
, 0 , 0 , 32,
18849 0xfc000007, 0x20000003, &NMD::UDI
, 0,
18851 { reserved_block
, 0 , 0 , 32,
18852 0xfc000007, 0x20000004, 0 , 0,
18853 0x0 }, /* P32A~*(4) */
18854 { pool
, _POOL32A5
, 128 , 32,
18855 0xfc000007, 0x20000005, 0 , 0,
18856 0x0 }, /* _POOL32A5 */
18857 { reserved_block
, 0 , 0 , 32,
18858 0xfc000007, 0x20000006, 0 , 0,
18859 0x0 }, /* P32A~*(6) */
18860 { pool
, _POOL32A7
, 8 , 32,
18861 0xfc000007, 0x20000007, 0 , 0,
18862 0x0 }, /* _POOL32A7 */
18866 NMD::Pool
NMD::P_GP_D
[2] = {
18867 { instruction
, 0 , 0 , 32,
18868 0xfc000007, 0x40000001, &NMD::LD_GP_
, 0,
18869 MIPS64_
}, /* LD[GP] */
18870 { instruction
, 0 , 0 , 32,
18871 0xfc000007, 0x40000005, &NMD::SD_GP_
, 0,
18872 MIPS64_
}, /* SD[GP] */
18876 NMD::Pool
NMD::P_GP_W
[4] = {
18877 { instruction
, 0 , 0 , 32,
18878 0xfc000003, 0x40000000, &NMD::ADDIU_GP_W_
, 0,
18879 0x0 }, /* ADDIU[GP.W] */
18880 { pool
, P_GP_D
, 2 , 32,
18881 0xfc000003, 0x40000001, 0 , 0,
18882 0x0 }, /* P.GP.D */
18883 { instruction
, 0 , 0 , 32,
18884 0xfc000003, 0x40000002, &NMD::LW_GP_
, 0,
18885 0x0 }, /* LW[GP] */
18886 { instruction
, 0 , 0 , 32,
18887 0xfc000003, 0x40000003, &NMD::SW_GP_
, 0,
18888 0x0 }, /* SW[GP] */
18892 NMD::Pool
NMD::POOL48I
[32] = {
18893 { instruction
, 0 , 0 , 48,
18894 0xfc1f00000000ull
, 0x600000000000ull
, &NMD::LI_48_
, 0,
18895 XMMS_
}, /* LI[48] */
18896 { instruction
, 0 , 0 , 48,
18897 0xfc1f00000000ull
, 0x600100000000ull
, &NMD::ADDIU_48_
, 0,
18898 XMMS_
}, /* ADDIU[48] */
18899 { instruction
, 0 , 0 , 48,
18900 0xfc1f00000000ull
, 0x600200000000ull
, &NMD::ADDIU_GP48_
, 0,
18901 XMMS_
}, /* ADDIU[GP48] */
18902 { instruction
, 0 , 0 , 48,
18903 0xfc1f00000000ull
, 0x600300000000ull
, &NMD::ADDIUPC_48_
, 0,
18904 XMMS_
}, /* ADDIUPC[48] */
18905 { reserved_block
, 0 , 0 , 48,
18906 0xfc1f00000000ull
, 0x600400000000ull
, 0 , 0,
18907 0x0 }, /* POOL48I~*(4) */
18908 { reserved_block
, 0 , 0 , 48,
18909 0xfc1f00000000ull
, 0x600500000000ull
, 0 , 0,
18910 0x0 }, /* POOL48I~*(5) */
18911 { reserved_block
, 0 , 0 , 48,
18912 0xfc1f00000000ull
, 0x600600000000ull
, 0 , 0,
18913 0x0 }, /* POOL48I~*(6) */
18914 { reserved_block
, 0 , 0 , 48,
18915 0xfc1f00000000ull
, 0x600700000000ull
, 0 , 0,
18916 0x0 }, /* POOL48I~*(7) */
18917 { reserved_block
, 0 , 0 , 48,
18918 0xfc1f00000000ull
, 0x600800000000ull
, 0 , 0,
18919 0x0 }, /* POOL48I~*(8) */
18920 { reserved_block
, 0 , 0 , 48,
18921 0xfc1f00000000ull
, 0x600900000000ull
, 0 , 0,
18922 0x0 }, /* POOL48I~*(9) */
18923 { reserved_block
, 0 , 0 , 48,
18924 0xfc1f00000000ull
, 0x600a00000000ull
, 0 , 0,
18925 0x0 }, /* POOL48I~*(10) */
18926 { instruction
, 0 , 0 , 48,
18927 0xfc1f00000000ull
, 0x600b00000000ull
, &NMD::LWPC_48_
, 0,
18928 XMMS_
}, /* LWPC[48] */
18929 { reserved_block
, 0 , 0 , 48,
18930 0xfc1f00000000ull
, 0x600c00000000ull
, 0 , 0,
18931 0x0 }, /* POOL48I~*(12) */
18932 { reserved_block
, 0 , 0 , 48,
18933 0xfc1f00000000ull
, 0x600d00000000ull
, 0 , 0,
18934 0x0 }, /* POOL48I~*(13) */
18935 { reserved_block
, 0 , 0 , 48,
18936 0xfc1f00000000ull
, 0x600e00000000ull
, 0 , 0,
18937 0x0 }, /* POOL48I~*(14) */
18938 { instruction
, 0 , 0 , 48,
18939 0xfc1f00000000ull
, 0x600f00000000ull
, &NMD::SWPC_48_
, 0,
18940 XMMS_
}, /* SWPC[48] */
18941 { reserved_block
, 0 , 0 , 48,
18942 0xfc1f00000000ull
, 0x601000000000ull
, 0 , 0,
18943 0x0 }, /* POOL48I~*(16) */
18944 { instruction
, 0 , 0 , 48,
18945 0xfc1f00000000ull
, 0x601100000000ull
, &NMD::DADDIU_48_
, 0,
18946 MIPS64_
}, /* DADDIU[48] */
18947 { reserved_block
, 0 , 0 , 48,
18948 0xfc1f00000000ull
, 0x601200000000ull
, 0 , 0,
18949 0x0 }, /* POOL48I~*(18) */
18950 { reserved_block
, 0 , 0 , 48,
18951 0xfc1f00000000ull
, 0x601300000000ull
, 0 , 0,
18952 0x0 }, /* POOL48I~*(19) */
18953 { instruction
, 0 , 0 , 48,
18954 0xfc1f00000000ull
, 0x601400000000ull
, &NMD::DLUI_48_
, 0,
18955 MIPS64_
}, /* DLUI[48] */
18956 { reserved_block
, 0 , 0 , 48,
18957 0xfc1f00000000ull
, 0x601500000000ull
, 0 , 0,
18958 0x0 }, /* POOL48I~*(21) */
18959 { reserved_block
, 0 , 0 , 48,
18960 0xfc1f00000000ull
, 0x601600000000ull
, 0 , 0,
18961 0x0 }, /* POOL48I~*(22) */
18962 { reserved_block
, 0 , 0 , 48,
18963 0xfc1f00000000ull
, 0x601700000000ull
, 0 , 0,
18964 0x0 }, /* POOL48I~*(23) */
18965 { reserved_block
, 0 , 0 , 48,
18966 0xfc1f00000000ull
, 0x601800000000ull
, 0 , 0,
18967 0x0 }, /* POOL48I~*(24) */
18968 { reserved_block
, 0 , 0 , 48,
18969 0xfc1f00000000ull
, 0x601900000000ull
, 0 , 0,
18970 0x0 }, /* POOL48I~*(25) */
18971 { reserved_block
, 0 , 0 , 48,
18972 0xfc1f00000000ull
, 0x601a00000000ull
, 0 , 0,
18973 0x0 }, /* POOL48I~*(26) */
18974 { instruction
, 0 , 0 , 48,
18975 0xfc1f00000000ull
, 0x601b00000000ull
, &NMD::LDPC_48_
, 0,
18976 MIPS64_
}, /* LDPC[48] */
18977 { reserved_block
, 0 , 0 , 48,
18978 0xfc1f00000000ull
, 0x601c00000000ull
, 0 , 0,
18979 0x0 }, /* POOL48I~*(28) */
18980 { reserved_block
, 0 , 0 , 48,
18981 0xfc1f00000000ull
, 0x601d00000000ull
, 0 , 0,
18982 0x0 }, /* POOL48I~*(29) */
18983 { reserved_block
, 0 , 0 , 48,
18984 0xfc1f00000000ull
, 0x601e00000000ull
, 0 , 0,
18985 0x0 }, /* POOL48I~*(30) */
18986 { instruction
, 0 , 0 , 48,
18987 0xfc1f00000000ull
, 0x601f00000000ull
, &NMD::SDPC_48_
, 0,
18988 MIPS64_
}, /* SDPC[48] */
18992 NMD::Pool
NMD::PP_SR
[4] = {
18993 { instruction
, 0 , 0 , 32,
18994 0xfc10f003, 0x80003000, &NMD::SAVE_32_
, 0,
18995 0x0 }, /* SAVE[32] */
18996 { reserved_block
, 0 , 0 , 32,
18997 0xfc10f003, 0x80003001, 0 , 0,
18998 0x0 }, /* PP.SR~*(1) */
18999 { instruction
, 0 , 0 , 32,
19000 0xfc10f003, 0x80003002, &NMD::RESTORE_32_
, 0,
19001 0x0 }, /* RESTORE[32] */
19002 { return_instruction
, 0 , 0 , 32,
19003 0xfc10f003, 0x80003003, &NMD::RESTORE_JRC_32_
, 0,
19004 0x0 }, /* RESTORE.JRC[32] */
19008 NMD::Pool
NMD::P_SR_F
[8] = {
19009 { instruction
, 0 , 0 , 32,
19010 0xfc10f007, 0x80103000, &NMD::SAVEF
, 0,
19011 CP1_
}, /* SAVEF */
19012 { instruction
, 0 , 0 , 32,
19013 0xfc10f007, 0x80103001, &NMD::RESTOREF
, 0,
19014 CP1_
}, /* RESTOREF */
19015 { reserved_block
, 0 , 0 , 32,
19016 0xfc10f007, 0x80103002, 0 , 0,
19017 0x0 }, /* P.SR.F~*(2) */
19018 { reserved_block
, 0 , 0 , 32,
19019 0xfc10f007, 0x80103003, 0 , 0,
19020 0x0 }, /* P.SR.F~*(3) */
19021 { reserved_block
, 0 , 0 , 32,
19022 0xfc10f007, 0x80103004, 0 , 0,
19023 0x0 }, /* P.SR.F~*(4) */
19024 { reserved_block
, 0 , 0 , 32,
19025 0xfc10f007, 0x80103005, 0 , 0,
19026 0x0 }, /* P.SR.F~*(5) */
19027 { reserved_block
, 0 , 0 , 32,
19028 0xfc10f007, 0x80103006, 0 , 0,
19029 0x0 }, /* P.SR.F~*(6) */
19030 { reserved_block
, 0 , 0 , 32,
19031 0xfc10f007, 0x80103007, 0 , 0,
19032 0x0 }, /* P.SR.F~*(7) */
19036 NMD::Pool
NMD::P_SR
[2] = {
19037 { pool
, PP_SR
, 4 , 32,
19038 0xfc10f000, 0x80003000, 0 , 0,
19040 { pool
, P_SR_F
, 8 , 32,
19041 0xfc10f000, 0x80103000, 0 , 0,
19042 0x0 }, /* P.SR.F */
19046 NMD::Pool
NMD::P_SLL
[5] = {
19047 { instruction
, 0 , 0 , 32,
19048 0xffe0f1ff, 0x8000c000, &NMD::NOP_32_
, 0,
19049 0x0 }, /* NOP[32] */
19050 { instruction
, 0 , 0 , 32,
19051 0xffe0f1ff, 0x8000c003, &NMD::EHB
, 0,
19053 { instruction
, 0 , 0 , 32,
19054 0xffe0f1ff, 0x8000c005, &NMD::PAUSE
, 0,
19056 { instruction
, 0 , 0 , 32,
19057 0xffe0f1ff, 0x8000c006, &NMD::SYNC
, 0,
19059 { instruction
, 0 , 0 , 32,
19060 0xfc00f1e0, 0x8000c000, &NMD::SLL_32_
, 0,
19061 0x0 }, /* SLL[32] */
19065 NMD::Pool
NMD::P_SHIFT
[16] = {
19066 { pool
, P_SLL
, 5 , 32,
19067 0xfc00f1e0, 0x8000c000, 0 , 0,
19069 { reserved_block
, 0 , 0 , 32,
19070 0xfc00f1e0, 0x8000c020, 0 , 0,
19071 0x0 }, /* P.SHIFT~*(1) */
19072 { instruction
, 0 , 0 , 32,
19073 0xfc00f1e0, 0x8000c040, &NMD::SRL_32_
, 0,
19074 0x0 }, /* SRL[32] */
19075 { reserved_block
, 0 , 0 , 32,
19076 0xfc00f1e0, 0x8000c060, 0 , 0,
19077 0x0 }, /* P.SHIFT~*(3) */
19078 { instruction
, 0 , 0 , 32,
19079 0xfc00f1e0, 0x8000c080, &NMD::SRA
, 0,
19081 { reserved_block
, 0 , 0 , 32,
19082 0xfc00f1e0, 0x8000c0a0, 0 , 0,
19083 0x0 }, /* P.SHIFT~*(5) */
19084 { instruction
, 0 , 0 , 32,
19085 0xfc00f1e0, 0x8000c0c0, &NMD::ROTR
, 0,
19087 { reserved_block
, 0 , 0 , 32,
19088 0xfc00f1e0, 0x8000c0e0, 0 , 0,
19089 0x0 }, /* P.SHIFT~*(7) */
19090 { instruction
, 0 , 0 , 32,
19091 0xfc00f1e0, 0x8000c100, &NMD::DSLL
, 0,
19092 MIPS64_
}, /* DSLL */
19093 { instruction
, 0 , 0 , 32,
19094 0xfc00f1e0, 0x8000c120, &NMD::DSLL32
, 0,
19095 MIPS64_
}, /* DSLL32 */
19096 { instruction
, 0 , 0 , 32,
19097 0xfc00f1e0, 0x8000c140, &NMD::DSRL
, 0,
19098 MIPS64_
}, /* DSRL */
19099 { instruction
, 0 , 0 , 32,
19100 0xfc00f1e0, 0x8000c160, &NMD::DSRL32
, 0,
19101 MIPS64_
}, /* DSRL32 */
19102 { instruction
, 0 , 0 , 32,
19103 0xfc00f1e0, 0x8000c180, &NMD::DSRA
, 0,
19104 MIPS64_
}, /* DSRA */
19105 { instruction
, 0 , 0 , 32,
19106 0xfc00f1e0, 0x8000c1a0, &NMD::DSRA32
, 0,
19107 MIPS64_
}, /* DSRA32 */
19108 { instruction
, 0 , 0 , 32,
19109 0xfc00f1e0, 0x8000c1c0, &NMD::DROTR
, 0,
19110 MIPS64_
}, /* DROTR */
19111 { instruction
, 0 , 0 , 32,
19112 0xfc00f1e0, 0x8000c1e0, &NMD::DROTR32
, 0,
19113 MIPS64_
}, /* DROTR32 */
19117 NMD::Pool
NMD::P_ROTX
[4] = {
19118 { instruction
, 0 , 0 , 32,
19119 0xfc00f820, 0x8000d000, &NMD::ROTX
, 0,
19120 XMMS_
}, /* ROTX */
19121 { reserved_block
, 0 , 0 , 32,
19122 0xfc00f820, 0x8000d020, 0 , 0,
19123 0x0 }, /* P.ROTX~*(1) */
19124 { reserved_block
, 0 , 0 , 32,
19125 0xfc00f820, 0x8000d800, 0 , 0,
19126 0x0 }, /* P.ROTX~*(2) */
19127 { reserved_block
, 0 , 0 , 32,
19128 0xfc00f820, 0x8000d820, 0 , 0,
19129 0x0 }, /* P.ROTX~*(3) */
19133 NMD::Pool
NMD::P_INS
[4] = {
19134 { instruction
, 0 , 0 , 32,
19135 0xfc00f820, 0x8000e000, &NMD::INS
, 0,
19137 { instruction
, 0 , 0 , 32,
19138 0xfc00f820, 0x8000e020, &NMD::DINSU
, 0,
19139 MIPS64_
}, /* DINSU */
19140 { instruction
, 0 , 0 , 32,
19141 0xfc00f820, 0x8000e800, &NMD::DINSM
, 0,
19142 MIPS64_
}, /* DINSM */
19143 { instruction
, 0 , 0 , 32,
19144 0xfc00f820, 0x8000e820, &NMD::DINS
, 0,
19145 MIPS64_
}, /* DINS */
19149 NMD::Pool
NMD::P_EXT
[4] = {
19150 { instruction
, 0 , 0 , 32,
19151 0xfc00f820, 0x8000f000, &NMD::EXT
, 0,
19153 { instruction
, 0 , 0 , 32,
19154 0xfc00f820, 0x8000f020, &NMD::DEXTU
, 0,
19155 MIPS64_
}, /* DEXTU */
19156 { instruction
, 0 , 0 , 32,
19157 0xfc00f820, 0x8000f800, &NMD::DEXTM
, 0,
19158 MIPS64_
}, /* DEXTM */
19159 { instruction
, 0 , 0 , 32,
19160 0xfc00f820, 0x8000f820, &NMD::DEXT
, 0,
19161 MIPS64_
}, /* DEXT */
19165 NMD::Pool
NMD::P_U12
[16] = {
19166 { instruction
, 0 , 0 , 32,
19167 0xfc00f000, 0x80000000, &NMD::ORI
, 0,
19169 { instruction
, 0 , 0 , 32,
19170 0xfc00f000, 0x80001000, &NMD::XORI
, 0,
19172 { instruction
, 0 , 0 , 32,
19173 0xfc00f000, 0x80002000, &NMD::ANDI_32_
, 0,
19174 0x0 }, /* ANDI[32] */
19175 { pool
, P_SR
, 2 , 32,
19176 0xfc00f000, 0x80003000, 0 , 0,
19178 { instruction
, 0 , 0 , 32,
19179 0xfc00f000, 0x80004000, &NMD::SLTI
, 0,
19181 { instruction
, 0 , 0 , 32,
19182 0xfc00f000, 0x80005000, &NMD::SLTIU
, 0,
19184 { instruction
, 0 , 0 , 32,
19185 0xfc00f000, 0x80006000, &NMD::SEQI
, 0,
19187 { reserved_block
, 0 , 0 , 32,
19188 0xfc00f000, 0x80007000, 0 , 0,
19189 0x0 }, /* P.U12~*(7) */
19190 { instruction
, 0 , 0 , 32,
19191 0xfc00f000, 0x80008000, &NMD::ADDIU_NEG_
, 0,
19192 0x0 }, /* ADDIU[NEG] */
19193 { instruction
, 0 , 0 , 32,
19194 0xfc00f000, 0x80009000, &NMD::DADDIU_U12_
, 0,
19195 MIPS64_
}, /* DADDIU[U12] */
19196 { instruction
, 0 , 0 , 32,
19197 0xfc00f000, 0x8000a000, &NMD::DADDIU_NEG_
, 0,
19198 MIPS64_
}, /* DADDIU[NEG] */
19199 { instruction
, 0 , 0 , 32,
19200 0xfc00f000, 0x8000b000, &NMD::DROTX
, 0,
19201 MIPS64_
}, /* DROTX */
19202 { pool
, P_SHIFT
, 16 , 32,
19203 0xfc00f000, 0x8000c000, 0 , 0,
19204 0x0 }, /* P.SHIFT */
19205 { pool
, P_ROTX
, 4 , 32,
19206 0xfc00f000, 0x8000d000, 0 , 0,
19207 0x0 }, /* P.ROTX */
19208 { pool
, P_INS
, 4 , 32,
19209 0xfc00f000, 0x8000e000, 0 , 0,
19211 { pool
, P_EXT
, 4 , 32,
19212 0xfc00f000, 0x8000f000, 0 , 0,
19217 NMD::Pool
NMD::RINT_fmt
[2] = {
19218 { instruction
, 0 , 0 , 32,
19219 0xfc0003ff, 0xa0000020, &NMD::RINT_S
, 0,
19220 CP1_
}, /* RINT.S */
19221 { instruction
, 0 , 0 , 32,
19222 0xfc0003ff, 0xa0000220, &NMD::RINT_D
, 0,
19223 CP1_
}, /* RINT.D */
19227 NMD::Pool
NMD::ADD_fmt0
[2] = {
19228 { instruction
, 0 , 0 , 32,
19229 0xfc0003ff, 0xa0000030, &NMD::ADD_S
, 0,
19230 CP1_
}, /* ADD.S */
19231 { reserved_block
, 0 , 0 , 32,
19232 0xfc0003ff, 0xa0000230, 0 , 0,
19233 CP1_
}, /* ADD.fmt0~*(1) */
19237 NMD::Pool
NMD::SELEQZ_fmt
[2] = {
19238 { instruction
, 0 , 0 , 32,
19239 0xfc0003ff, 0xa0000038, &NMD::SELEQZ_S
, 0,
19240 CP1_
}, /* SELEQZ.S */
19241 { instruction
, 0 , 0 , 32,
19242 0xfc0003ff, 0xa0000238, &NMD::SELEQZ_D
, 0,
19243 CP1_
}, /* SELEQZ.D */
19247 NMD::Pool
NMD::CLASS_fmt
[2] = {
19248 { instruction
, 0 , 0 , 32,
19249 0xfc0003ff, 0xa0000060, &NMD::CLASS_S
, 0,
19250 CP1_
}, /* CLASS.S */
19251 { instruction
, 0 , 0 , 32,
19252 0xfc0003ff, 0xa0000260, &NMD::CLASS_D
, 0,
19253 CP1_
}, /* CLASS.D */
19257 NMD::Pool
NMD::SUB_fmt0
[2] = {
19258 { instruction
, 0 , 0 , 32,
19259 0xfc0003ff, 0xa0000070, &NMD::SUB_S
, 0,
19260 CP1_
}, /* SUB.S */
19261 { reserved_block
, 0 , 0 , 32,
19262 0xfc0003ff, 0xa0000270, 0 , 0,
19263 CP1_
}, /* SUB.fmt0~*(1) */
19267 NMD::Pool
NMD::SELNEZ_fmt
[2] = {
19268 { instruction
, 0 , 0 , 32,
19269 0xfc0003ff, 0xa0000078, &NMD::SELNEZ_S
, 0,
19270 CP1_
}, /* SELNEZ.S */
19271 { instruction
, 0 , 0 , 32,
19272 0xfc0003ff, 0xa0000278, &NMD::SELNEZ_D
, 0,
19273 CP1_
}, /* SELNEZ.D */
19277 NMD::Pool
NMD::MUL_fmt0
[2] = {
19278 { instruction
, 0 , 0 , 32,
19279 0xfc0003ff, 0xa00000b0, &NMD::MUL_S
, 0,
19280 CP1_
}, /* MUL.S */
19281 { reserved_block
, 0 , 0 , 32,
19282 0xfc0003ff, 0xa00002b0, 0 , 0,
19283 CP1_
}, /* MUL.fmt0~*(1) */
19287 NMD::Pool
NMD::SEL_fmt
[2] = {
19288 { instruction
, 0 , 0 , 32,
19289 0xfc0003ff, 0xa00000b8, &NMD::SEL_S
, 0,
19290 CP1_
}, /* SEL.S */
19291 { instruction
, 0 , 0 , 32,
19292 0xfc0003ff, 0xa00002b8, &NMD::SEL_D
, 0,
19293 CP1_
}, /* SEL.D */
19297 NMD::Pool
NMD::DIV_fmt0
[2] = {
19298 { instruction
, 0 , 0 , 32,
19299 0xfc0003ff, 0xa00000f0, &NMD::DIV_S
, 0,
19300 CP1_
}, /* DIV.S */
19301 { reserved_block
, 0 , 0 , 32,
19302 0xfc0003ff, 0xa00002f0, 0 , 0,
19303 CP1_
}, /* DIV.fmt0~*(1) */
19307 NMD::Pool
NMD::ADD_fmt1
[2] = {
19308 { instruction
, 0 , 0 , 32,
19309 0xfc0003ff, 0xa0000130, &NMD::ADD_D
, 0,
19310 CP1_
}, /* ADD.D */
19311 { reserved_block
, 0 , 0 , 32,
19312 0xfc0003ff, 0xa0000330, 0 , 0,
19313 CP1_
}, /* ADD.fmt1~*(1) */
19317 NMD::Pool
NMD::SUB_fmt1
[2] = {
19318 { instruction
, 0 , 0 , 32,
19319 0xfc0003ff, 0xa0000170, &NMD::SUB_D
, 0,
19320 CP1_
}, /* SUB.D */
19321 { reserved_block
, 0 , 0 , 32,
19322 0xfc0003ff, 0xa0000370, 0 , 0,
19323 CP1_
}, /* SUB.fmt1~*(1) */
19327 NMD::Pool
NMD::MUL_fmt1
[2] = {
19328 { instruction
, 0 , 0 , 32,
19329 0xfc0003ff, 0xa00001b0, &NMD::MUL_D
, 0,
19330 CP1_
}, /* MUL.D */
19331 { reserved_block
, 0 , 0 , 32,
19332 0xfc0003ff, 0xa00003b0, 0 , 0,
19333 CP1_
}, /* MUL.fmt1~*(1) */
19337 NMD::Pool
NMD::MADDF_fmt
[2] = {
19338 { instruction
, 0 , 0 , 32,
19339 0xfc0003ff, 0xa00001b8, &NMD::MADDF_S
, 0,
19340 CP1_
}, /* MADDF.S */
19341 { instruction
, 0 , 0 , 32,
19342 0xfc0003ff, 0xa00003b8, &NMD::MADDF_D
, 0,
19343 CP1_
}, /* MADDF.D */
19347 NMD::Pool
NMD::DIV_fmt1
[2] = {
19348 { instruction
, 0 , 0 , 32,
19349 0xfc0003ff, 0xa00001f0, &NMD::DIV_D
, 0,
19350 CP1_
}, /* DIV.D */
19351 { reserved_block
, 0 , 0 , 32,
19352 0xfc0003ff, 0xa00003f0, 0 , 0,
19353 CP1_
}, /* DIV.fmt1~*(1) */
19357 NMD::Pool
NMD::MSUBF_fmt
[2] = {
19358 { instruction
, 0 , 0 , 32,
19359 0xfc0003ff, 0xa00001f8, &NMD::MSUBF_S
, 0,
19360 CP1_
}, /* MSUBF.S */
19361 { instruction
, 0 , 0 , 32,
19362 0xfc0003ff, 0xa00003f8, &NMD::MSUBF_D
, 0,
19363 CP1_
}, /* MSUBF.D */
19367 NMD::Pool
NMD::POOL32F_0
[64] = {
19368 { reserved_block
, 0 , 0 , 32,
19369 0xfc0001ff, 0xa0000000, 0 , 0,
19370 CP1_
}, /* POOL32F_0~*(0) */
19371 { reserved_block
, 0 , 0 , 32,
19372 0xfc0001ff, 0xa0000008, 0 , 0,
19373 CP1_
}, /* POOL32F_0~*(1) */
19374 { reserved_block
, 0 , 0 , 32,
19375 0xfc0001ff, 0xa0000010, 0 , 0,
19376 CP1_
}, /* POOL32F_0~*(2) */
19377 { reserved_block
, 0 , 0 , 32,
19378 0xfc0001ff, 0xa0000018, 0 , 0,
19379 CP1_
}, /* POOL32F_0~*(3) */
19380 { pool
, RINT_fmt
, 2 , 32,
19381 0xfc0001ff, 0xa0000020, 0 , 0,
19382 CP1_
}, /* RINT.fmt */
19383 { reserved_block
, 0 , 0 , 32,
19384 0xfc0001ff, 0xa0000028, 0 , 0,
19385 CP1_
}, /* POOL32F_0~*(5) */
19386 { pool
, ADD_fmt0
, 2 , 32,
19387 0xfc0001ff, 0xa0000030, 0 , 0,
19388 CP1_
}, /* ADD.fmt0 */
19389 { pool
, SELEQZ_fmt
, 2 , 32,
19390 0xfc0001ff, 0xa0000038, 0 , 0,
19391 CP1_
}, /* SELEQZ.fmt */
19392 { reserved_block
, 0 , 0 , 32,
19393 0xfc0001ff, 0xa0000040, 0 , 0,
19394 CP1_
}, /* POOL32F_0~*(8) */
19395 { reserved_block
, 0 , 0 , 32,
19396 0xfc0001ff, 0xa0000048, 0 , 0,
19397 CP1_
}, /* POOL32F_0~*(9) */
19398 { reserved_block
, 0 , 0 , 32,
19399 0xfc0001ff, 0xa0000050, 0 , 0,
19400 CP1_
}, /* POOL32F_0~*(10) */
19401 { reserved_block
, 0 , 0 , 32,
19402 0xfc0001ff, 0xa0000058, 0 , 0,
19403 CP1_
}, /* POOL32F_0~*(11) */
19404 { pool
, CLASS_fmt
, 2 , 32,
19405 0xfc0001ff, 0xa0000060, 0 , 0,
19406 CP1_
}, /* CLASS.fmt */
19407 { reserved_block
, 0 , 0 , 32,
19408 0xfc0001ff, 0xa0000068, 0 , 0,
19409 CP1_
}, /* POOL32F_0~*(13) */
19410 { pool
, SUB_fmt0
, 2 , 32,
19411 0xfc0001ff, 0xa0000070, 0 , 0,
19412 CP1_
}, /* SUB.fmt0 */
19413 { pool
, SELNEZ_fmt
, 2 , 32,
19414 0xfc0001ff, 0xa0000078, 0 , 0,
19415 CP1_
}, /* SELNEZ.fmt */
19416 { reserved_block
, 0 , 0 , 32,
19417 0xfc0001ff, 0xa0000080, 0 , 0,
19418 CP1_
}, /* POOL32F_0~*(16) */
19419 { reserved_block
, 0 , 0 , 32,
19420 0xfc0001ff, 0xa0000088, 0 , 0,
19421 CP1_
}, /* POOL32F_0~*(17) */
19422 { reserved_block
, 0 , 0 , 32,
19423 0xfc0001ff, 0xa0000090, 0 , 0,
19424 CP1_
}, /* POOL32F_0~*(18) */
19425 { reserved_block
, 0 , 0 , 32,
19426 0xfc0001ff, 0xa0000098, 0 , 0,
19427 CP1_
}, /* POOL32F_0~*(19) */
19428 { reserved_block
, 0 , 0 , 32,
19429 0xfc0001ff, 0xa00000a0, 0 , 0,
19430 CP1_
}, /* POOL32F_0~*(20) */
19431 { reserved_block
, 0 , 0 , 32,
19432 0xfc0001ff, 0xa00000a8, 0 , 0,
19433 CP1_
}, /* POOL32F_0~*(21) */
19434 { pool
, MUL_fmt0
, 2 , 32,
19435 0xfc0001ff, 0xa00000b0, 0 , 0,
19436 CP1_
}, /* MUL.fmt0 */
19437 { pool
, SEL_fmt
, 2 , 32,
19438 0xfc0001ff, 0xa00000b8, 0 , 0,
19439 CP1_
}, /* SEL.fmt */
19440 { reserved_block
, 0 , 0 , 32,
19441 0xfc0001ff, 0xa00000c0, 0 , 0,
19442 CP1_
}, /* POOL32F_0~*(24) */
19443 { reserved_block
, 0 , 0 , 32,
19444 0xfc0001ff, 0xa00000c8, 0 , 0,
19445 CP1_
}, /* POOL32F_0~*(25) */
19446 { reserved_block
, 0 , 0 , 32,
19447 0xfc0001ff, 0xa00000d0, 0 , 0,
19448 CP1_
}, /* POOL32F_0~*(26) */
19449 { reserved_block
, 0 , 0 , 32,
19450 0xfc0001ff, 0xa00000d8, 0 , 0,
19451 CP1_
}, /* POOL32F_0~*(27) */
19452 { reserved_block
, 0 , 0 , 32,
19453 0xfc0001ff, 0xa00000e0, 0 , 0,
19454 CP1_
}, /* POOL32F_0~*(28) */
19455 { reserved_block
, 0 , 0 , 32,
19456 0xfc0001ff, 0xa00000e8, 0 , 0,
19457 CP1_
}, /* POOL32F_0~*(29) */
19458 { pool
, DIV_fmt0
, 2 , 32,
19459 0xfc0001ff, 0xa00000f0, 0 , 0,
19460 CP1_
}, /* DIV.fmt0 */
19461 { reserved_block
, 0 , 0 , 32,
19462 0xfc0001ff, 0xa00000f8, 0 , 0,
19463 CP1_
}, /* POOL32F_0~*(31) */
19464 { reserved_block
, 0 , 0 , 32,
19465 0xfc0001ff, 0xa0000100, 0 , 0,
19466 CP1_
}, /* POOL32F_0~*(32) */
19467 { reserved_block
, 0 , 0 , 32,
19468 0xfc0001ff, 0xa0000108, 0 , 0,
19469 CP1_
}, /* POOL32F_0~*(33) */
19470 { reserved_block
, 0 , 0 , 32,
19471 0xfc0001ff, 0xa0000110, 0 , 0,
19472 CP1_
}, /* POOL32F_0~*(34) */
19473 { reserved_block
, 0 , 0 , 32,
19474 0xfc0001ff, 0xa0000118, 0 , 0,
19475 CP1_
}, /* POOL32F_0~*(35) */
19476 { reserved_block
, 0 , 0 , 32,
19477 0xfc0001ff, 0xa0000120, 0 , 0,
19478 CP1_
}, /* POOL32F_0~*(36) */
19479 { reserved_block
, 0 , 0 , 32,
19480 0xfc0001ff, 0xa0000128, 0 , 0,
19481 CP1_
}, /* POOL32F_0~*(37) */
19482 { pool
, ADD_fmt1
, 2 , 32,
19483 0xfc0001ff, 0xa0000130, 0 , 0,
19484 CP1_
}, /* ADD.fmt1 */
19485 { reserved_block
, 0 , 0 , 32,
19486 0xfc0001ff, 0xa0000138, 0 , 0,
19487 CP1_
}, /* POOL32F_0~*(39) */
19488 { reserved_block
, 0 , 0 , 32,
19489 0xfc0001ff, 0xa0000140, 0 , 0,
19490 CP1_
}, /* POOL32F_0~*(40) */
19491 { reserved_block
, 0 , 0 , 32,
19492 0xfc0001ff, 0xa0000148, 0 , 0,
19493 CP1_
}, /* POOL32F_0~*(41) */
19494 { reserved_block
, 0 , 0 , 32,
19495 0xfc0001ff, 0xa0000150, 0 , 0,
19496 CP1_
}, /* POOL32F_0~*(42) */
19497 { reserved_block
, 0 , 0 , 32,
19498 0xfc0001ff, 0xa0000158, 0 , 0,
19499 CP1_
}, /* POOL32F_0~*(43) */
19500 { reserved_block
, 0 , 0 , 32,
19501 0xfc0001ff, 0xa0000160, 0 , 0,
19502 CP1_
}, /* POOL32F_0~*(44) */
19503 { reserved_block
, 0 , 0 , 32,
19504 0xfc0001ff, 0xa0000168, 0 , 0,
19505 CP1_
}, /* POOL32F_0~*(45) */
19506 { pool
, SUB_fmt1
, 2 , 32,
19507 0xfc0001ff, 0xa0000170, 0 , 0,
19508 CP1_
}, /* SUB.fmt1 */
19509 { reserved_block
, 0 , 0 , 32,
19510 0xfc0001ff, 0xa0000178, 0 , 0,
19511 CP1_
}, /* POOL32F_0~*(47) */
19512 { reserved_block
, 0 , 0 , 32,
19513 0xfc0001ff, 0xa0000180, 0 , 0,
19514 CP1_
}, /* POOL32F_0~*(48) */
19515 { reserved_block
, 0 , 0 , 32,
19516 0xfc0001ff, 0xa0000188, 0 , 0,
19517 CP1_
}, /* POOL32F_0~*(49) */
19518 { reserved_block
, 0 , 0 , 32,
19519 0xfc0001ff, 0xa0000190, 0 , 0,
19520 CP1_
}, /* POOL32F_0~*(50) */
19521 { reserved_block
, 0 , 0 , 32,
19522 0xfc0001ff, 0xa0000198, 0 , 0,
19523 CP1_
}, /* POOL32F_0~*(51) */
19524 { reserved_block
, 0 , 0 , 32,
19525 0xfc0001ff, 0xa00001a0, 0 , 0,
19526 CP1_
}, /* POOL32F_0~*(52) */
19527 { reserved_block
, 0 , 0 , 32,
19528 0xfc0001ff, 0xa00001a8, 0 , 0,
19529 CP1_
}, /* POOL32F_0~*(53) */
19530 { pool
, MUL_fmt1
, 2 , 32,
19531 0xfc0001ff, 0xa00001b0, 0 , 0,
19532 CP1_
}, /* MUL.fmt1 */
19533 { pool
, MADDF_fmt
, 2 , 32,
19534 0xfc0001ff, 0xa00001b8, 0 , 0,
19535 CP1_
}, /* MADDF.fmt */
19536 { reserved_block
, 0 , 0 , 32,
19537 0xfc0001ff, 0xa00001c0, 0 , 0,
19538 CP1_
}, /* POOL32F_0~*(56) */
19539 { reserved_block
, 0 , 0 , 32,
19540 0xfc0001ff, 0xa00001c8, 0 , 0,
19541 CP1_
}, /* POOL32F_0~*(57) */
19542 { reserved_block
, 0 , 0 , 32,
19543 0xfc0001ff, 0xa00001d0, 0 , 0,
19544 CP1_
}, /* POOL32F_0~*(58) */
19545 { reserved_block
, 0 , 0 , 32,
19546 0xfc0001ff, 0xa00001d8, 0 , 0,
19547 CP1_
}, /* POOL32F_0~*(59) */
19548 { reserved_block
, 0 , 0 , 32,
19549 0xfc0001ff, 0xa00001e0, 0 , 0,
19550 CP1_
}, /* POOL32F_0~*(60) */
19551 { reserved_block
, 0 , 0 , 32,
19552 0xfc0001ff, 0xa00001e8, 0 , 0,
19553 CP1_
}, /* POOL32F_0~*(61) */
19554 { pool
, DIV_fmt1
, 2 , 32,
19555 0xfc0001ff, 0xa00001f0, 0 , 0,
19556 CP1_
}, /* DIV.fmt1 */
19557 { pool
, MSUBF_fmt
, 2 , 32,
19558 0xfc0001ff, 0xa00001f8, 0 , 0,
19559 CP1_
}, /* MSUBF.fmt */
19563 NMD::Pool
NMD::MIN_fmt
[2] = {
19564 { instruction
, 0 , 0 , 32,
19565 0xfc00023f, 0xa0000003, &NMD::MIN_S
, 0,
19566 CP1_
}, /* MIN.S */
19567 { instruction
, 0 , 0 , 32,
19568 0xfc00023f, 0xa0000203, &NMD::MIN_D
, 0,
19569 CP1_
}, /* MIN.D */
19573 NMD::Pool
NMD::MAX_fmt
[2] = {
19574 { instruction
, 0 , 0 , 32,
19575 0xfc00023f, 0xa000000b, &NMD::MAX_S
, 0,
19576 CP1_
}, /* MAX.S */
19577 { instruction
, 0 , 0 , 32,
19578 0xfc00023f, 0xa000020b, &NMD::MAX_D
, 0,
19579 CP1_
}, /* MAX.D */
19583 NMD::Pool
NMD::MINA_fmt
[2] = {
19584 { instruction
, 0 , 0 , 32,
19585 0xfc00023f, 0xa0000023, &NMD::MINA_S
, 0,
19586 CP1_
}, /* MINA.S */
19587 { instruction
, 0 , 0 , 32,
19588 0xfc00023f, 0xa0000223, &NMD::MINA_D
, 0,
19589 CP1_
}, /* MINA.D */
19593 NMD::Pool
NMD::MAXA_fmt
[2] = {
19594 { instruction
, 0 , 0 , 32,
19595 0xfc00023f, 0xa000002b, &NMD::MAXA_S
, 0,
19596 CP1_
}, /* MAXA.S */
19597 { instruction
, 0 , 0 , 32,
19598 0xfc00023f, 0xa000022b, &NMD::MAXA_D
, 0,
19599 CP1_
}, /* MAXA.D */
19603 NMD::Pool
NMD::CVT_L_fmt
[2] = {
19604 { instruction
, 0 , 0 , 32,
19605 0xfc007fff, 0xa000013b, &NMD::CVT_L_S
, 0,
19606 CP1_
}, /* CVT.L.S */
19607 { instruction
, 0 , 0 , 32,
19608 0xfc007fff, 0xa000413b, &NMD::CVT_L_D
, 0,
19609 CP1_
}, /* CVT.L.D */
19613 NMD::Pool
NMD::RSQRT_fmt
[2] = {
19614 { instruction
, 0 , 0 , 32,
19615 0xfc007fff, 0xa000023b, &NMD::RSQRT_S
, 0,
19616 CP1_
}, /* RSQRT.S */
19617 { instruction
, 0 , 0 , 32,
19618 0xfc007fff, 0xa000423b, &NMD::RSQRT_D
, 0,
19619 CP1_
}, /* RSQRT.D */
19623 NMD::Pool
NMD::FLOOR_L_fmt
[2] = {
19624 { instruction
, 0 , 0 , 32,
19625 0xfc007fff, 0xa000033b, &NMD::FLOOR_L_S
, 0,
19626 CP1_
}, /* FLOOR.L.S */
19627 { instruction
, 0 , 0 , 32,
19628 0xfc007fff, 0xa000433b, &NMD::FLOOR_L_D
, 0,
19629 CP1_
}, /* FLOOR.L.D */
19633 NMD::Pool
NMD::CVT_W_fmt
[2] = {
19634 { instruction
, 0 , 0 , 32,
19635 0xfc007fff, 0xa000093b, &NMD::CVT_W_S
, 0,
19636 CP1_
}, /* CVT.W.S */
19637 { instruction
, 0 , 0 , 32,
19638 0xfc007fff, 0xa000493b, &NMD::CVT_W_D
, 0,
19639 CP1_
}, /* CVT.W.D */
19643 NMD::Pool
NMD::SQRT_fmt
[2] = {
19644 { instruction
, 0 , 0 , 32,
19645 0xfc007fff, 0xa0000a3b, &NMD::SQRT_S
, 0,
19646 CP1_
}, /* SQRT.S */
19647 { instruction
, 0 , 0 , 32,
19648 0xfc007fff, 0xa0004a3b, &NMD::SQRT_D
, 0,
19649 CP1_
}, /* SQRT.D */
19653 NMD::Pool
NMD::FLOOR_W_fmt
[2] = {
19654 { instruction
, 0 , 0 , 32,
19655 0xfc007fff, 0xa0000b3b, &NMD::FLOOR_W_S
, 0,
19656 CP1_
}, /* FLOOR.W.S */
19657 { instruction
, 0 , 0 , 32,
19658 0xfc007fff, 0xa0004b3b, &NMD::FLOOR_W_D
, 0,
19659 CP1_
}, /* FLOOR.W.D */
19663 NMD::Pool
NMD::RECIP_fmt
[2] = {
19664 { instruction
, 0 , 0 , 32,
19665 0xfc007fff, 0xa000123b, &NMD::RECIP_S
, 0,
19666 CP1_
}, /* RECIP.S */
19667 { instruction
, 0 , 0 , 32,
19668 0xfc007fff, 0xa000523b, &NMD::RECIP_D
, 0,
19669 CP1_
}, /* RECIP.D */
19673 NMD::Pool
NMD::CEIL_L_fmt
[2] = {
19674 { instruction
, 0 , 0 , 32,
19675 0xfc007fff, 0xa000133b, &NMD::CEIL_L_S
, 0,
19676 CP1_
}, /* CEIL.L.S */
19677 { instruction
, 0 , 0 , 32,
19678 0xfc007fff, 0xa000533b, &NMD::CEIL_L_D
, 0,
19679 CP1_
}, /* CEIL.L.D */
19683 NMD::Pool
NMD::CEIL_W_fmt
[2] = {
19684 { instruction
, 0 , 0 , 32,
19685 0xfc007fff, 0xa0001b3b, &NMD::CEIL_W_S
, 0,
19686 CP1_
}, /* CEIL.W.S */
19687 { instruction
, 0 , 0 , 32,
19688 0xfc007fff, 0xa0005b3b, &NMD::CEIL_W_D
, 0,
19689 CP1_
}, /* CEIL.W.D */
19693 NMD::Pool
NMD::TRUNC_L_fmt
[2] = {
19694 { instruction
, 0 , 0 , 32,
19695 0xfc007fff, 0xa000233b, &NMD::TRUNC_L_S
, 0,
19696 CP1_
}, /* TRUNC.L.S */
19697 { instruction
, 0 , 0 , 32,
19698 0xfc007fff, 0xa000633b, &NMD::TRUNC_L_D
, 0,
19699 CP1_
}, /* TRUNC.L.D */
19703 NMD::Pool
NMD::TRUNC_W_fmt
[2] = {
19704 { instruction
, 0 , 0 , 32,
19705 0xfc007fff, 0xa0002b3b, &NMD::TRUNC_W_S
, 0,
19706 CP1_
}, /* TRUNC.W.S */
19707 { instruction
, 0 , 0 , 32,
19708 0xfc007fff, 0xa0006b3b, &NMD::TRUNC_W_D
, 0,
19709 CP1_
}, /* TRUNC.W.D */
19713 NMD::Pool
NMD::ROUND_L_fmt
[2] = {
19714 { instruction
, 0 , 0 , 32,
19715 0xfc007fff, 0xa000333b, &NMD::ROUND_L_S
, 0,
19716 CP1_
}, /* ROUND.L.S */
19717 { instruction
, 0 , 0 , 32,
19718 0xfc007fff, 0xa000733b, &NMD::ROUND_L_D
, 0,
19719 CP1_
}, /* ROUND.L.D */
19723 NMD::Pool
NMD::ROUND_W_fmt
[2] = {
19724 { instruction
, 0 , 0 , 32,
19725 0xfc007fff, 0xa0003b3b, &NMD::ROUND_W_S
, 0,
19726 CP1_
}, /* ROUND.W.S */
19727 { instruction
, 0 , 0 , 32,
19728 0xfc007fff, 0xa0007b3b, &NMD::ROUND_W_D
, 0,
19729 CP1_
}, /* ROUND.W.D */
19733 NMD::Pool
NMD::POOL32Fxf_0
[64] = {
19734 { reserved_block
, 0 , 0 , 32,
19735 0xfc003fff, 0xa000003b, 0 , 0,
19736 CP1_
}, /* POOL32Fxf_0~*(0) */
19737 { pool
, CVT_L_fmt
, 2 , 32,
19738 0xfc003fff, 0xa000013b, 0 , 0,
19739 CP1_
}, /* CVT.L.fmt */
19740 { pool
, RSQRT_fmt
, 2 , 32,
19741 0xfc003fff, 0xa000023b, 0 , 0,
19742 CP1_
}, /* RSQRT.fmt */
19743 { pool
, FLOOR_L_fmt
, 2 , 32,
19744 0xfc003fff, 0xa000033b, 0 , 0,
19745 CP1_
}, /* FLOOR.L.fmt */
19746 { reserved_block
, 0 , 0 , 32,
19747 0xfc003fff, 0xa000043b, 0 , 0,
19748 CP1_
}, /* POOL32Fxf_0~*(4) */
19749 { reserved_block
, 0 , 0 , 32,
19750 0xfc003fff, 0xa000053b, 0 , 0,
19751 CP1_
}, /* POOL32Fxf_0~*(5) */
19752 { reserved_block
, 0 , 0 , 32,
19753 0xfc003fff, 0xa000063b, 0 , 0,
19754 CP1_
}, /* POOL32Fxf_0~*(6) */
19755 { reserved_block
, 0 , 0 , 32,
19756 0xfc003fff, 0xa000073b, 0 , 0,
19757 CP1_
}, /* POOL32Fxf_0~*(7) */
19758 { reserved_block
, 0 , 0 , 32,
19759 0xfc003fff, 0xa000083b, 0 , 0,
19760 CP1_
}, /* POOL32Fxf_0~*(8) */
19761 { pool
, CVT_W_fmt
, 2 , 32,
19762 0xfc003fff, 0xa000093b, 0 , 0,
19763 CP1_
}, /* CVT.W.fmt */
19764 { pool
, SQRT_fmt
, 2 , 32,
19765 0xfc003fff, 0xa0000a3b, 0 , 0,
19766 CP1_
}, /* SQRT.fmt */
19767 { pool
, FLOOR_W_fmt
, 2 , 32,
19768 0xfc003fff, 0xa0000b3b, 0 , 0,
19769 CP1_
}, /* FLOOR.W.fmt */
19770 { reserved_block
, 0 , 0 , 32,
19771 0xfc003fff, 0xa0000c3b, 0 , 0,
19772 CP1_
}, /* POOL32Fxf_0~*(12) */
19773 { reserved_block
, 0 , 0 , 32,
19774 0xfc003fff, 0xa0000d3b, 0 , 0,
19775 CP1_
}, /* POOL32Fxf_0~*(13) */
19776 { reserved_block
, 0 , 0 , 32,
19777 0xfc003fff, 0xa0000e3b, 0 , 0,
19778 CP1_
}, /* POOL32Fxf_0~*(14) */
19779 { reserved_block
, 0 , 0 , 32,
19780 0xfc003fff, 0xa0000f3b, 0 , 0,
19781 CP1_
}, /* POOL32Fxf_0~*(15) */
19782 { instruction
, 0 , 0 , 32,
19783 0xfc003fff, 0xa000103b, &NMD::CFC1
, 0,
19785 { reserved_block
, 0 , 0 , 32,
19786 0xfc003fff, 0xa000113b, 0 , 0,
19787 CP1_
}, /* POOL32Fxf_0~*(17) */
19788 { pool
, RECIP_fmt
, 2 , 32,
19789 0xfc003fff, 0xa000123b, 0 , 0,
19790 CP1_
}, /* RECIP.fmt */
19791 { pool
, CEIL_L_fmt
, 2 , 32,
19792 0xfc003fff, 0xa000133b, 0 , 0,
19793 CP1_
}, /* CEIL.L.fmt */
19794 { reserved_block
, 0 , 0 , 32,
19795 0xfc003fff, 0xa000143b, 0 , 0,
19796 CP1_
}, /* POOL32Fxf_0~*(20) */
19797 { reserved_block
, 0 , 0 , 32,
19798 0xfc003fff, 0xa000153b, 0 , 0,
19799 CP1_
}, /* POOL32Fxf_0~*(21) */
19800 { reserved_block
, 0 , 0 , 32,
19801 0xfc003fff, 0xa000163b, 0 , 0,
19802 CP1_
}, /* POOL32Fxf_0~*(22) */
19803 { reserved_block
, 0 , 0 , 32,
19804 0xfc003fff, 0xa000173b, 0 , 0,
19805 CP1_
}, /* POOL32Fxf_0~*(23) */
19806 { instruction
, 0 , 0 , 32,
19807 0xfc003fff, 0xa000183b, &NMD::CTC1
, 0,
19809 { reserved_block
, 0 , 0 , 32,
19810 0xfc003fff, 0xa000193b, 0 , 0,
19811 CP1_
}, /* POOL32Fxf_0~*(25) */
19812 { reserved_block
, 0 , 0 , 32,
19813 0xfc003fff, 0xa0001a3b, 0 , 0,
19814 CP1_
}, /* POOL32Fxf_0~*(26) */
19815 { pool
, CEIL_W_fmt
, 2 , 32,
19816 0xfc003fff, 0xa0001b3b, 0 , 0,
19817 CP1_
}, /* CEIL.W.fmt */
19818 { reserved_block
, 0 , 0 , 32,
19819 0xfc003fff, 0xa0001c3b, 0 , 0,
19820 CP1_
}, /* POOL32Fxf_0~*(28) */
19821 { reserved_block
, 0 , 0 , 32,
19822 0xfc003fff, 0xa0001d3b, 0 , 0,
19823 CP1_
}, /* POOL32Fxf_0~*(29) */
19824 { reserved_block
, 0 , 0 , 32,
19825 0xfc003fff, 0xa0001e3b, 0 , 0,
19826 CP1_
}, /* POOL32Fxf_0~*(30) */
19827 { reserved_block
, 0 , 0 , 32,
19828 0xfc003fff, 0xa0001f3b, 0 , 0,
19829 CP1_
}, /* POOL32Fxf_0~*(31) */
19830 { instruction
, 0 , 0 , 32,
19831 0xfc003fff, 0xa000203b, &NMD::MFC1
, 0,
19833 { instruction
, 0 , 0 , 32,
19834 0xfc003fff, 0xa000213b, &NMD::CVT_S_PL
, 0,
19835 CP1_
}, /* CVT.S.PL */
19836 { reserved_block
, 0 , 0 , 32,
19837 0xfc003fff, 0xa000223b, 0 , 0,
19838 CP1_
}, /* POOL32Fxf_0~*(34) */
19839 { pool
, TRUNC_L_fmt
, 2 , 32,
19840 0xfc003fff, 0xa000233b, 0 , 0,
19841 CP1_
}, /* TRUNC.L.fmt */
19842 { instruction
, 0 , 0 , 32,
19843 0xfc003fff, 0xa000243b, &NMD::DMFC1
, 0,
19844 CP1_
| MIPS64_
}, /* DMFC1 */
19845 { reserved_block
, 0 , 0 , 32,
19846 0xfc003fff, 0xa000253b, 0 , 0,
19847 CP1_
}, /* POOL32Fxf_0~*(37) */
19848 { reserved_block
, 0 , 0 , 32,
19849 0xfc003fff, 0xa000263b, 0 , 0,
19850 CP1_
}, /* POOL32Fxf_0~*(38) */
19851 { reserved_block
, 0 , 0 , 32,
19852 0xfc003fff, 0xa000273b, 0 , 0,
19853 CP1_
}, /* POOL32Fxf_0~*(39) */
19854 { instruction
, 0 , 0 , 32,
19855 0xfc003fff, 0xa000283b, &NMD::MTC1
, 0,
19857 { instruction
, 0 , 0 , 32,
19858 0xfc003fff, 0xa000293b, &NMD::CVT_S_PU
, 0,
19859 CP1_
}, /* CVT.S.PU */
19860 { reserved_block
, 0 , 0 , 32,
19861 0xfc003fff, 0xa0002a3b, 0 , 0,
19862 CP1_
}, /* POOL32Fxf_0~*(42) */
19863 { pool
, TRUNC_W_fmt
, 2 , 32,
19864 0xfc003fff, 0xa0002b3b, 0 , 0,
19865 CP1_
}, /* TRUNC.W.fmt */
19866 { instruction
, 0 , 0 , 32,
19867 0xfc003fff, 0xa0002c3b, &NMD::DMTC1
, 0,
19868 CP1_
| MIPS64_
}, /* DMTC1 */
19869 { reserved_block
, 0 , 0 , 32,
19870 0xfc003fff, 0xa0002d3b, 0 , 0,
19871 CP1_
}, /* POOL32Fxf_0~*(45) */
19872 { reserved_block
, 0 , 0 , 32,
19873 0xfc003fff, 0xa0002e3b, 0 , 0,
19874 CP1_
}, /* POOL32Fxf_0~*(46) */
19875 { reserved_block
, 0 , 0 , 32,
19876 0xfc003fff, 0xa0002f3b, 0 , 0,
19877 CP1_
}, /* POOL32Fxf_0~*(47) */
19878 { instruction
, 0 , 0 , 32,
19879 0xfc003fff, 0xa000303b, &NMD::MFHC1
, 0,
19880 CP1_
}, /* MFHC1 */
19881 { reserved_block
, 0 , 0 , 32,
19882 0xfc003fff, 0xa000313b, 0 , 0,
19883 CP1_
}, /* POOL32Fxf_0~*(49) */
19884 { reserved_block
, 0 , 0 , 32,
19885 0xfc003fff, 0xa000323b, 0 , 0,
19886 CP1_
}, /* POOL32Fxf_0~*(50) */
19887 { pool
, ROUND_L_fmt
, 2 , 32,
19888 0xfc003fff, 0xa000333b, 0 , 0,
19889 CP1_
}, /* ROUND.L.fmt */
19890 { reserved_block
, 0 , 0 , 32,
19891 0xfc003fff, 0xa000343b, 0 , 0,
19892 CP1_
}, /* POOL32Fxf_0~*(52) */
19893 { reserved_block
, 0 , 0 , 32,
19894 0xfc003fff, 0xa000353b, 0 , 0,
19895 CP1_
}, /* POOL32Fxf_0~*(53) */
19896 { reserved_block
, 0 , 0 , 32,
19897 0xfc003fff, 0xa000363b, 0 , 0,
19898 CP1_
}, /* POOL32Fxf_0~*(54) */
19899 { reserved_block
, 0 , 0 , 32,
19900 0xfc003fff, 0xa000373b, 0 , 0,
19901 CP1_
}, /* POOL32Fxf_0~*(55) */
19902 { instruction
, 0 , 0 , 32,
19903 0xfc003fff, 0xa000383b, &NMD::MTHC1
, 0,
19904 CP1_
}, /* MTHC1 */
19905 { reserved_block
, 0 , 0 , 32,
19906 0xfc003fff, 0xa000393b, 0 , 0,
19907 CP1_
}, /* POOL32Fxf_0~*(57) */
19908 { reserved_block
, 0 , 0 , 32,
19909 0xfc003fff, 0xa0003a3b, 0 , 0,
19910 CP1_
}, /* POOL32Fxf_0~*(58) */
19911 { pool
, ROUND_W_fmt
, 2 , 32,
19912 0xfc003fff, 0xa0003b3b, 0 , 0,
19913 CP1_
}, /* ROUND.W.fmt */
19914 { reserved_block
, 0 , 0 , 32,
19915 0xfc003fff, 0xa0003c3b, 0 , 0,
19916 CP1_
}, /* POOL32Fxf_0~*(60) */
19917 { reserved_block
, 0 , 0 , 32,
19918 0xfc003fff, 0xa0003d3b, 0 , 0,
19919 CP1_
}, /* POOL32Fxf_0~*(61) */
19920 { reserved_block
, 0 , 0 , 32,
19921 0xfc003fff, 0xa0003e3b, 0 , 0,
19922 CP1_
}, /* POOL32Fxf_0~*(62) */
19923 { reserved_block
, 0 , 0 , 32,
19924 0xfc003fff, 0xa0003f3b, 0 , 0,
19925 CP1_
}, /* POOL32Fxf_0~*(63) */
19929 NMD::Pool
NMD::MOV_fmt
[4] = {
19930 { instruction
, 0 , 0 , 32,
19931 0xfc007fff, 0xa000007b, &NMD::MOV_S
, 0,
19932 CP1_
}, /* MOV.S */
19933 { instruction
, 0 , 0 , 32,
19934 0xfc007fff, 0xa000207b, &NMD::MOV_D
, 0,
19935 CP1_
}, /* MOV.D */
19936 { reserved_block
, 0 , 0 , 32,
19937 0xfc007fff, 0xa000407b, 0 , 0,
19938 CP1_
}, /* MOV.fmt~*(2) */
19939 { reserved_block
, 0 , 0 , 32,
19940 0xfc007fff, 0xa000607b, 0 , 0,
19941 CP1_
}, /* MOV.fmt~*(3) */
19945 NMD::Pool
NMD::ABS_fmt
[4] = {
19946 { instruction
, 0 , 0 , 32,
19947 0xfc007fff, 0xa000037b, &NMD::ABS_S
, 0,
19948 CP1_
}, /* ABS.S */
19949 { instruction
, 0 , 0 , 32,
19950 0xfc007fff, 0xa000237b, &NMD::ABS_D
, 0,
19951 CP1_
}, /* ABS.D */
19952 { reserved_block
, 0 , 0 , 32,
19953 0xfc007fff, 0xa000437b, 0 , 0,
19954 CP1_
}, /* ABS.fmt~*(2) */
19955 { reserved_block
, 0 , 0 , 32,
19956 0xfc007fff, 0xa000637b, 0 , 0,
19957 CP1_
}, /* ABS.fmt~*(3) */
19961 NMD::Pool
NMD::NEG_fmt
[4] = {
19962 { instruction
, 0 , 0 , 32,
19963 0xfc007fff, 0xa0000b7b, &NMD::NEG_S
, 0,
19964 CP1_
}, /* NEG.S */
19965 { instruction
, 0 , 0 , 32,
19966 0xfc007fff, 0xa0002b7b, &NMD::NEG_D
, 0,
19967 CP1_
}, /* NEG.D */
19968 { reserved_block
, 0 , 0 , 32,
19969 0xfc007fff, 0xa0004b7b, 0 , 0,
19970 CP1_
}, /* NEG.fmt~*(2) */
19971 { reserved_block
, 0 , 0 , 32,
19972 0xfc007fff, 0xa0006b7b, 0 , 0,
19973 CP1_
}, /* NEG.fmt~*(3) */
19977 NMD::Pool
NMD::CVT_D_fmt
[4] = {
19978 { instruction
, 0 , 0 , 32,
19979 0xfc007fff, 0xa000137b, &NMD::CVT_D_S
, 0,
19980 CP1_
}, /* CVT.D.S */
19981 { instruction
, 0 , 0 , 32,
19982 0xfc007fff, 0xa000337b, &NMD::CVT_D_W
, 0,
19983 CP1_
}, /* CVT.D.W */
19984 { instruction
, 0 , 0 , 32,
19985 0xfc007fff, 0xa000537b, &NMD::CVT_D_L
, 0,
19986 CP1_
}, /* CVT.D.L */
19987 { reserved_block
, 0 , 0 , 32,
19988 0xfc007fff, 0xa000737b, 0 , 0,
19989 CP1_
}, /* CVT.D.fmt~*(3) */
19993 NMD::Pool
NMD::CVT_S_fmt
[4] = {
19994 { instruction
, 0 , 0 , 32,
19995 0xfc007fff, 0xa0001b7b, &NMD::CVT_S_D
, 0,
19996 CP1_
}, /* CVT.S.D */
19997 { instruction
, 0 , 0 , 32,
19998 0xfc007fff, 0xa0003b7b, &NMD::CVT_S_W
, 0,
19999 CP1_
}, /* CVT.S.W */
20000 { instruction
, 0 , 0 , 32,
20001 0xfc007fff, 0xa0005b7b, &NMD::CVT_S_L
, 0,
20002 CP1_
}, /* CVT.S.L */
20003 { reserved_block
, 0 , 0 , 32,
20004 0xfc007fff, 0xa0007b7b, 0 , 0,
20005 CP1_
}, /* CVT.S.fmt~*(3) */
20009 NMD::Pool
NMD::POOL32Fxf_1
[32] = {
20010 { pool
, MOV_fmt
, 4 , 32,
20011 0xfc001fff, 0xa000007b, 0 , 0,
20012 CP1_
}, /* MOV.fmt */
20013 { reserved_block
, 0 , 0 , 32,
20014 0xfc001fff, 0xa000017b, 0 , 0,
20015 CP1_
}, /* POOL32Fxf_1~*(1) */
20016 { reserved_block
, 0 , 0 , 32,
20017 0xfc001fff, 0xa000027b, 0 , 0,
20018 CP1_
}, /* POOL32Fxf_1~*(2) */
20019 { pool
, ABS_fmt
, 4 , 32,
20020 0xfc001fff, 0xa000037b, 0 , 0,
20021 CP1_
}, /* ABS.fmt */
20022 { reserved_block
, 0 , 0 , 32,
20023 0xfc001fff, 0xa000047b, 0 , 0,
20024 CP1_
}, /* POOL32Fxf_1~*(4) */
20025 { reserved_block
, 0 , 0 , 32,
20026 0xfc001fff, 0xa000057b, 0 , 0,
20027 CP1_
}, /* POOL32Fxf_1~*(5) */
20028 { reserved_block
, 0 , 0 , 32,
20029 0xfc001fff, 0xa000067b, 0 , 0,
20030 CP1_
}, /* POOL32Fxf_1~*(6) */
20031 { reserved_block
, 0 , 0 , 32,
20032 0xfc001fff, 0xa000077b, 0 , 0,
20033 CP1_
}, /* POOL32Fxf_1~*(7) */
20034 { reserved_block
, 0 , 0 , 32,
20035 0xfc001fff, 0xa000087b, 0 , 0,
20036 CP1_
}, /* POOL32Fxf_1~*(8) */
20037 { reserved_block
, 0 , 0 , 32,
20038 0xfc001fff, 0xa000097b, 0 , 0,
20039 CP1_
}, /* POOL32Fxf_1~*(9) */
20040 { reserved_block
, 0 , 0 , 32,
20041 0xfc001fff, 0xa0000a7b, 0 , 0,
20042 CP1_
}, /* POOL32Fxf_1~*(10) */
20043 { pool
, NEG_fmt
, 4 , 32,
20044 0xfc001fff, 0xa0000b7b, 0 , 0,
20045 CP1_
}, /* NEG.fmt */
20046 { reserved_block
, 0 , 0 , 32,
20047 0xfc001fff, 0xa0000c7b, 0 , 0,
20048 CP1_
}, /* POOL32Fxf_1~*(12) */
20049 { reserved_block
, 0 , 0 , 32,
20050 0xfc001fff, 0xa0000d7b, 0 , 0,
20051 CP1_
}, /* POOL32Fxf_1~*(13) */
20052 { reserved_block
, 0 , 0 , 32,
20053 0xfc001fff, 0xa0000e7b, 0 , 0,
20054 CP1_
}, /* POOL32Fxf_1~*(14) */
20055 { reserved_block
, 0 , 0 , 32,
20056 0xfc001fff, 0xa0000f7b, 0 , 0,
20057 CP1_
}, /* POOL32Fxf_1~*(15) */
20058 { reserved_block
, 0 , 0 , 32,
20059 0xfc001fff, 0xa000107b, 0 , 0,
20060 CP1_
}, /* POOL32Fxf_1~*(16) */
20061 { reserved_block
, 0 , 0 , 32,
20062 0xfc001fff, 0xa000117b, 0 , 0,
20063 CP1_
}, /* POOL32Fxf_1~*(17) */
20064 { reserved_block
, 0 , 0 , 32,
20065 0xfc001fff, 0xa000127b, 0 , 0,
20066 CP1_
}, /* POOL32Fxf_1~*(18) */
20067 { pool
, CVT_D_fmt
, 4 , 32,
20068 0xfc001fff, 0xa000137b, 0 , 0,
20069 CP1_
}, /* CVT.D.fmt */
20070 { reserved_block
, 0 , 0 , 32,
20071 0xfc001fff, 0xa000147b, 0 , 0,
20072 CP1_
}, /* POOL32Fxf_1~*(20) */
20073 { reserved_block
, 0 , 0 , 32,
20074 0xfc001fff, 0xa000157b, 0 , 0,
20075 CP1_
}, /* POOL32Fxf_1~*(21) */
20076 { reserved_block
, 0 , 0 , 32,
20077 0xfc001fff, 0xa000167b, 0 , 0,
20078 CP1_
}, /* POOL32Fxf_1~*(22) */
20079 { reserved_block
, 0 , 0 , 32,
20080 0xfc001fff, 0xa000177b, 0 , 0,
20081 CP1_
}, /* POOL32Fxf_1~*(23) */
20082 { reserved_block
, 0 , 0 , 32,
20083 0xfc001fff, 0xa000187b, 0 , 0,
20084 CP1_
}, /* POOL32Fxf_1~*(24) */
20085 { reserved_block
, 0 , 0 , 32,
20086 0xfc001fff, 0xa000197b, 0 , 0,
20087 CP1_
}, /* POOL32Fxf_1~*(25) */
20088 { reserved_block
, 0 , 0 , 32,
20089 0xfc001fff, 0xa0001a7b, 0 , 0,
20090 CP1_
}, /* POOL32Fxf_1~*(26) */
20091 { pool
, CVT_S_fmt
, 4 , 32,
20092 0xfc001fff, 0xa0001b7b, 0 , 0,
20093 CP1_
}, /* CVT.S.fmt */
20094 { reserved_block
, 0 , 0 , 32,
20095 0xfc001fff, 0xa0001c7b, 0 , 0,
20096 CP1_
}, /* POOL32Fxf_1~*(28) */
20097 { reserved_block
, 0 , 0 , 32,
20098 0xfc001fff, 0xa0001d7b, 0 , 0,
20099 CP1_
}, /* POOL32Fxf_1~*(29) */
20100 { reserved_block
, 0 , 0 , 32,
20101 0xfc001fff, 0xa0001e7b, 0 , 0,
20102 CP1_
}, /* POOL32Fxf_1~*(30) */
20103 { reserved_block
, 0 , 0 , 32,
20104 0xfc001fff, 0xa0001f7b, 0 , 0,
20105 CP1_
}, /* POOL32Fxf_1~*(31) */
20109 NMD::Pool
NMD::POOL32Fxf
[4] = {
20110 { pool
, POOL32Fxf_0
, 64 , 32,
20111 0xfc0000ff, 0xa000003b, 0 , 0,
20112 CP1_
}, /* POOL32Fxf_0 */
20113 { pool
, POOL32Fxf_1
, 32 , 32,
20114 0xfc0000ff, 0xa000007b, 0 , 0,
20115 CP1_
}, /* POOL32Fxf_1 */
20116 { reserved_block
, 0 , 0 , 32,
20117 0xfc0000ff, 0xa00000bb, 0 , 0,
20118 CP1_
}, /* POOL32Fxf~*(2) */
20119 { reserved_block
, 0 , 0 , 32,
20120 0xfc0000ff, 0xa00000fb, 0 , 0,
20121 CP1_
}, /* POOL32Fxf~*(3) */
20125 NMD::Pool
NMD::POOL32F_3
[8] = {
20126 { pool
, MIN_fmt
, 2 , 32,
20127 0xfc00003f, 0xa0000003, 0 , 0,
20128 CP1_
}, /* MIN.fmt */
20129 { pool
, MAX_fmt
, 2 , 32,
20130 0xfc00003f, 0xa000000b, 0 , 0,
20131 CP1_
}, /* MAX.fmt */
20132 { reserved_block
, 0 , 0 , 32,
20133 0xfc00003f, 0xa0000013, 0 , 0,
20134 CP1_
}, /* POOL32F_3~*(2) */
20135 { reserved_block
, 0 , 0 , 32,
20136 0xfc00003f, 0xa000001b, 0 , 0,
20137 CP1_
}, /* POOL32F_3~*(3) */
20138 { pool
, MINA_fmt
, 2 , 32,
20139 0xfc00003f, 0xa0000023, 0 , 0,
20140 CP1_
}, /* MINA.fmt */
20141 { pool
, MAXA_fmt
, 2 , 32,
20142 0xfc00003f, 0xa000002b, 0 , 0,
20143 CP1_
}, /* MAXA.fmt */
20144 { reserved_block
, 0 , 0 , 32,
20145 0xfc00003f, 0xa0000033, 0 , 0,
20146 CP1_
}, /* POOL32F_3~*(6) */
20147 { pool
, POOL32Fxf
, 4 , 32,
20148 0xfc00003f, 0xa000003b, 0 , 0,
20149 CP1_
}, /* POOL32Fxf */
20153 NMD::Pool
NMD::CMP_condn_S
[32] = {
20154 { instruction
, 0 , 0 , 32,
20155 0xfc0007ff, 0xa0000005, &NMD::CMP_AF_S
, 0,
20156 CP1_
}, /* CMP.AF.S */
20157 { instruction
, 0 , 0 , 32,
20158 0xfc0007ff, 0xa0000045, &NMD::CMP_UN_S
, 0,
20159 CP1_
}, /* CMP.UN.S */
20160 { instruction
, 0 , 0 , 32,
20161 0xfc0007ff, 0xa0000085, &NMD::CMP_EQ_S
, 0,
20162 CP1_
}, /* CMP.EQ.S */
20163 { instruction
, 0 , 0 , 32,
20164 0xfc0007ff, 0xa00000c5, &NMD::CMP_UEQ_S
, 0,
20165 CP1_
}, /* CMP.UEQ.S */
20166 { instruction
, 0 , 0 , 32,
20167 0xfc0007ff, 0xa0000105, &NMD::CMP_LT_S
, 0,
20168 CP1_
}, /* CMP.LT.S */
20169 { instruction
, 0 , 0 , 32,
20170 0xfc0007ff, 0xa0000145, &NMD::CMP_ULT_S
, 0,
20171 CP1_
}, /* CMP.ULT.S */
20172 { instruction
, 0 , 0 , 32,
20173 0xfc0007ff, 0xa0000185, &NMD::CMP_LE_S
, 0,
20174 CP1_
}, /* CMP.LE.S */
20175 { instruction
, 0 , 0 , 32,
20176 0xfc0007ff, 0xa00001c5, &NMD::CMP_ULE_S
, 0,
20177 CP1_
}, /* CMP.ULE.S */
20178 { instruction
, 0 , 0 , 32,
20179 0xfc0007ff, 0xa0000205, &NMD::CMP_SAF_S
, 0,
20180 CP1_
}, /* CMP.SAF.S */
20181 { instruction
, 0 , 0 , 32,
20182 0xfc0007ff, 0xa0000245, &NMD::CMP_SUN_S
, 0,
20183 CP1_
}, /* CMP.SUN.S */
20184 { instruction
, 0 , 0 , 32,
20185 0xfc0007ff, 0xa0000285, &NMD::CMP_SEQ_S
, 0,
20186 CP1_
}, /* CMP.SEQ.S */
20187 { instruction
, 0 , 0 , 32,
20188 0xfc0007ff, 0xa00002c5, &NMD::CMP_SUEQ_S
, 0,
20189 CP1_
}, /* CMP.SUEQ.S */
20190 { instruction
, 0 , 0 , 32,
20191 0xfc0007ff, 0xa0000305, &NMD::CMP_SLT_S
, 0,
20192 CP1_
}, /* CMP.SLT.S */
20193 { instruction
, 0 , 0 , 32,
20194 0xfc0007ff, 0xa0000345, &NMD::CMP_SULT_S
, 0,
20195 CP1_
}, /* CMP.SULT.S */
20196 { instruction
, 0 , 0 , 32,
20197 0xfc0007ff, 0xa0000385, &NMD::CMP_SLE_S
, 0,
20198 CP1_
}, /* CMP.SLE.S */
20199 { instruction
, 0 , 0 , 32,
20200 0xfc0007ff, 0xa00003c5, &NMD::CMP_SULE_S
, 0,
20201 CP1_
}, /* CMP.SULE.S */
20202 { reserved_block
, 0 , 0 , 32,
20203 0xfc0007ff, 0xa0000405, 0 , 0,
20204 CP1_
}, /* CMP.condn.S~*(16) */
20205 { instruction
, 0 , 0 , 32,
20206 0xfc0007ff, 0xa0000445, &NMD::CMP_OR_S
, 0,
20207 CP1_
}, /* CMP.OR.S */
20208 { instruction
, 0 , 0 , 32,
20209 0xfc0007ff, 0xa0000485, &NMD::CMP_UNE_S
, 0,
20210 CP1_
}, /* CMP.UNE.S */
20211 { instruction
, 0 , 0 , 32,
20212 0xfc0007ff, 0xa00004c5, &NMD::CMP_NE_S
, 0,
20213 CP1_
}, /* CMP.NE.S */
20214 { reserved_block
, 0 , 0 , 32,
20215 0xfc0007ff, 0xa0000505, 0 , 0,
20216 CP1_
}, /* CMP.condn.S~*(20) */
20217 { reserved_block
, 0 , 0 , 32,
20218 0xfc0007ff, 0xa0000545, 0 , 0,
20219 CP1_
}, /* CMP.condn.S~*(21) */
20220 { reserved_block
, 0 , 0 , 32,
20221 0xfc0007ff, 0xa0000585, 0 , 0,
20222 CP1_
}, /* CMP.condn.S~*(22) */
20223 { reserved_block
, 0 , 0 , 32,
20224 0xfc0007ff, 0xa00005c5, 0 , 0,
20225 CP1_
}, /* CMP.condn.S~*(23) */
20226 { reserved_block
, 0 , 0 , 32,
20227 0xfc0007ff, 0xa0000605, 0 , 0,
20228 CP1_
}, /* CMP.condn.S~*(24) */
20229 { instruction
, 0 , 0 , 32,
20230 0xfc0007ff, 0xa0000645, &NMD::CMP_SOR_S
, 0,
20231 CP1_
}, /* CMP.SOR.S */
20232 { instruction
, 0 , 0 , 32,
20233 0xfc0007ff, 0xa0000685, &NMD::CMP_SUNE_S
, 0,
20234 CP1_
}, /* CMP.SUNE.S */
20235 { instruction
, 0 , 0 , 32,
20236 0xfc0007ff, 0xa00006c5, &NMD::CMP_SNE_S
, 0,
20237 CP1_
}, /* CMP.SNE.S */
20238 { reserved_block
, 0 , 0 , 32,
20239 0xfc0007ff, 0xa0000705, 0 , 0,
20240 CP1_
}, /* CMP.condn.S~*(28) */
20241 { reserved_block
, 0 , 0 , 32,
20242 0xfc0007ff, 0xa0000745, 0 , 0,
20243 CP1_
}, /* CMP.condn.S~*(29) */
20244 { reserved_block
, 0 , 0 , 32,
20245 0xfc0007ff, 0xa0000785, 0 , 0,
20246 CP1_
}, /* CMP.condn.S~*(30) */
20247 { reserved_block
, 0 , 0 , 32,
20248 0xfc0007ff, 0xa00007c5, 0 , 0,
20249 CP1_
}, /* CMP.condn.S~*(31) */
20253 NMD::Pool
NMD::CMP_condn_D
[32] = {
20254 { instruction
, 0 , 0 , 32,
20255 0xfc0007ff, 0xa0000015, &NMD::CMP_AF_D
, 0,
20256 CP1_
}, /* CMP.AF.D */
20257 { instruction
, 0 , 0 , 32,
20258 0xfc0007ff, 0xa0000055, &NMD::CMP_UN_D
, 0,
20259 CP1_
}, /* CMP.UN.D */
20260 { instruction
, 0 , 0 , 32,
20261 0xfc0007ff, 0xa0000095, &NMD::CMP_EQ_D
, 0,
20262 CP1_
}, /* CMP.EQ.D */
20263 { instruction
, 0 , 0 , 32,
20264 0xfc0007ff, 0xa00000d5, &NMD::CMP_UEQ_D
, 0,
20265 CP1_
}, /* CMP.UEQ.D */
20266 { instruction
, 0 , 0 , 32,
20267 0xfc0007ff, 0xa0000115, &NMD::CMP_LT_D
, 0,
20268 CP1_
}, /* CMP.LT.D */
20269 { instruction
, 0 , 0 , 32,
20270 0xfc0007ff, 0xa0000155, &NMD::CMP_ULT_D
, 0,
20271 CP1_
}, /* CMP.ULT.D */
20272 { instruction
, 0 , 0 , 32,
20273 0xfc0007ff, 0xa0000195, &NMD::CMP_LE_D
, 0,
20274 CP1_
}, /* CMP.LE.D */
20275 { instruction
, 0 , 0 , 32,
20276 0xfc0007ff, 0xa00001d5, &NMD::CMP_ULE_D
, 0,
20277 CP1_
}, /* CMP.ULE.D */
20278 { instruction
, 0 , 0 , 32,
20279 0xfc0007ff, 0xa0000215, &NMD::CMP_SAF_D
, 0,
20280 CP1_
}, /* CMP.SAF.D */
20281 { instruction
, 0 , 0 , 32,
20282 0xfc0007ff, 0xa0000255, &NMD::CMP_SUN_D
, 0,
20283 CP1_
}, /* CMP.SUN.D */
20284 { instruction
, 0 , 0 , 32,
20285 0xfc0007ff, 0xa0000295, &NMD::CMP_SEQ_D
, 0,
20286 CP1_
}, /* CMP.SEQ.D */
20287 { instruction
, 0 , 0 , 32,
20288 0xfc0007ff, 0xa00002d5, &NMD::CMP_SUEQ_D
, 0,
20289 CP1_
}, /* CMP.SUEQ.D */
20290 { instruction
, 0 , 0 , 32,
20291 0xfc0007ff, 0xa0000315, &NMD::CMP_SLT_D
, 0,
20292 CP1_
}, /* CMP.SLT.D */
20293 { instruction
, 0 , 0 , 32,
20294 0xfc0007ff, 0xa0000355, &NMD::CMP_SULT_D
, 0,
20295 CP1_
}, /* CMP.SULT.D */
20296 { instruction
, 0 , 0 , 32,
20297 0xfc0007ff, 0xa0000395, &NMD::CMP_SLE_D
, 0,
20298 CP1_
}, /* CMP.SLE.D */
20299 { instruction
, 0 , 0 , 32,
20300 0xfc0007ff, 0xa00003d5, &NMD::CMP_SULE_D
, 0,
20301 CP1_
}, /* CMP.SULE.D */
20302 { reserved_block
, 0 , 0 , 32,
20303 0xfc0007ff, 0xa0000415, 0 , 0,
20304 CP1_
}, /* CMP.condn.D~*(16) */
20305 { instruction
, 0 , 0 , 32,
20306 0xfc0007ff, 0xa0000455, &NMD::CMP_OR_D
, 0,
20307 CP1_
}, /* CMP.OR.D */
20308 { instruction
, 0 , 0 , 32,
20309 0xfc0007ff, 0xa0000495, &NMD::CMP_UNE_D
, 0,
20310 CP1_
}, /* CMP.UNE.D */
20311 { instruction
, 0 , 0 , 32,
20312 0xfc0007ff, 0xa00004d5, &NMD::CMP_NE_D
, 0,
20313 CP1_
}, /* CMP.NE.D */
20314 { reserved_block
, 0 , 0 , 32,
20315 0xfc0007ff, 0xa0000515, 0 , 0,
20316 CP1_
}, /* CMP.condn.D~*(20) */
20317 { reserved_block
, 0 , 0 , 32,
20318 0xfc0007ff, 0xa0000555, 0 , 0,
20319 CP1_
}, /* CMP.condn.D~*(21) */
20320 { reserved_block
, 0 , 0 , 32,
20321 0xfc0007ff, 0xa0000595, 0 , 0,
20322 CP1_
}, /* CMP.condn.D~*(22) */
20323 { reserved_block
, 0 , 0 , 32,
20324 0xfc0007ff, 0xa00005d5, 0 , 0,
20325 CP1_
}, /* CMP.condn.D~*(23) */
20326 { reserved_block
, 0 , 0 , 32,
20327 0xfc0007ff, 0xa0000615, 0 , 0,
20328 CP1_
}, /* CMP.condn.D~*(24) */
20329 { instruction
, 0 , 0 , 32,
20330 0xfc0007ff, 0xa0000655, &NMD::CMP_SOR_D
, 0,
20331 CP1_
}, /* CMP.SOR.D */
20332 { instruction
, 0 , 0 , 32,
20333 0xfc0007ff, 0xa0000695, &NMD::CMP_SUNE_D
, 0,
20334 CP1_
}, /* CMP.SUNE.D */
20335 { instruction
, 0 , 0 , 32,
20336 0xfc0007ff, 0xa00006d5, &NMD::CMP_SNE_D
, 0,
20337 CP1_
}, /* CMP.SNE.D */
20338 { reserved_block
, 0 , 0 , 32,
20339 0xfc0007ff, 0xa0000715, 0 , 0,
20340 CP1_
}, /* CMP.condn.D~*(28) */
20341 { reserved_block
, 0 , 0 , 32,
20342 0xfc0007ff, 0xa0000755, 0 , 0,
20343 CP1_
}, /* CMP.condn.D~*(29) */
20344 { reserved_block
, 0 , 0 , 32,
20345 0xfc0007ff, 0xa0000795, 0 , 0,
20346 CP1_
}, /* CMP.condn.D~*(30) */
20347 { reserved_block
, 0 , 0 , 32,
20348 0xfc0007ff, 0xa00007d5, 0 , 0,
20349 CP1_
}, /* CMP.condn.D~*(31) */
20353 NMD::Pool
NMD::POOL32F_5
[8] = {
20354 { pool
, CMP_condn_S
, 32 , 32,
20355 0xfc00003f, 0xa0000005, 0 , 0,
20356 CP1_
}, /* CMP.condn.S */
20357 { reserved_block
, 0 , 0 , 32,
20358 0xfc00003f, 0xa000000d, 0 , 0,
20359 CP1_
}, /* POOL32F_5~*(1) */
20360 { pool
, CMP_condn_D
, 32 , 32,
20361 0xfc00003f, 0xa0000015, 0 , 0,
20362 CP1_
}, /* CMP.condn.D */
20363 { reserved_block
, 0 , 0 , 32,
20364 0xfc00003f, 0xa000001d, 0 , 0,
20365 CP1_
}, /* POOL32F_5~*(3) */
20366 { reserved_block
, 0 , 0 , 32,
20367 0xfc00003f, 0xa0000025, 0 , 0,
20368 CP1_
}, /* POOL32F_5~*(4) */
20369 { reserved_block
, 0 , 0 , 32,
20370 0xfc00003f, 0xa000002d, 0 , 0,
20371 CP1_
}, /* POOL32F_5~*(5) */
20372 { reserved_block
, 0 , 0 , 32,
20373 0xfc00003f, 0xa0000035, 0 , 0,
20374 CP1_
}, /* POOL32F_5~*(6) */
20375 { reserved_block
, 0 , 0 , 32,
20376 0xfc00003f, 0xa000003d, 0 , 0,
20377 CP1_
}, /* POOL32F_5~*(7) */
20381 NMD::Pool
NMD::POOL32F
[8] = {
20382 { pool
, POOL32F_0
, 64 , 32,
20383 0xfc000007, 0xa0000000, 0 , 0,
20384 CP1_
}, /* POOL32F_0 */
20385 { reserved_block
, 0 , 0 , 32,
20386 0xfc000007, 0xa0000001, 0 , 0,
20387 CP1_
}, /* POOL32F~*(1) */
20388 { reserved_block
, 0 , 0 , 32,
20389 0xfc000007, 0xa0000002, 0 , 0,
20390 CP1_
}, /* POOL32F~*(2) */
20391 { pool
, POOL32F_3
, 8 , 32,
20392 0xfc000007, 0xa0000003, 0 , 0,
20393 CP1_
}, /* POOL32F_3 */
20394 { reserved_block
, 0 , 0 , 32,
20395 0xfc000007, 0xa0000004, 0 , 0,
20396 CP1_
}, /* POOL32F~*(4) */
20397 { pool
, POOL32F_5
, 8 , 32,
20398 0xfc000007, 0xa0000005, 0 , 0,
20399 CP1_
}, /* POOL32F_5 */
20400 { reserved_block
, 0 , 0 , 32,
20401 0xfc000007, 0xa0000006, 0 , 0,
20402 CP1_
}, /* POOL32F~*(6) */
20403 { reserved_block
, 0 , 0 , 32,
20404 0xfc000007, 0xa0000007, 0 , 0,
20405 CP1_
}, /* POOL32F~*(7) */
20409 NMD::Pool
NMD::POOL32S_0
[64] = {
20410 { reserved_block
, 0 , 0 , 32,
20411 0xfc0001ff, 0xc0000000, 0 , 0,
20412 0x0 }, /* POOL32S_0~*(0) */
20413 { instruction
, 0 , 0 , 32,
20414 0xfc0001ff, 0xc0000008, &NMD::DLSA
, 0,
20415 MIPS64_
}, /* DLSA */
20416 { instruction
, 0 , 0 , 32,
20417 0xfc0001ff, 0xc0000010, &NMD::DSLLV
, 0,
20418 MIPS64_
}, /* DSLLV */
20419 { instruction
, 0 , 0 , 32,
20420 0xfc0001ff, 0xc0000018, &NMD::DMUL
, 0,
20421 MIPS64_
}, /* DMUL */
20422 { reserved_block
, 0 , 0 , 32,
20423 0xfc0001ff, 0xc0000020, 0 , 0,
20424 0x0 }, /* POOL32S_0~*(4) */
20425 { reserved_block
, 0 , 0 , 32,
20426 0xfc0001ff, 0xc0000028, 0 , 0,
20427 0x0 }, /* POOL32S_0~*(5) */
20428 { reserved_block
, 0 , 0 , 32,
20429 0xfc0001ff, 0xc0000030, 0 , 0,
20430 0x0 }, /* POOL32S_0~*(6) */
20431 { reserved_block
, 0 , 0 , 32,
20432 0xfc0001ff, 0xc0000038, 0 , 0,
20433 0x0 }, /* POOL32S_0~*(7) */
20434 { reserved_block
, 0 , 0 , 32,
20435 0xfc0001ff, 0xc0000040, 0 , 0,
20436 0x0 }, /* POOL32S_0~*(8) */
20437 { reserved_block
, 0 , 0 , 32,
20438 0xfc0001ff, 0xc0000048, 0 , 0,
20439 0x0 }, /* POOL32S_0~*(9) */
20440 { instruction
, 0 , 0 , 32,
20441 0xfc0001ff, 0xc0000050, &NMD::DSRLV
, 0,
20442 MIPS64_
}, /* DSRLV */
20443 { instruction
, 0 , 0 , 32,
20444 0xfc0001ff, 0xc0000058, &NMD::DMUH
, 0,
20445 MIPS64_
}, /* DMUH */
20446 { reserved_block
, 0 , 0 , 32,
20447 0xfc0001ff, 0xc0000060, 0 , 0,
20448 0x0 }, /* POOL32S_0~*(12) */
20449 { reserved_block
, 0 , 0 , 32,
20450 0xfc0001ff, 0xc0000068, 0 , 0,
20451 0x0 }, /* POOL32S_0~*(13) */
20452 { reserved_block
, 0 , 0 , 32,
20453 0xfc0001ff, 0xc0000070, 0 , 0,
20454 0x0 }, /* POOL32S_0~*(14) */
20455 { reserved_block
, 0 , 0 , 32,
20456 0xfc0001ff, 0xc0000078, 0 , 0,
20457 0x0 }, /* POOL32S_0~*(15) */
20458 { reserved_block
, 0 , 0 , 32,
20459 0xfc0001ff, 0xc0000080, 0 , 0,
20460 0x0 }, /* POOL32S_0~*(16) */
20461 { reserved_block
, 0 , 0 , 32,
20462 0xfc0001ff, 0xc0000088, 0 , 0,
20463 0x0 }, /* POOL32S_0~*(17) */
20464 { instruction
, 0 , 0 , 32,
20465 0xfc0001ff, 0xc0000090, &NMD::DSRAV
, 0,
20466 MIPS64_
}, /* DSRAV */
20467 { instruction
, 0 , 0 , 32,
20468 0xfc0001ff, 0xc0000098, &NMD::DMULU
, 0,
20469 MIPS64_
}, /* DMULU */
20470 { reserved_block
, 0 , 0 , 32,
20471 0xfc0001ff, 0xc00000a0, 0 , 0,
20472 0x0 }, /* POOL32S_0~*(20) */
20473 { reserved_block
, 0 , 0 , 32,
20474 0xfc0001ff, 0xc00000a8, 0 , 0,
20475 0x0 }, /* POOL32S_0~*(21) */
20476 { reserved_block
, 0 , 0 , 32,
20477 0xfc0001ff, 0xc00000b0, 0 , 0,
20478 0x0 }, /* POOL32S_0~*(22) */
20479 { reserved_block
, 0 , 0 , 32,
20480 0xfc0001ff, 0xc00000b8, 0 , 0,
20481 0x0 }, /* POOL32S_0~*(23) */
20482 { reserved_block
, 0 , 0 , 32,
20483 0xfc0001ff, 0xc00000c0, 0 , 0,
20484 0x0 }, /* POOL32S_0~*(24) */
20485 { reserved_block
, 0 , 0 , 32,
20486 0xfc0001ff, 0xc00000c8, 0 , 0,
20487 0x0 }, /* POOL32S_0~*(25) */
20488 { instruction
, 0 , 0 , 32,
20489 0xfc0001ff, 0xc00000d0, &NMD::DROTRV
, 0,
20490 MIPS64_
}, /* DROTRV */
20491 { instruction
, 0 , 0 , 32,
20492 0xfc0001ff, 0xc00000d8, &NMD::DMUHU
, 0,
20493 MIPS64_
}, /* DMUHU */
20494 { reserved_block
, 0 , 0 , 32,
20495 0xfc0001ff, 0xc00000e0, 0 , 0,
20496 0x0 }, /* POOL32S_0~*(28) */
20497 { reserved_block
, 0 , 0 , 32,
20498 0xfc0001ff, 0xc00000e8, 0 , 0,
20499 0x0 }, /* POOL32S_0~*(29) */
20500 { reserved_block
, 0 , 0 , 32,
20501 0xfc0001ff, 0xc00000f0, 0 , 0,
20502 0x0 }, /* POOL32S_0~*(30) */
20503 { reserved_block
, 0 , 0 , 32,
20504 0xfc0001ff, 0xc00000f8, 0 , 0,
20505 0x0 }, /* POOL32S_0~*(31) */
20506 { reserved_block
, 0 , 0 , 32,
20507 0xfc0001ff, 0xc0000100, 0 , 0,
20508 0x0 }, /* POOL32S_0~*(32) */
20509 { reserved_block
, 0 , 0 , 32,
20510 0xfc0001ff, 0xc0000108, 0 , 0,
20511 0x0 }, /* POOL32S_0~*(33) */
20512 { instruction
, 0 , 0 , 32,
20513 0xfc0001ff, 0xc0000110, &NMD::DADD
, 0,
20514 MIPS64_
}, /* DADD */
20515 { instruction
, 0 , 0 , 32,
20516 0xfc0001ff, 0xc0000118, &NMD::DDIV
, 0,
20517 MIPS64_
}, /* DDIV */
20518 { reserved_block
, 0 , 0 , 32,
20519 0xfc0001ff, 0xc0000120, 0 , 0,
20520 0x0 }, /* POOL32S_0~*(36) */
20521 { reserved_block
, 0 , 0 , 32,
20522 0xfc0001ff, 0xc0000128, 0 , 0,
20523 0x0 }, /* POOL32S_0~*(37) */
20524 { reserved_block
, 0 , 0 , 32,
20525 0xfc0001ff, 0xc0000130, 0 , 0,
20526 0x0 }, /* POOL32S_0~*(38) */
20527 { reserved_block
, 0 , 0 , 32,
20528 0xfc0001ff, 0xc0000138, 0 , 0,
20529 0x0 }, /* POOL32S_0~*(39) */
20530 { reserved_block
, 0 , 0 , 32,
20531 0xfc0001ff, 0xc0000140, 0 , 0,
20532 0x0 }, /* POOL32S_0~*(40) */
20533 { reserved_block
, 0 , 0 , 32,
20534 0xfc0001ff, 0xc0000148, 0 , 0,
20535 0x0 }, /* POOL32S_0~*(41) */
20536 { instruction
, 0 , 0 , 32,
20537 0xfc0001ff, 0xc0000150, &NMD::DADDU
, 0,
20538 MIPS64_
}, /* DADDU */
20539 { instruction
, 0 , 0 , 32,
20540 0xfc0001ff, 0xc0000158, &NMD::DMOD
, 0,
20541 MIPS64_
}, /* DMOD */
20542 { reserved_block
, 0 , 0 , 32,
20543 0xfc0001ff, 0xc0000160, 0 , 0,
20544 0x0 }, /* POOL32S_0~*(44) */
20545 { reserved_block
, 0 , 0 , 32,
20546 0xfc0001ff, 0xc0000168, 0 , 0,
20547 0x0 }, /* POOL32S_0~*(45) */
20548 { reserved_block
, 0 , 0 , 32,
20549 0xfc0001ff, 0xc0000170, 0 , 0,
20550 0x0 }, /* POOL32S_0~*(46) */
20551 { reserved_block
, 0 , 0 , 32,
20552 0xfc0001ff, 0xc0000178, 0 , 0,
20553 0x0 }, /* POOL32S_0~*(47) */
20554 { reserved_block
, 0 , 0 , 32,
20555 0xfc0001ff, 0xc0000180, 0 , 0,
20556 0x0 }, /* POOL32S_0~*(48) */
20557 { reserved_block
, 0 , 0 , 32,
20558 0xfc0001ff, 0xc0000188, 0 , 0,
20559 0x0 }, /* POOL32S_0~*(49) */
20560 { instruction
, 0 , 0 , 32,
20561 0xfc0001ff, 0xc0000190, &NMD::DSUB
, 0,
20562 MIPS64_
}, /* DSUB */
20563 { instruction
, 0 , 0 , 32,
20564 0xfc0001ff, 0xc0000198, &NMD::DDIVU
, 0,
20565 MIPS64_
}, /* DDIVU */
20566 { reserved_block
, 0 , 0 , 32,
20567 0xfc0001ff, 0xc00001a0, 0 , 0,
20568 0x0 }, /* POOL32S_0~*(52) */
20569 { reserved_block
, 0 , 0 , 32,
20570 0xfc0001ff, 0xc00001a8, 0 , 0,
20571 0x0 }, /* POOL32S_0~*(53) */
20572 { reserved_block
, 0 , 0 , 32,
20573 0xfc0001ff, 0xc00001b0, 0 , 0,
20574 0x0 }, /* POOL32S_0~*(54) */
20575 { reserved_block
, 0 , 0 , 32,
20576 0xfc0001ff, 0xc00001b8, 0 , 0,
20577 0x0 }, /* POOL32S_0~*(55) */
20578 { reserved_block
, 0 , 0 , 32,
20579 0xfc0001ff, 0xc00001c0, 0 , 0,
20580 0x0 }, /* POOL32S_0~*(56) */
20581 { reserved_block
, 0 , 0 , 32,
20582 0xfc0001ff, 0xc00001c8, 0 , 0,
20583 0x0 }, /* POOL32S_0~*(57) */
20584 { instruction
, 0 , 0 , 32,
20585 0xfc0001ff, 0xc00001d0, &NMD::DSUBU
, 0,
20586 MIPS64_
}, /* DSUBU */
20587 { instruction
, 0 , 0 , 32,
20588 0xfc0001ff, 0xc00001d8, &NMD::DMODU
, 0,
20589 MIPS64_
}, /* DMODU */
20590 { reserved_block
, 0 , 0 , 32,
20591 0xfc0001ff, 0xc00001e0, 0 , 0,
20592 0x0 }, /* POOL32S_0~*(60) */
20593 { reserved_block
, 0 , 0 , 32,
20594 0xfc0001ff, 0xc00001e8, 0 , 0,
20595 0x0 }, /* POOL32S_0~*(61) */
20596 { reserved_block
, 0 , 0 , 32,
20597 0xfc0001ff, 0xc00001f0, 0 , 0,
20598 0x0 }, /* POOL32S_0~*(62) */
20599 { reserved_block
, 0 , 0 , 32,
20600 0xfc0001ff, 0xc00001f8, 0 , 0,
20601 0x0 }, /* POOL32S_0~*(63) */
20605 NMD::Pool
NMD::POOL32Sxf_4
[128] = {
20606 { reserved_block
, 0 , 0 , 32,
20607 0xfc00ffff, 0xc000013c, 0 , 0,
20608 0x0 }, /* POOL32Sxf_4~*(0) */
20609 { reserved_block
, 0 , 0 , 32,
20610 0xfc00ffff, 0xc000033c, 0 , 0,
20611 0x0 }, /* POOL32Sxf_4~*(1) */
20612 { reserved_block
, 0 , 0 , 32,
20613 0xfc00ffff, 0xc000053c, 0 , 0,
20614 0x0 }, /* POOL32Sxf_4~*(2) */
20615 { reserved_block
, 0 , 0 , 32,
20616 0xfc00ffff, 0xc000073c, 0 , 0,
20617 0x0 }, /* POOL32Sxf_4~*(3) */
20618 { reserved_block
, 0 , 0 , 32,
20619 0xfc00ffff, 0xc000093c, 0 , 0,
20620 0x0 }, /* POOL32Sxf_4~*(4) */
20621 { reserved_block
, 0 , 0 , 32,
20622 0xfc00ffff, 0xc0000b3c, 0 , 0,
20623 0x0 }, /* POOL32Sxf_4~*(5) */
20624 { reserved_block
, 0 , 0 , 32,
20625 0xfc00ffff, 0xc0000d3c, 0 , 0,
20626 0x0 }, /* POOL32Sxf_4~*(6) */
20627 { reserved_block
, 0 , 0 , 32,
20628 0xfc00ffff, 0xc0000f3c, 0 , 0,
20629 0x0 }, /* POOL32Sxf_4~*(7) */
20630 { reserved_block
, 0 , 0 , 32,
20631 0xfc00ffff, 0xc000113c, 0 , 0,
20632 0x0 }, /* POOL32Sxf_4~*(8) */
20633 { reserved_block
, 0 , 0 , 32,
20634 0xfc00ffff, 0xc000133c, 0 , 0,
20635 0x0 }, /* POOL32Sxf_4~*(9) */
20636 { reserved_block
, 0 , 0 , 32,
20637 0xfc00ffff, 0xc000153c, 0 , 0,
20638 0x0 }, /* POOL32Sxf_4~*(10) */
20639 { reserved_block
, 0 , 0 , 32,
20640 0xfc00ffff, 0xc000173c, 0 , 0,
20641 0x0 }, /* POOL32Sxf_4~*(11) */
20642 { reserved_block
, 0 , 0 , 32,
20643 0xfc00ffff, 0xc000193c, 0 , 0,
20644 0x0 }, /* POOL32Sxf_4~*(12) */
20645 { reserved_block
, 0 , 0 , 32,
20646 0xfc00ffff, 0xc0001b3c, 0 , 0,
20647 0x0 }, /* POOL32Sxf_4~*(13) */
20648 { reserved_block
, 0 , 0 , 32,
20649 0xfc00ffff, 0xc0001d3c, 0 , 0,
20650 0x0 }, /* POOL32Sxf_4~*(14) */
20651 { reserved_block
, 0 , 0 , 32,
20652 0xfc00ffff, 0xc0001f3c, 0 , 0,
20653 0x0 }, /* POOL32Sxf_4~*(15) */
20654 { reserved_block
, 0 , 0 , 32,
20655 0xfc00ffff, 0xc000213c, 0 , 0,
20656 0x0 }, /* POOL32Sxf_4~*(16) */
20657 { reserved_block
, 0 , 0 , 32,
20658 0xfc00ffff, 0xc000233c, 0 , 0,
20659 0x0 }, /* POOL32Sxf_4~*(17) */
20660 { reserved_block
, 0 , 0 , 32,
20661 0xfc00ffff, 0xc000253c, 0 , 0,
20662 0x0 }, /* POOL32Sxf_4~*(18) */
20663 { reserved_block
, 0 , 0 , 32,
20664 0xfc00ffff, 0xc000273c, 0 , 0,
20665 0x0 }, /* POOL32Sxf_4~*(19) */
20666 { reserved_block
, 0 , 0 , 32,
20667 0xfc00ffff, 0xc000293c, 0 , 0,
20668 0x0 }, /* POOL32Sxf_4~*(20) */
20669 { reserved_block
, 0 , 0 , 32,
20670 0xfc00ffff, 0xc0002b3c, 0 , 0,
20671 0x0 }, /* POOL32Sxf_4~*(21) */
20672 { reserved_block
, 0 , 0 , 32,
20673 0xfc00ffff, 0xc0002d3c, 0 , 0,
20674 0x0 }, /* POOL32Sxf_4~*(22) */
20675 { reserved_block
, 0 , 0 , 32,
20676 0xfc00ffff, 0xc0002f3c, 0 , 0,
20677 0x0 }, /* POOL32Sxf_4~*(23) */
20678 { reserved_block
, 0 , 0 , 32,
20679 0xfc00ffff, 0xc000313c, 0 , 0,
20680 0x0 }, /* POOL32Sxf_4~*(24) */
20681 { reserved_block
, 0 , 0 , 32,
20682 0xfc00ffff, 0xc000333c, 0 , 0,
20683 0x0 }, /* POOL32Sxf_4~*(25) */
20684 { reserved_block
, 0 , 0 , 32,
20685 0xfc00ffff, 0xc000353c, 0 , 0,
20686 0x0 }, /* POOL32Sxf_4~*(26) */
20687 { reserved_block
, 0 , 0 , 32,
20688 0xfc00ffff, 0xc000373c, 0 , 0,
20689 0x0 }, /* POOL32Sxf_4~*(27) */
20690 { reserved_block
, 0 , 0 , 32,
20691 0xfc00ffff, 0xc000393c, 0 , 0,
20692 0x0 }, /* POOL32Sxf_4~*(28) */
20693 { reserved_block
, 0 , 0 , 32,
20694 0xfc00ffff, 0xc0003b3c, 0 , 0,
20695 0x0 }, /* POOL32Sxf_4~*(29) */
20696 { reserved_block
, 0 , 0 , 32,
20697 0xfc00ffff, 0xc0003d3c, 0 , 0,
20698 0x0 }, /* POOL32Sxf_4~*(30) */
20699 { reserved_block
, 0 , 0 , 32,
20700 0xfc00ffff, 0xc0003f3c, 0 , 0,
20701 0x0 }, /* POOL32Sxf_4~*(31) */
20702 { reserved_block
, 0 , 0 , 32,
20703 0xfc00ffff, 0xc000413c, 0 , 0,
20704 0x0 }, /* POOL32Sxf_4~*(32) */
20705 { reserved_block
, 0 , 0 , 32,
20706 0xfc00ffff, 0xc000433c, 0 , 0,
20707 0x0 }, /* POOL32Sxf_4~*(33) */
20708 { reserved_block
, 0 , 0 , 32,
20709 0xfc00ffff, 0xc000453c, 0 , 0,
20710 0x0 }, /* POOL32Sxf_4~*(34) */
20711 { reserved_block
, 0 , 0 , 32,
20712 0xfc00ffff, 0xc000473c, 0 , 0,
20713 0x0 }, /* POOL32Sxf_4~*(35) */
20714 { reserved_block
, 0 , 0 , 32,
20715 0xfc00ffff, 0xc000493c, 0 , 0,
20716 0x0 }, /* POOL32Sxf_4~*(36) */
20717 { instruction
, 0 , 0 , 32,
20718 0xfc00ffff, 0xc0004b3c, &NMD::DCLO
, 0,
20719 MIPS64_
}, /* DCLO */
20720 { reserved_block
, 0 , 0 , 32,
20721 0xfc00ffff, 0xc0004d3c, 0 , 0,
20722 0x0 }, /* POOL32Sxf_4~*(38) */
20723 { reserved_block
, 0 , 0 , 32,
20724 0xfc00ffff, 0xc0004f3c, 0 , 0,
20725 0x0 }, /* POOL32Sxf_4~*(39) */
20726 { reserved_block
, 0 , 0 , 32,
20727 0xfc00ffff, 0xc000513c, 0 , 0,
20728 0x0 }, /* POOL32Sxf_4~*(40) */
20729 { reserved_block
, 0 , 0 , 32,
20730 0xfc00ffff, 0xc000533c, 0 , 0,
20731 0x0 }, /* POOL32Sxf_4~*(41) */
20732 { reserved_block
, 0 , 0 , 32,
20733 0xfc00ffff, 0xc000553c, 0 , 0,
20734 0x0 }, /* POOL32Sxf_4~*(42) */
20735 { reserved_block
, 0 , 0 , 32,
20736 0xfc00ffff, 0xc000573c, 0 , 0,
20737 0x0 }, /* POOL32Sxf_4~*(43) */
20738 { reserved_block
, 0 , 0 , 32,
20739 0xfc00ffff, 0xc000593c, 0 , 0,
20740 0x0 }, /* POOL32Sxf_4~*(44) */
20741 { instruction
, 0 , 0 , 32,
20742 0xfc00ffff, 0xc0005b3c, &NMD::DCLZ
, 0,
20743 MIPS64_
}, /* DCLZ */
20744 { reserved_block
, 0 , 0 , 32,
20745 0xfc00ffff, 0xc0005d3c, 0 , 0,
20746 0x0 }, /* POOL32Sxf_4~*(46) */
20747 { reserved_block
, 0 , 0 , 32,
20748 0xfc00ffff, 0xc0005f3c, 0 , 0,
20749 0x0 }, /* POOL32Sxf_4~*(47) */
20750 { reserved_block
, 0 , 0 , 32,
20751 0xfc00ffff, 0xc000613c, 0 , 0,
20752 0x0 }, /* POOL32Sxf_4~*(48) */
20753 { reserved_block
, 0 , 0 , 32,
20754 0xfc00ffff, 0xc000633c, 0 , 0,
20755 0x0 }, /* POOL32Sxf_4~*(49) */
20756 { reserved_block
, 0 , 0 , 32,
20757 0xfc00ffff, 0xc000653c, 0 , 0,
20758 0x0 }, /* POOL32Sxf_4~*(50) */
20759 { reserved_block
, 0 , 0 , 32,
20760 0xfc00ffff, 0xc000673c, 0 , 0,
20761 0x0 }, /* POOL32Sxf_4~*(51) */
20762 { reserved_block
, 0 , 0 , 32,
20763 0xfc00ffff, 0xc000693c, 0 , 0,
20764 0x0 }, /* POOL32Sxf_4~*(52) */
20765 { reserved_block
, 0 , 0 , 32,
20766 0xfc00ffff, 0xc0006b3c, 0 , 0,
20767 0x0 }, /* POOL32Sxf_4~*(53) */
20768 { reserved_block
, 0 , 0 , 32,
20769 0xfc00ffff, 0xc0006d3c, 0 , 0,
20770 0x0 }, /* POOL32Sxf_4~*(54) */
20771 { reserved_block
, 0 , 0 , 32,
20772 0xfc00ffff, 0xc0006f3c, 0 , 0,
20773 0x0 }, /* POOL32Sxf_4~*(55) */
20774 { reserved_block
, 0 , 0 , 32,
20775 0xfc00ffff, 0xc000713c, 0 , 0,
20776 0x0 }, /* POOL32Sxf_4~*(56) */
20777 { reserved_block
, 0 , 0 , 32,
20778 0xfc00ffff, 0xc000733c, 0 , 0,
20779 0x0 }, /* POOL32Sxf_4~*(57) */
20780 { reserved_block
, 0 , 0 , 32,
20781 0xfc00ffff, 0xc000753c, 0 , 0,
20782 0x0 }, /* POOL32Sxf_4~*(58) */
20783 { reserved_block
, 0 , 0 , 32,
20784 0xfc00ffff, 0xc000773c, 0 , 0,
20785 0x0 }, /* POOL32Sxf_4~*(59) */
20786 { reserved_block
, 0 , 0 , 32,
20787 0xfc00ffff, 0xc000793c, 0 , 0,
20788 0x0 }, /* POOL32Sxf_4~*(60) */
20789 { reserved_block
, 0 , 0 , 32,
20790 0xfc00ffff, 0xc0007b3c, 0 , 0,
20791 0x0 }, /* POOL32Sxf_4~*(61) */
20792 { reserved_block
, 0 , 0 , 32,
20793 0xfc00ffff, 0xc0007d3c, 0 , 0,
20794 0x0 }, /* POOL32Sxf_4~*(62) */
20795 { reserved_block
, 0 , 0 , 32,
20796 0xfc00ffff, 0xc0007f3c, 0 , 0,
20797 0x0 }, /* POOL32Sxf_4~*(63) */
20798 { reserved_block
, 0 , 0 , 32,
20799 0xfc00ffff, 0xc000813c, 0 , 0,
20800 0x0 }, /* POOL32Sxf_4~*(64) */
20801 { reserved_block
, 0 , 0 , 32,
20802 0xfc00ffff, 0xc000833c, 0 , 0,
20803 0x0 }, /* POOL32Sxf_4~*(65) */
20804 { reserved_block
, 0 , 0 , 32,
20805 0xfc00ffff, 0xc000853c, 0 , 0,
20806 0x0 }, /* POOL32Sxf_4~*(66) */
20807 { reserved_block
, 0 , 0 , 32,
20808 0xfc00ffff, 0xc000873c, 0 , 0,
20809 0x0 }, /* POOL32Sxf_4~*(67) */
20810 { reserved_block
, 0 , 0 , 32,
20811 0xfc00ffff, 0xc000893c, 0 , 0,
20812 0x0 }, /* POOL32Sxf_4~*(68) */
20813 { reserved_block
, 0 , 0 , 32,
20814 0xfc00ffff, 0xc0008b3c, 0 , 0,
20815 0x0 }, /* POOL32Sxf_4~*(69) */
20816 { reserved_block
, 0 , 0 , 32,
20817 0xfc00ffff, 0xc0008d3c, 0 , 0,
20818 0x0 }, /* POOL32Sxf_4~*(70) */
20819 { reserved_block
, 0 , 0 , 32,
20820 0xfc00ffff, 0xc0008f3c, 0 , 0,
20821 0x0 }, /* POOL32Sxf_4~*(71) */
20822 { reserved_block
, 0 , 0 , 32,
20823 0xfc00ffff, 0xc000913c, 0 , 0,
20824 0x0 }, /* POOL32Sxf_4~*(72) */
20825 { reserved_block
, 0 , 0 , 32,
20826 0xfc00ffff, 0xc000933c, 0 , 0,
20827 0x0 }, /* POOL32Sxf_4~*(73) */
20828 { reserved_block
, 0 , 0 , 32,
20829 0xfc00ffff, 0xc000953c, 0 , 0,
20830 0x0 }, /* POOL32Sxf_4~*(74) */
20831 { reserved_block
, 0 , 0 , 32,
20832 0xfc00ffff, 0xc000973c, 0 , 0,
20833 0x0 }, /* POOL32Sxf_4~*(75) */
20834 { reserved_block
, 0 , 0 , 32,
20835 0xfc00ffff, 0xc000993c, 0 , 0,
20836 0x0 }, /* POOL32Sxf_4~*(76) */
20837 { reserved_block
, 0 , 0 , 32,
20838 0xfc00ffff, 0xc0009b3c, 0 , 0,
20839 0x0 }, /* POOL32Sxf_4~*(77) */
20840 { reserved_block
, 0 , 0 , 32,
20841 0xfc00ffff, 0xc0009d3c, 0 , 0,
20842 0x0 }, /* POOL32Sxf_4~*(78) */
20843 { reserved_block
, 0 , 0 , 32,
20844 0xfc00ffff, 0xc0009f3c, 0 , 0,
20845 0x0 }, /* POOL32Sxf_4~*(79) */
20846 { reserved_block
, 0 , 0 , 32,
20847 0xfc00ffff, 0xc000a13c, 0 , 0,
20848 0x0 }, /* POOL32Sxf_4~*(80) */
20849 { reserved_block
, 0 , 0 , 32,
20850 0xfc00ffff, 0xc000a33c, 0 , 0,
20851 0x0 }, /* POOL32Sxf_4~*(81) */
20852 { reserved_block
, 0 , 0 , 32,
20853 0xfc00ffff, 0xc000a53c, 0 , 0,
20854 0x0 }, /* POOL32Sxf_4~*(82) */
20855 { reserved_block
, 0 , 0 , 32,
20856 0xfc00ffff, 0xc000a73c, 0 , 0,
20857 0x0 }, /* POOL32Sxf_4~*(83) */
20858 { reserved_block
, 0 , 0 , 32,
20859 0xfc00ffff, 0xc000a93c, 0 , 0,
20860 0x0 }, /* POOL32Sxf_4~*(84) */
20861 { reserved_block
, 0 , 0 , 32,
20862 0xfc00ffff, 0xc000ab3c, 0 , 0,
20863 0x0 }, /* POOL32Sxf_4~*(85) */
20864 { reserved_block
, 0 , 0 , 32,
20865 0xfc00ffff, 0xc000ad3c, 0 , 0,
20866 0x0 }, /* POOL32Sxf_4~*(86) */
20867 { reserved_block
, 0 , 0 , 32,
20868 0xfc00ffff, 0xc000af3c, 0 , 0,
20869 0x0 }, /* POOL32Sxf_4~*(87) */
20870 { reserved_block
, 0 , 0 , 32,
20871 0xfc00ffff, 0xc000b13c, 0 , 0,
20872 0x0 }, /* POOL32Sxf_4~*(88) */
20873 { reserved_block
, 0 , 0 , 32,
20874 0xfc00ffff, 0xc000b33c, 0 , 0,
20875 0x0 }, /* POOL32Sxf_4~*(89) */
20876 { reserved_block
, 0 , 0 , 32,
20877 0xfc00ffff, 0xc000b53c, 0 , 0,
20878 0x0 }, /* POOL32Sxf_4~*(90) */
20879 { reserved_block
, 0 , 0 , 32,
20880 0xfc00ffff, 0xc000b73c, 0 , 0,
20881 0x0 }, /* POOL32Sxf_4~*(91) */
20882 { reserved_block
, 0 , 0 , 32,
20883 0xfc00ffff, 0xc000b93c, 0 , 0,
20884 0x0 }, /* POOL32Sxf_4~*(92) */
20885 { reserved_block
, 0 , 0 , 32,
20886 0xfc00ffff, 0xc000bb3c, 0 , 0,
20887 0x0 }, /* POOL32Sxf_4~*(93) */
20888 { reserved_block
, 0 , 0 , 32,
20889 0xfc00ffff, 0xc000bd3c, 0 , 0,
20890 0x0 }, /* POOL32Sxf_4~*(94) */
20891 { reserved_block
, 0 , 0 , 32,
20892 0xfc00ffff, 0xc000bf3c, 0 , 0,
20893 0x0 }, /* POOL32Sxf_4~*(95) */
20894 { reserved_block
, 0 , 0 , 32,
20895 0xfc00ffff, 0xc000c13c, 0 , 0,
20896 0x0 }, /* POOL32Sxf_4~*(96) */
20897 { reserved_block
, 0 , 0 , 32,
20898 0xfc00ffff, 0xc000c33c, 0 , 0,
20899 0x0 }, /* POOL32Sxf_4~*(97) */
20900 { reserved_block
, 0 , 0 , 32,
20901 0xfc00ffff, 0xc000c53c, 0 , 0,
20902 0x0 }, /* POOL32Sxf_4~*(98) */
20903 { reserved_block
, 0 , 0 , 32,
20904 0xfc00ffff, 0xc000c73c, 0 , 0,
20905 0x0 }, /* POOL32Sxf_4~*(99) */
20906 { reserved_block
, 0 , 0 , 32,
20907 0xfc00ffff, 0xc000c93c, 0 , 0,
20908 0x0 }, /* POOL32Sxf_4~*(100) */
20909 { reserved_block
, 0 , 0 , 32,
20910 0xfc00ffff, 0xc000cb3c, 0 , 0,
20911 0x0 }, /* POOL32Sxf_4~*(101) */
20912 { reserved_block
, 0 , 0 , 32,
20913 0xfc00ffff, 0xc000cd3c, 0 , 0,
20914 0x0 }, /* POOL32Sxf_4~*(102) */
20915 { reserved_block
, 0 , 0 , 32,
20916 0xfc00ffff, 0xc000cf3c, 0 , 0,
20917 0x0 }, /* POOL32Sxf_4~*(103) */
20918 { reserved_block
, 0 , 0 , 32,
20919 0xfc00ffff, 0xc000d13c, 0 , 0,
20920 0x0 }, /* POOL32Sxf_4~*(104) */
20921 { reserved_block
, 0 , 0 , 32,
20922 0xfc00ffff, 0xc000d33c, 0 , 0,
20923 0x0 }, /* POOL32Sxf_4~*(105) */
20924 { reserved_block
, 0 , 0 , 32,
20925 0xfc00ffff, 0xc000d53c, 0 , 0,
20926 0x0 }, /* POOL32Sxf_4~*(106) */
20927 { reserved_block
, 0 , 0 , 32,
20928 0xfc00ffff, 0xc000d73c, 0 , 0,
20929 0x0 }, /* POOL32Sxf_4~*(107) */
20930 { reserved_block
, 0 , 0 , 32,
20931 0xfc00ffff, 0xc000d93c, 0 , 0,
20932 0x0 }, /* POOL32Sxf_4~*(108) */
20933 { reserved_block
, 0 , 0 , 32,
20934 0xfc00ffff, 0xc000db3c, 0 , 0,
20935 0x0 }, /* POOL32Sxf_4~*(109) */
20936 { reserved_block
, 0 , 0 , 32,
20937 0xfc00ffff, 0xc000dd3c, 0 , 0,
20938 0x0 }, /* POOL32Sxf_4~*(110) */
20939 { reserved_block
, 0 , 0 , 32,
20940 0xfc00ffff, 0xc000df3c, 0 , 0,
20941 0x0 }, /* POOL32Sxf_4~*(111) */
20942 { reserved_block
, 0 , 0 , 32,
20943 0xfc00ffff, 0xc000e13c, 0 , 0,
20944 0x0 }, /* POOL32Sxf_4~*(112) */
20945 { reserved_block
, 0 , 0 , 32,
20946 0xfc00ffff, 0xc000e33c, 0 , 0,
20947 0x0 }, /* POOL32Sxf_4~*(113) */
20948 { reserved_block
, 0 , 0 , 32,
20949 0xfc00ffff, 0xc000e53c, 0 , 0,
20950 0x0 }, /* POOL32Sxf_4~*(114) */
20951 { reserved_block
, 0 , 0 , 32,
20952 0xfc00ffff, 0xc000e73c, 0 , 0,
20953 0x0 }, /* POOL32Sxf_4~*(115) */
20954 { reserved_block
, 0 , 0 , 32,
20955 0xfc00ffff, 0xc000e93c, 0 , 0,
20956 0x0 }, /* POOL32Sxf_4~*(116) */
20957 { reserved_block
, 0 , 0 , 32,
20958 0xfc00ffff, 0xc000eb3c, 0 , 0,
20959 0x0 }, /* POOL32Sxf_4~*(117) */
20960 { reserved_block
, 0 , 0 , 32,
20961 0xfc00ffff, 0xc000ed3c, 0 , 0,
20962 0x0 }, /* POOL32Sxf_4~*(118) */
20963 { reserved_block
, 0 , 0 , 32,
20964 0xfc00ffff, 0xc000ef3c, 0 , 0,
20965 0x0 }, /* POOL32Sxf_4~*(119) */
20966 { reserved_block
, 0 , 0 , 32,
20967 0xfc00ffff, 0xc000f13c, 0 , 0,
20968 0x0 }, /* POOL32Sxf_4~*(120) */
20969 { reserved_block
, 0 , 0 , 32,
20970 0xfc00ffff, 0xc000f33c, 0 , 0,
20971 0x0 }, /* POOL32Sxf_4~*(121) */
20972 { reserved_block
, 0 , 0 , 32,
20973 0xfc00ffff, 0xc000f53c, 0 , 0,
20974 0x0 }, /* POOL32Sxf_4~*(122) */
20975 { reserved_block
, 0 , 0 , 32,
20976 0xfc00ffff, 0xc000f73c, 0 , 0,
20977 0x0 }, /* POOL32Sxf_4~*(123) */
20978 { reserved_block
, 0 , 0 , 32,
20979 0xfc00ffff, 0xc000f93c, 0 , 0,
20980 0x0 }, /* POOL32Sxf_4~*(124) */
20981 { reserved_block
, 0 , 0 , 32,
20982 0xfc00ffff, 0xc000fb3c, 0 , 0,
20983 0x0 }, /* POOL32Sxf_4~*(125) */
20984 { reserved_block
, 0 , 0 , 32,
20985 0xfc00ffff, 0xc000fd3c, 0 , 0,
20986 0x0 }, /* POOL32Sxf_4~*(126) */
20987 { reserved_block
, 0 , 0 , 32,
20988 0xfc00ffff, 0xc000ff3c, 0 , 0,
20989 0x0 }, /* POOL32Sxf_4~*(127) */
20993 NMD::Pool
NMD::POOL32Sxf
[8] = {
20994 { reserved_block
, 0 , 0 , 32,
20995 0xfc0001ff, 0xc000003c, 0 , 0,
20996 0x0 }, /* POOL32Sxf~*(0) */
20997 { reserved_block
, 0 , 0 , 32,
20998 0xfc0001ff, 0xc000007c, 0 , 0,
20999 0x0 }, /* POOL32Sxf~*(1) */
21000 { reserved_block
, 0 , 0 , 32,
21001 0xfc0001ff, 0xc00000bc, 0 , 0,
21002 0x0 }, /* POOL32Sxf~*(2) */
21003 { reserved_block
, 0 , 0 , 32,
21004 0xfc0001ff, 0xc00000fc, 0 , 0,
21005 0x0 }, /* POOL32Sxf~*(3) */
21006 { pool
, POOL32Sxf_4
, 128 , 32,
21007 0xfc0001ff, 0xc000013c, 0 , 0,
21008 0x0 }, /* POOL32Sxf_4 */
21009 { reserved_block
, 0 , 0 , 32,
21010 0xfc0001ff, 0xc000017c, 0 , 0,
21011 0x0 }, /* POOL32Sxf~*(5) */
21012 { reserved_block
, 0 , 0 , 32,
21013 0xfc0001ff, 0xc00001bc, 0 , 0,
21014 0x0 }, /* POOL32Sxf~*(6) */
21015 { reserved_block
, 0 , 0 , 32,
21016 0xfc0001ff, 0xc00001fc, 0 , 0,
21017 0x0 }, /* POOL32Sxf~*(7) */
21021 NMD::Pool
NMD::POOL32S_4
[8] = {
21022 { instruction
, 0 , 0 , 32,
21023 0xfc00003f, 0xc0000004, &NMD::EXTD
, 0,
21024 MIPS64_
}, /* EXTD */
21025 { instruction
, 0 , 0 , 32,
21026 0xfc00003f, 0xc000000c, &NMD::EXTD32
, 0,
21027 MIPS64_
}, /* EXTD32 */
21028 { reserved_block
, 0 , 0 , 32,
21029 0xfc00003f, 0xc0000014, 0 , 0,
21030 0x0 }, /* POOL32S_4~*(2) */
21031 { reserved_block
, 0 , 0 , 32,
21032 0xfc00003f, 0xc000001c, 0 , 0,
21033 0x0 }, /* POOL32S_4~*(3) */
21034 { reserved_block
, 0 , 0 , 32,
21035 0xfc00003f, 0xc0000024, 0 , 0,
21036 0x0 }, /* POOL32S_4~*(4) */
21037 { reserved_block
, 0 , 0 , 32,
21038 0xfc00003f, 0xc000002c, 0 , 0,
21039 0x0 }, /* POOL32S_4~*(5) */
21040 { reserved_block
, 0 , 0 , 32,
21041 0xfc00003f, 0xc0000034, 0 , 0,
21042 0x0 }, /* POOL32S_4~*(6) */
21043 { pool
, POOL32Sxf
, 8 , 32,
21044 0xfc00003f, 0xc000003c, 0 , 0,
21045 0x0 }, /* POOL32Sxf */
21049 NMD::Pool
NMD::POOL32S
[8] = {
21050 { pool
, POOL32S_0
, 64 , 32,
21051 0xfc000007, 0xc0000000, 0 , 0,
21052 0x0 }, /* POOL32S_0 */
21053 { reserved_block
, 0 , 0 , 32,
21054 0xfc000007, 0xc0000001, 0 , 0,
21055 0x0 }, /* POOL32S~*(1) */
21056 { reserved_block
, 0 , 0 , 32,
21057 0xfc000007, 0xc0000002, 0 , 0,
21058 0x0 }, /* POOL32S~*(2) */
21059 { reserved_block
, 0 , 0 , 32,
21060 0xfc000007, 0xc0000003, 0 , 0,
21061 0x0 }, /* POOL32S~*(3) */
21062 { pool
, POOL32S_4
, 8 , 32,
21063 0xfc000007, 0xc0000004, 0 , 0,
21064 0x0 }, /* POOL32S_4 */
21065 { reserved_block
, 0 , 0 , 32,
21066 0xfc000007, 0xc0000005, 0 , 0,
21067 0x0 }, /* POOL32S~*(5) */
21068 { reserved_block
, 0 , 0 , 32,
21069 0xfc000007, 0xc0000006, 0 , 0,
21070 0x0 }, /* POOL32S~*(6) */
21071 { reserved_block
, 0 , 0 , 32,
21072 0xfc000007, 0xc0000007, 0 , 0,
21073 0x0 }, /* POOL32S~*(7) */
21077 NMD::Pool
NMD::P_LUI
[2] = {
21078 { instruction
, 0 , 0 , 32,
21079 0xfc000002, 0xe0000000, &NMD::LUI
, 0,
21081 { instruction
, 0 , 0 , 32,
21082 0xfc000002, 0xe0000002, &NMD::ALUIPC
, 0,
21083 0x0 }, /* ALUIPC */
21087 NMD::Pool
NMD::P_GP_LH
[2] = {
21088 { instruction
, 0 , 0 , 32,
21089 0xfc1c0001, 0x44100000, &NMD::LH_GP_
, 0,
21090 0x0 }, /* LH[GP] */
21091 { instruction
, 0 , 0 , 32,
21092 0xfc1c0001, 0x44100001, &NMD::LHU_GP_
, 0,
21093 0x0 }, /* LHU[GP] */
21097 NMD::Pool
NMD::P_GP_SH
[2] = {
21098 { instruction
, 0 , 0 , 32,
21099 0xfc1c0001, 0x44140000, &NMD::SH_GP_
, 0,
21100 0x0 }, /* SH[GP] */
21101 { reserved_block
, 0 , 0 , 32,
21102 0xfc1c0001, 0x44140001, 0 , 0,
21103 0x0 }, /* P.GP.SH~*(1) */
21107 NMD::Pool
NMD::P_GP_CP1
[4] = {
21108 { instruction
, 0 , 0 , 32,
21109 0xfc1c0003, 0x44180000, &NMD::LWC1_GP_
, 0,
21110 CP1_
}, /* LWC1[GP] */
21111 { instruction
, 0 , 0 , 32,
21112 0xfc1c0003, 0x44180001, &NMD::SWC1_GP_
, 0,
21113 CP1_
}, /* SWC1[GP] */
21114 { instruction
, 0 , 0 , 32,
21115 0xfc1c0003, 0x44180002, &NMD::LDC1_GP_
, 0,
21116 CP1_
}, /* LDC1[GP] */
21117 { instruction
, 0 , 0 , 32,
21118 0xfc1c0003, 0x44180003, &NMD::SDC1_GP_
, 0,
21119 CP1_
}, /* SDC1[GP] */
21123 NMD::Pool
NMD::P_GP_M64
[4] = {
21124 { instruction
, 0 , 0 , 32,
21125 0xfc1c0003, 0x441c0000, &NMD::LWU_GP_
, 0,
21126 MIPS64_
}, /* LWU[GP] */
21127 { reserved_block
, 0 , 0 , 32,
21128 0xfc1c0003, 0x441c0001, 0 , 0,
21129 0x0 }, /* P.GP.M64~*(1) */
21130 { reserved_block
, 0 , 0 , 32,
21131 0xfc1c0003, 0x441c0002, 0 , 0,
21132 0x0 }, /* P.GP.M64~*(2) */
21133 { reserved_block
, 0 , 0 , 32,
21134 0xfc1c0003, 0x441c0003, 0 , 0,
21135 0x0 }, /* P.GP.M64~*(3) */
21139 NMD::Pool
NMD::P_GP_BH
[8] = {
21140 { instruction
, 0 , 0 , 32,
21141 0xfc1c0000, 0x44000000, &NMD::LB_GP_
, 0,
21142 0x0 }, /* LB[GP] */
21143 { instruction
, 0 , 0 , 32,
21144 0xfc1c0000, 0x44040000, &NMD::SB_GP_
, 0,
21145 0x0 }, /* SB[GP] */
21146 { instruction
, 0 , 0 , 32,
21147 0xfc1c0000, 0x44080000, &NMD::LBU_GP_
, 0,
21148 0x0 }, /* LBU[GP] */
21149 { instruction
, 0 , 0 , 32,
21150 0xfc1c0000, 0x440c0000, &NMD::ADDIU_GP_B_
, 0,
21151 0x0 }, /* ADDIU[GP.B] */
21152 { pool
, P_GP_LH
, 2 , 32,
21153 0xfc1c0000, 0x44100000, 0 , 0,
21154 0x0 }, /* P.GP.LH */
21155 { pool
, P_GP_SH
, 2 , 32,
21156 0xfc1c0000, 0x44140000, 0 , 0,
21157 0x0 }, /* P.GP.SH */
21158 { pool
, P_GP_CP1
, 4 , 32,
21159 0xfc1c0000, 0x44180000, 0 , 0,
21160 0x0 }, /* P.GP.CP1 */
21161 { pool
, P_GP_M64
, 4 , 32,
21162 0xfc1c0000, 0x441c0000, 0 , 0,
21163 0x0 }, /* P.GP.M64 */
21167 NMD::Pool
NMD::P_LS_U12
[16] = {
21168 { instruction
, 0 , 0 , 32,
21169 0xfc00f000, 0x84000000, &NMD::LB_U12_
, 0,
21170 0x0 }, /* LB[U12] */
21171 { instruction
, 0 , 0 , 32,
21172 0xfc00f000, 0x84001000, &NMD::SB_U12_
, 0,
21173 0x0 }, /* SB[U12] */
21174 { instruction
, 0 , 0 , 32,
21175 0xfc00f000, 0x84002000, &NMD::LBU_U12_
, 0,
21176 0x0 }, /* LBU[U12] */
21177 { instruction
, 0 , 0 , 32,
21178 0xfc00f000, 0x84003000, &NMD::PREF_U12_
, 0,
21179 0x0 }, /* PREF[U12] */
21180 { instruction
, 0 , 0 , 32,
21181 0xfc00f000, 0x84004000, &NMD::LH_U12_
, 0,
21182 0x0 }, /* LH[U12] */
21183 { instruction
, 0 , 0 , 32,
21184 0xfc00f000, 0x84005000, &NMD::SH_U12_
, 0,
21185 0x0 }, /* SH[U12] */
21186 { instruction
, 0 , 0 , 32,
21187 0xfc00f000, 0x84006000, &NMD::LHU_U12_
, 0,
21188 0x0 }, /* LHU[U12] */
21189 { instruction
, 0 , 0 , 32,
21190 0xfc00f000, 0x84007000, &NMD::LWU_U12_
, 0,
21191 MIPS64_
}, /* LWU[U12] */
21192 { instruction
, 0 , 0 , 32,
21193 0xfc00f000, 0x84008000, &NMD::LW_U12_
, 0,
21194 0x0 }, /* LW[U12] */
21195 { instruction
, 0 , 0 , 32,
21196 0xfc00f000, 0x84009000, &NMD::SW_U12_
, 0,
21197 0x0 }, /* SW[U12] */
21198 { instruction
, 0 , 0 , 32,
21199 0xfc00f000, 0x8400a000, &NMD::LWC1_U12_
, 0,
21200 CP1_
}, /* LWC1[U12] */
21201 { instruction
, 0 , 0 , 32,
21202 0xfc00f000, 0x8400b000, &NMD::SWC1_U12_
, 0,
21203 CP1_
}, /* SWC1[U12] */
21204 { instruction
, 0 , 0 , 32,
21205 0xfc00f000, 0x8400c000, &NMD::LD_U12_
, 0,
21206 MIPS64_
}, /* LD[U12] */
21207 { instruction
, 0 , 0 , 32,
21208 0xfc00f000, 0x8400d000, &NMD::SD_U12_
, 0,
21209 MIPS64_
}, /* SD[U12] */
21210 { instruction
, 0 , 0 , 32,
21211 0xfc00f000, 0x8400e000, &NMD::LDC1_U12_
, 0,
21212 CP1_
}, /* LDC1[U12] */
21213 { instruction
, 0 , 0 , 32,
21214 0xfc00f000, 0x8400f000, &NMD::SDC1_U12_
, 0,
21215 CP1_
}, /* SDC1[U12] */
21219 NMD::Pool
NMD::P_PREF_S9_
[2] = {
21220 { instruction
, 0 , 0 , 32,
21221 0xffe07f00, 0xa7e01800, &NMD::SYNCI
, 0,
21223 { instruction
, 0 , 0 , 32,
21224 0xfc007f00, 0xa4001800, &NMD::PREF_S9_
, &NMD::PREF_S9__cond
,
21225 0x0 }, /* PREF[S9] */
21229 NMD::Pool
NMD::P_LS_S0
[16] = {
21230 { instruction
, 0 , 0 , 32,
21231 0xfc007f00, 0xa4000000, &NMD::LB_S9_
, 0,
21232 0x0 }, /* LB[S9] */
21233 { instruction
, 0 , 0 , 32,
21234 0xfc007f00, 0xa4000800, &NMD::SB_S9_
, 0,
21235 0x0 }, /* SB[S9] */
21236 { instruction
, 0 , 0 , 32,
21237 0xfc007f00, 0xa4001000, &NMD::LBU_S9_
, 0,
21238 0x0 }, /* LBU[S9] */
21239 { pool
, P_PREF_S9_
, 2 , 32,
21240 0xfc007f00, 0xa4001800, 0 , 0,
21241 0x0 }, /* P.PREF[S9] */
21242 { instruction
, 0 , 0 , 32,
21243 0xfc007f00, 0xa4002000, &NMD::LH_S9_
, 0,
21244 0x0 }, /* LH[S9] */
21245 { instruction
, 0 , 0 , 32,
21246 0xfc007f00, 0xa4002800, &NMD::SH_S9_
, 0,
21247 0x0 }, /* SH[S9] */
21248 { instruction
, 0 , 0 , 32,
21249 0xfc007f00, 0xa4003000, &NMD::LHU_S9_
, 0,
21250 0x0 }, /* LHU[S9] */
21251 { instruction
, 0 , 0 , 32,
21252 0xfc007f00, 0xa4003800, &NMD::LWU_S9_
, 0,
21253 MIPS64_
}, /* LWU[S9] */
21254 { instruction
, 0 , 0 , 32,
21255 0xfc007f00, 0xa4004000, &NMD::LW_S9_
, 0,
21256 0x0 }, /* LW[S9] */
21257 { instruction
, 0 , 0 , 32,
21258 0xfc007f00, 0xa4004800, &NMD::SW_S9_
, 0,
21259 0x0 }, /* SW[S9] */
21260 { instruction
, 0 , 0 , 32,
21261 0xfc007f00, 0xa4005000, &NMD::LWC1_S9_
, 0,
21262 CP1_
}, /* LWC1[S9] */
21263 { instruction
, 0 , 0 , 32,
21264 0xfc007f00, 0xa4005800, &NMD::SWC1_S9_
, 0,
21265 CP1_
}, /* SWC1[S9] */
21266 { instruction
, 0 , 0 , 32,
21267 0xfc007f00, 0xa4006000, &NMD::LD_S9_
, 0,
21268 MIPS64_
}, /* LD[S9] */
21269 { instruction
, 0 , 0 , 32,
21270 0xfc007f00, 0xa4006800, &NMD::SD_S9_
, 0,
21271 MIPS64_
}, /* SD[S9] */
21272 { instruction
, 0 , 0 , 32,
21273 0xfc007f00, 0xa4007000, &NMD::LDC1_S9_
, 0,
21274 CP1_
}, /* LDC1[S9] */
21275 { instruction
, 0 , 0 , 32,
21276 0xfc007f00, 0xa4007800, &NMD::SDC1_S9_
, 0,
21277 CP1_
}, /* SDC1[S9] */
21281 NMD::Pool
NMD::ASET_ACLR
[2] = {
21282 { instruction
, 0 , 0 , 32,
21283 0xfe007f00, 0xa4001100, &NMD::ASET
, 0,
21285 { instruction
, 0 , 0 , 32,
21286 0xfe007f00, 0xa6001100, &NMD::ACLR
, 0,
21291 NMD::Pool
NMD::P_LL
[4] = {
21292 { instruction
, 0 , 0 , 32,
21293 0xfc007f03, 0xa4005100, &NMD::LL
, 0,
21295 { instruction
, 0 , 0 , 32,
21296 0xfc007f03, 0xa4005101, &NMD::LLWP
, 0,
21298 { reserved_block
, 0 , 0 , 32,
21299 0xfc007f03, 0xa4005102, 0 , 0,
21300 0x0 }, /* P.LL~*(2) */
21301 { reserved_block
, 0 , 0 , 32,
21302 0xfc007f03, 0xa4005103, 0 , 0,
21303 0x0 }, /* P.LL~*(3) */
21307 NMD::Pool
NMD::P_SC
[4] = {
21308 { instruction
, 0 , 0 , 32,
21309 0xfc007f03, 0xa4005900, &NMD::SC
, 0,
21311 { instruction
, 0 , 0 , 32,
21312 0xfc007f03, 0xa4005901, &NMD::SCWP
, 0,
21314 { reserved_block
, 0 , 0 , 32,
21315 0xfc007f03, 0xa4005902, 0 , 0,
21316 0x0 }, /* P.SC~*(2) */
21317 { reserved_block
, 0 , 0 , 32,
21318 0xfc007f03, 0xa4005903, 0 , 0,
21319 0x0 }, /* P.SC~*(3) */
21323 NMD::Pool
NMD::P_LLD
[8] = {
21324 { instruction
, 0 , 0 , 32,
21325 0xfc007f07, 0xa4007100, &NMD::LLD
, 0,
21326 MIPS64_
}, /* LLD */
21327 { instruction
, 0 , 0 , 32,
21328 0xfc007f07, 0xa4007101, &NMD::LLDP
, 0,
21329 MIPS64_
}, /* LLDP */
21330 { reserved_block
, 0 , 0 , 32,
21331 0xfc007f07, 0xa4007102, 0 , 0,
21332 0x0 }, /* P.LLD~*(2) */
21333 { reserved_block
, 0 , 0 , 32,
21334 0xfc007f07, 0xa4007103, 0 , 0,
21335 0x0 }, /* P.LLD~*(3) */
21336 { reserved_block
, 0 , 0 , 32,
21337 0xfc007f07, 0xa4007104, 0 , 0,
21338 0x0 }, /* P.LLD~*(4) */
21339 { reserved_block
, 0 , 0 , 32,
21340 0xfc007f07, 0xa4007105, 0 , 0,
21341 0x0 }, /* P.LLD~*(5) */
21342 { reserved_block
, 0 , 0 , 32,
21343 0xfc007f07, 0xa4007106, 0 , 0,
21344 0x0 }, /* P.LLD~*(6) */
21345 { reserved_block
, 0 , 0 , 32,
21346 0xfc007f07, 0xa4007107, 0 , 0,
21347 0x0 }, /* P.LLD~*(7) */
21351 NMD::Pool
NMD::P_SCD
[8] = {
21352 { instruction
, 0 , 0 , 32,
21353 0xfc007f07, 0xa4007900, &NMD::SCD
, 0,
21354 MIPS64_
}, /* SCD */
21355 { instruction
, 0 , 0 , 32,
21356 0xfc007f07, 0xa4007901, &NMD::SCDP
, 0,
21357 MIPS64_
}, /* SCDP */
21358 { reserved_block
, 0 , 0 , 32,
21359 0xfc007f07, 0xa4007902, 0 , 0,
21360 0x0 }, /* P.SCD~*(2) */
21361 { reserved_block
, 0 , 0 , 32,
21362 0xfc007f07, 0xa4007903, 0 , 0,
21363 0x0 }, /* P.SCD~*(3) */
21364 { reserved_block
, 0 , 0 , 32,
21365 0xfc007f07, 0xa4007904, 0 , 0,
21366 0x0 }, /* P.SCD~*(4) */
21367 { reserved_block
, 0 , 0 , 32,
21368 0xfc007f07, 0xa4007905, 0 , 0,
21369 0x0 }, /* P.SCD~*(5) */
21370 { reserved_block
, 0 , 0 , 32,
21371 0xfc007f07, 0xa4007906, 0 , 0,
21372 0x0 }, /* P.SCD~*(6) */
21373 { reserved_block
, 0 , 0 , 32,
21374 0xfc007f07, 0xa4007907, 0 , 0,
21375 0x0 }, /* P.SCD~*(7) */
21379 NMD::Pool
NMD::P_LS_S1
[16] = {
21380 { reserved_block
, 0 , 0 , 32,
21381 0xfc007f00, 0xa4000100, 0 , 0,
21382 0x0 }, /* P.LS.S1~*(0) */
21383 { reserved_block
, 0 , 0 , 32,
21384 0xfc007f00, 0xa4000900, 0 , 0,
21385 0x0 }, /* P.LS.S1~*(1) */
21386 { pool
, ASET_ACLR
, 2 , 32,
21387 0xfc007f00, 0xa4001100, 0 , 0,
21388 0x0 }, /* ASET_ACLR */
21389 { reserved_block
, 0 , 0 , 32,
21390 0xfc007f00, 0xa4001900, 0 , 0,
21391 0x0 }, /* P.LS.S1~*(3) */
21392 { instruction
, 0 , 0 , 32,
21393 0xfc007f00, 0xa4002100, &NMD::UALH
, 0,
21394 XMMS_
}, /* UALH */
21395 { instruction
, 0 , 0 , 32,
21396 0xfc007f00, 0xa4002900, &NMD::UASH
, 0,
21397 XMMS_
}, /* UASH */
21398 { reserved_block
, 0 , 0 , 32,
21399 0xfc007f00, 0xa4003100, 0 , 0,
21400 0x0 }, /* P.LS.S1~*(6) */
21401 { instruction
, 0 , 0 , 32,
21402 0xfc007f00, 0xa4003900, &NMD::CACHE
, 0,
21403 CP0_
}, /* CACHE */
21404 { instruction
, 0 , 0 , 32,
21405 0xfc007f00, 0xa4004100, &NMD::LWC2
, 0,
21407 { instruction
, 0 , 0 , 32,
21408 0xfc007f00, 0xa4004900, &NMD::SWC2
, 0,
21410 { pool
, P_LL
, 4 , 32,
21411 0xfc007f00, 0xa4005100, 0 , 0,
21413 { pool
, P_SC
, 4 , 32,
21414 0xfc007f00, 0xa4005900, 0 , 0,
21416 { instruction
, 0 , 0 , 32,
21417 0xfc007f00, 0xa4006100, &NMD::LDC2
, 0,
21419 { instruction
, 0 , 0 , 32,
21420 0xfc007f00, 0xa4006900, &NMD::SDC2
, 0,
21422 { pool
, P_LLD
, 8 , 32,
21423 0xfc007f00, 0xa4007100, 0 , 0,
21425 { pool
, P_SCD
, 8 , 32,
21426 0xfc007f00, 0xa4007900, 0 , 0,
21431 NMD::Pool
NMD::P_PREFE
[2] = {
21432 { instruction
, 0 , 0 , 32,
21433 0xffe07f00, 0xa7e01a00, &NMD::SYNCIE
, 0,
21434 CP0_
| EVA_
}, /* SYNCIE */
21435 { instruction
, 0 , 0 , 32,
21436 0xfc007f00, 0xa4001a00, &NMD::PREFE
, &NMD::PREFE_cond
,
21437 CP0_
| EVA_
}, /* PREFE */
21441 NMD::Pool
NMD::P_LLE
[4] = {
21442 { instruction
, 0 , 0 , 32,
21443 0xfc007f03, 0xa4005200, &NMD::LLE
, 0,
21444 CP0_
| EVA_
}, /* LLE */
21445 { instruction
, 0 , 0 , 32,
21446 0xfc007f03, 0xa4005201, &NMD::LLWPE
, 0,
21447 CP0_
| EVA_
}, /* LLWPE */
21448 { reserved_block
, 0 , 0 , 32,
21449 0xfc007f03, 0xa4005202, 0 , 0,
21450 0x0 }, /* P.LLE~*(2) */
21451 { reserved_block
, 0 , 0 , 32,
21452 0xfc007f03, 0xa4005203, 0 , 0,
21453 0x0 }, /* P.LLE~*(3) */
21457 NMD::Pool
NMD::P_SCE
[4] = {
21458 { instruction
, 0 , 0 , 32,
21459 0xfc007f03, 0xa4005a00, &NMD::SCE
, 0,
21460 CP0_
| EVA_
}, /* SCE */
21461 { instruction
, 0 , 0 , 32,
21462 0xfc007f03, 0xa4005a01, &NMD::SCWPE
, 0,
21463 CP0_
| EVA_
}, /* SCWPE */
21464 { reserved_block
, 0 , 0 , 32,
21465 0xfc007f03, 0xa4005a02, 0 , 0,
21466 0x0 }, /* P.SCE~*(2) */
21467 { reserved_block
, 0 , 0 , 32,
21468 0xfc007f03, 0xa4005a03, 0 , 0,
21469 0x0 }, /* P.SCE~*(3) */
21473 NMD::Pool
NMD::P_LS_E0
[16] = {
21474 { instruction
, 0 , 0 , 32,
21475 0xfc007f00, 0xa4000200, &NMD::LBE
, 0,
21476 CP0_
| EVA_
}, /* LBE */
21477 { instruction
, 0 , 0 , 32,
21478 0xfc007f00, 0xa4000a00, &NMD::SBE
, 0,
21479 CP0_
| EVA_
}, /* SBE */
21480 { instruction
, 0 , 0 , 32,
21481 0xfc007f00, 0xa4001200, &NMD::LBUE
, 0,
21482 CP0_
| EVA_
}, /* LBUE */
21483 { pool
, P_PREFE
, 2 , 32,
21484 0xfc007f00, 0xa4001a00, 0 , 0,
21485 0x0 }, /* P.PREFE */
21486 { instruction
, 0 , 0 , 32,
21487 0xfc007f00, 0xa4002200, &NMD::LHE
, 0,
21488 CP0_
| EVA_
}, /* LHE */
21489 { instruction
, 0 , 0 , 32,
21490 0xfc007f00, 0xa4002a00, &NMD::SHE
, 0,
21491 CP0_
| EVA_
}, /* SHE */
21492 { instruction
, 0 , 0 , 32,
21493 0xfc007f00, 0xa4003200, &NMD::LHUE
, 0,
21494 CP0_
| EVA_
}, /* LHUE */
21495 { instruction
, 0 , 0 , 32,
21496 0xfc007f00, 0xa4003a00, &NMD::CACHEE
, 0,
21497 CP0_
| EVA_
}, /* CACHEE */
21498 { instruction
, 0 , 0 , 32,
21499 0xfc007f00, 0xa4004200, &NMD::LWE
, 0,
21500 CP0_
| EVA_
}, /* LWE */
21501 { instruction
, 0 , 0 , 32,
21502 0xfc007f00, 0xa4004a00, &NMD::SWE
, 0,
21503 CP0_
| EVA_
}, /* SWE */
21504 { pool
, P_LLE
, 4 , 32,
21505 0xfc007f00, 0xa4005200, 0 , 0,
21507 { pool
, P_SCE
, 4 , 32,
21508 0xfc007f00, 0xa4005a00, 0 , 0,
21510 { reserved_block
, 0 , 0 , 32,
21511 0xfc007f00, 0xa4006200, 0 , 0,
21512 0x0 }, /* P.LS.E0~*(12) */
21513 { reserved_block
, 0 , 0 , 32,
21514 0xfc007f00, 0xa4006a00, 0 , 0,
21515 0x0 }, /* P.LS.E0~*(13) */
21516 { reserved_block
, 0 , 0 , 32,
21517 0xfc007f00, 0xa4007200, 0 , 0,
21518 0x0 }, /* P.LS.E0~*(14) */
21519 { reserved_block
, 0 , 0 , 32,
21520 0xfc007f00, 0xa4007a00, 0 , 0,
21521 0x0 }, /* P.LS.E0~*(15) */
21525 NMD::Pool
NMD::P_LS_WM
[2] = {
21526 { instruction
, 0 , 0 , 32,
21527 0xfc000f00, 0xa4000400, &NMD::LWM
, 0,
21529 { instruction
, 0 , 0 , 32,
21530 0xfc000f00, 0xa4000c00, &NMD::SWM
, 0,
21535 NMD::Pool
NMD::P_LS_UAWM
[2] = {
21536 { instruction
, 0 , 0 , 32,
21537 0xfc000f00, 0xa4000500, &NMD::UALWM
, 0,
21538 XMMS_
}, /* UALWM */
21539 { instruction
, 0 , 0 , 32,
21540 0xfc000f00, 0xa4000d00, &NMD::UASWM
, 0,
21541 XMMS_
}, /* UASWM */
21545 NMD::Pool
NMD::P_LS_DM
[2] = {
21546 { instruction
, 0 , 0 , 32,
21547 0xfc000f00, 0xa4000600, &NMD::LDM
, 0,
21548 MIPS64_
}, /* LDM */
21549 { instruction
, 0 , 0 , 32,
21550 0xfc000f00, 0xa4000e00, &NMD::SDM
, 0,
21551 MIPS64_
}, /* SDM */
21555 NMD::Pool
NMD::P_LS_UADM
[2] = {
21556 { instruction
, 0 , 0 , 32,
21557 0xfc000f00, 0xa4000700, &NMD::UALDM
, 0,
21558 MIPS64_
}, /* UALDM */
21559 { instruction
, 0 , 0 , 32,
21560 0xfc000f00, 0xa4000f00, &NMD::UASDM
, 0,
21561 MIPS64_
}, /* UASDM */
21565 NMD::Pool
NMD::P_LS_S9
[8] = {
21566 { pool
, P_LS_S0
, 16 , 32,
21567 0xfc000700, 0xa4000000, 0 , 0,
21568 0x0 }, /* P.LS.S0 */
21569 { pool
, P_LS_S1
, 16 , 32,
21570 0xfc000700, 0xa4000100, 0 , 0,
21571 0x0 }, /* P.LS.S1 */
21572 { pool
, P_LS_E0
, 16 , 32,
21573 0xfc000700, 0xa4000200, 0 , 0,
21574 0x0 }, /* P.LS.E0 */
21575 { reserved_block
, 0 , 0 , 32,
21576 0xfc000700, 0xa4000300, 0 , 0,
21577 0x0 }, /* P.LS.S9~*(3) */
21578 { pool
, P_LS_WM
, 2 , 32,
21579 0xfc000700, 0xa4000400, 0 , 0,
21580 0x0 }, /* P.LS.WM */
21581 { pool
, P_LS_UAWM
, 2 , 32,
21582 0xfc000700, 0xa4000500, 0 , 0,
21583 0x0 }, /* P.LS.UAWM */
21584 { pool
, P_LS_DM
, 2 , 32,
21585 0xfc000700, 0xa4000600, 0 , 0,
21586 0x0 }, /* P.LS.DM */
21587 { pool
, P_LS_UADM
, 2 , 32,
21588 0xfc000700, 0xa4000700, 0 , 0,
21589 0x0 }, /* P.LS.UADM */
21593 NMD::Pool
NMD::P_BAL
[2] = {
21594 { branch_instruction
, 0 , 0 , 32,
21595 0xfe000000, 0x28000000, &NMD::BC_32_
, 0,
21596 0x0 }, /* BC[32] */
21597 { call_instruction
, 0 , 0 , 32,
21598 0xfe000000, 0x2a000000, &NMD::BALC_32_
, 0,
21599 0x0 }, /* BALC[32] */
21603 NMD::Pool
NMD::P_BALRSC
[2] = {
21604 { branch_instruction
, 0 , 0 , 32,
21605 0xffe0f000, 0x48008000, &NMD::BRSC
, 0,
21607 { call_instruction
, 0 , 0 , 32,
21608 0xfc00f000, 0x48008000, &NMD::BALRSC
, &NMD::BALRSC_cond
,
21609 0x0 }, /* BALRSC */
21613 NMD::Pool
NMD::P_J
[16] = {
21614 { call_instruction
, 0 , 0 , 32,
21615 0xfc00f000, 0x48000000, &NMD::JALRC_32_
, 0,
21616 0x0 }, /* JALRC[32] */
21617 { call_instruction
, 0 , 0 , 32,
21618 0xfc00f000, 0x48001000, &NMD::JALRC_HB
, 0,
21619 0x0 }, /* JALRC.HB */
21620 { reserved_block
, 0 , 0 , 32,
21621 0xfc00f000, 0x48002000, 0 , 0,
21622 0x0 }, /* P.J~*(2) */
21623 { reserved_block
, 0 , 0 , 32,
21624 0xfc00f000, 0x48003000, 0 , 0,
21625 0x0 }, /* P.J~*(3) */
21626 { reserved_block
, 0 , 0 , 32,
21627 0xfc00f000, 0x48004000, 0 , 0,
21628 0x0 }, /* P.J~*(4) */
21629 { reserved_block
, 0 , 0 , 32,
21630 0xfc00f000, 0x48005000, 0 , 0,
21631 0x0 }, /* P.J~*(5) */
21632 { reserved_block
, 0 , 0 , 32,
21633 0xfc00f000, 0x48006000, 0 , 0,
21634 0x0 }, /* P.J~*(6) */
21635 { reserved_block
, 0 , 0 , 32,
21636 0xfc00f000, 0x48007000, 0 , 0,
21637 0x0 }, /* P.J~*(7) */
21638 { pool
, P_BALRSC
, 2 , 32,
21639 0xfc00f000, 0x48008000, 0 , 0,
21640 0x0 }, /* P.BALRSC */
21641 { reserved_block
, 0 , 0 , 32,
21642 0xfc00f000, 0x48009000, 0 , 0,
21643 0x0 }, /* P.J~*(9) */
21644 { reserved_block
, 0 , 0 , 32,
21645 0xfc00f000, 0x4800a000, 0 , 0,
21646 0x0 }, /* P.J~*(10) */
21647 { reserved_block
, 0 , 0 , 32,
21648 0xfc00f000, 0x4800b000, 0 , 0,
21649 0x0 }, /* P.J~*(11) */
21650 { reserved_block
, 0 , 0 , 32,
21651 0xfc00f000, 0x4800c000, 0 , 0,
21652 0x0 }, /* P.J~*(12) */
21653 { reserved_block
, 0 , 0 , 32,
21654 0xfc00f000, 0x4800d000, 0 , 0,
21655 0x0 }, /* P.J~*(13) */
21656 { reserved_block
, 0 , 0 , 32,
21657 0xfc00f000, 0x4800e000, 0 , 0,
21658 0x0 }, /* P.J~*(14) */
21659 { reserved_block
, 0 , 0 , 32,
21660 0xfc00f000, 0x4800f000, 0 , 0,
21661 0x0 }, /* P.J~*(15) */
21665 NMD::Pool
NMD::P_BR3A
[32] = {
21666 { branch_instruction
, 0 , 0 , 32,
21667 0xfc1fc000, 0x88004000, &NMD::BC1EQZC
, 0,
21668 CP1_
}, /* BC1EQZC */
21669 { branch_instruction
, 0 , 0 , 32,
21670 0xfc1fc000, 0x88014000, &NMD::BC1NEZC
, 0,
21671 CP1_
}, /* BC1NEZC */
21672 { branch_instruction
, 0 , 0 , 32,
21673 0xfc1fc000, 0x88024000, &NMD::BC2EQZC
, 0,
21674 CP2_
}, /* BC2EQZC */
21675 { branch_instruction
, 0 , 0 , 32,
21676 0xfc1fc000, 0x88034000, &NMD::BC2NEZC
, 0,
21677 CP2_
}, /* BC2NEZC */
21678 { branch_instruction
, 0 , 0 , 32,
21679 0xfc1fc000, 0x88044000, &NMD::BPOSGE32C
, 0,
21680 DSP_
}, /* BPOSGE32C */
21681 { reserved_block
, 0 , 0 , 32,
21682 0xfc1fc000, 0x88054000, 0 , 0,
21683 0x0 }, /* P.BR3A~*(5) */
21684 { reserved_block
, 0 , 0 , 32,
21685 0xfc1fc000, 0x88064000, 0 , 0,
21686 0x0 }, /* P.BR3A~*(6) */
21687 { reserved_block
, 0 , 0 , 32,
21688 0xfc1fc000, 0x88074000, 0 , 0,
21689 0x0 }, /* P.BR3A~*(7) */
21690 { reserved_block
, 0 , 0 , 32,
21691 0xfc1fc000, 0x88084000, 0 , 0,
21692 0x0 }, /* P.BR3A~*(8) */
21693 { reserved_block
, 0 , 0 , 32,
21694 0xfc1fc000, 0x88094000, 0 , 0,
21695 0x0 }, /* P.BR3A~*(9) */
21696 { reserved_block
, 0 , 0 , 32,
21697 0xfc1fc000, 0x880a4000, 0 , 0,
21698 0x0 }, /* P.BR3A~*(10) */
21699 { reserved_block
, 0 , 0 , 32,
21700 0xfc1fc000, 0x880b4000, 0 , 0,
21701 0x0 }, /* P.BR3A~*(11) */
21702 { reserved_block
, 0 , 0 , 32,
21703 0xfc1fc000, 0x880c4000, 0 , 0,
21704 0x0 }, /* P.BR3A~*(12) */
21705 { reserved_block
, 0 , 0 , 32,
21706 0xfc1fc000, 0x880d4000, 0 , 0,
21707 0x0 }, /* P.BR3A~*(13) */
21708 { reserved_block
, 0 , 0 , 32,
21709 0xfc1fc000, 0x880e4000, 0 , 0,
21710 0x0 }, /* P.BR3A~*(14) */
21711 { reserved_block
, 0 , 0 , 32,
21712 0xfc1fc000, 0x880f4000, 0 , 0,
21713 0x0 }, /* P.BR3A~*(15) */
21714 { reserved_block
, 0 , 0 , 32,
21715 0xfc1fc000, 0x88104000, 0 , 0,
21716 0x0 }, /* P.BR3A~*(16) */
21717 { reserved_block
, 0 , 0 , 32,
21718 0xfc1fc000, 0x88114000, 0 , 0,
21719 0x0 }, /* P.BR3A~*(17) */
21720 { reserved_block
, 0 , 0 , 32,
21721 0xfc1fc000, 0x88124000, 0 , 0,
21722 0x0 }, /* P.BR3A~*(18) */
21723 { reserved_block
, 0 , 0 , 32,
21724 0xfc1fc000, 0x88134000, 0 , 0,
21725 0x0 }, /* P.BR3A~*(19) */
21726 { reserved_block
, 0 , 0 , 32,
21727 0xfc1fc000, 0x88144000, 0 , 0,
21728 0x0 }, /* P.BR3A~*(20) */
21729 { reserved_block
, 0 , 0 , 32,
21730 0xfc1fc000, 0x88154000, 0 , 0,
21731 0x0 }, /* P.BR3A~*(21) */
21732 { reserved_block
, 0 , 0 , 32,
21733 0xfc1fc000, 0x88164000, 0 , 0,
21734 0x0 }, /* P.BR3A~*(22) */
21735 { reserved_block
, 0 , 0 , 32,
21736 0xfc1fc000, 0x88174000, 0 , 0,
21737 0x0 }, /* P.BR3A~*(23) */
21738 { reserved_block
, 0 , 0 , 32,
21739 0xfc1fc000, 0x88184000, 0 , 0,
21740 0x0 }, /* P.BR3A~*(24) */
21741 { reserved_block
, 0 , 0 , 32,
21742 0xfc1fc000, 0x88194000, 0 , 0,
21743 0x0 }, /* P.BR3A~*(25) */
21744 { reserved_block
, 0 , 0 , 32,
21745 0xfc1fc000, 0x881a4000, 0 , 0,
21746 0x0 }, /* P.BR3A~*(26) */
21747 { reserved_block
, 0 , 0 , 32,
21748 0xfc1fc000, 0x881b4000, 0 , 0,
21749 0x0 }, /* P.BR3A~*(27) */
21750 { reserved_block
, 0 , 0 , 32,
21751 0xfc1fc000, 0x881c4000, 0 , 0,
21752 0x0 }, /* P.BR3A~*(28) */
21753 { reserved_block
, 0 , 0 , 32,
21754 0xfc1fc000, 0x881d4000, 0 , 0,
21755 0x0 }, /* P.BR3A~*(29) */
21756 { reserved_block
, 0 , 0 , 32,
21757 0xfc1fc000, 0x881e4000, 0 , 0,
21758 0x0 }, /* P.BR3A~*(30) */
21759 { reserved_block
, 0 , 0 , 32,
21760 0xfc1fc000, 0x881f4000, 0 , 0,
21761 0x0 }, /* P.BR3A~*(31) */
21765 NMD::Pool
NMD::P_BR1
[4] = {
21766 { branch_instruction
, 0 , 0 , 32,
21767 0xfc00c000, 0x88000000, &NMD::BEQC_32_
, 0,
21768 0x0 }, /* BEQC[32] */
21769 { pool
, P_BR3A
, 32 , 32,
21770 0xfc00c000, 0x88004000, 0 , 0,
21771 0x0 }, /* P.BR3A */
21772 { branch_instruction
, 0 , 0 , 32,
21773 0xfc00c000, 0x88008000, &NMD::BGEC
, 0,
21775 { branch_instruction
, 0 , 0 , 32,
21776 0xfc00c000, 0x8800c000, &NMD::BGEUC
, 0,
21781 NMD::Pool
NMD::P_BR2
[4] = {
21782 { branch_instruction
, 0 , 0 , 32,
21783 0xfc00c000, 0xa8000000, &NMD::BNEC_32_
, 0,
21784 0x0 }, /* BNEC[32] */
21785 { reserved_block
, 0 , 0 , 32,
21786 0xfc00c000, 0xa8004000, 0 , 0,
21787 0x0 }, /* P.BR2~*(1) */
21788 { branch_instruction
, 0 , 0 , 32,
21789 0xfc00c000, 0xa8008000, &NMD::BLTC
, 0,
21791 { branch_instruction
, 0 , 0 , 32,
21792 0xfc00c000, 0xa800c000, &NMD::BLTUC
, 0,
21797 NMD::Pool
NMD::P_BRI
[8] = {
21798 { branch_instruction
, 0 , 0 , 32,
21799 0xfc1c0000, 0xc8000000, &NMD::BEQIC
, 0,
21801 { branch_instruction
, 0 , 0 , 32,
21802 0xfc1c0000, 0xc8040000, &NMD::BBEQZC
, 0,
21803 XMMS_
}, /* BBEQZC */
21804 { branch_instruction
, 0 , 0 , 32,
21805 0xfc1c0000, 0xc8080000, &NMD::BGEIC
, 0,
21807 { branch_instruction
, 0 , 0 , 32,
21808 0xfc1c0000, 0xc80c0000, &NMD::BGEIUC
, 0,
21809 0x0 }, /* BGEIUC */
21810 { branch_instruction
, 0 , 0 , 32,
21811 0xfc1c0000, 0xc8100000, &NMD::BNEIC
, 0,
21813 { branch_instruction
, 0 , 0 , 32,
21814 0xfc1c0000, 0xc8140000, &NMD::BBNEZC
, 0,
21815 XMMS_
}, /* BBNEZC */
21816 { branch_instruction
, 0 , 0 , 32,
21817 0xfc1c0000, 0xc8180000, &NMD::BLTIC
, 0,
21819 { branch_instruction
, 0 , 0 , 32,
21820 0xfc1c0000, 0xc81c0000, &NMD::BLTIUC
, 0,
21821 0x0 }, /* BLTIUC */
21825 NMD::Pool
NMD::P32
[32] = {
21826 { pool
, P_ADDIU
, 2 , 32,
21827 0xfc000000, 0x00000000, 0 , 0,
21828 0x0 }, /* P.ADDIU */
21829 { pool
, P32A
, 8 , 32,
21830 0xfc000000, 0x20000000, 0 , 0,
21832 { pool
, P_GP_W
, 4 , 32,
21833 0xfc000000, 0x40000000, 0 , 0,
21834 0x0 }, /* P.GP.W */
21835 { pool
, POOL48I
, 32 , 48,
21836 0xfc0000000000ull
, 0x600000000000ull
, 0 , 0,
21837 0x0 }, /* POOL48I */
21838 { pool
, P_U12
, 16 , 32,
21839 0xfc000000, 0x80000000, 0 , 0,
21841 { pool
, POOL32F
, 8 , 32,
21842 0xfc000000, 0xa0000000, 0 , 0,
21843 CP1_
}, /* POOL32F */
21844 { pool
, POOL32S
, 8 , 32,
21845 0xfc000000, 0xc0000000, 0 , 0,
21846 0x0 }, /* POOL32S */
21847 { pool
, P_LUI
, 2 , 32,
21848 0xfc000000, 0xe0000000, 0 , 0,
21850 { instruction
, 0 , 0 , 32,
21851 0xfc000000, 0x04000000, &NMD::ADDIUPC_32_
, 0,
21852 0x0 }, /* ADDIUPC[32] */
21853 { reserved_block
, 0 , 0 , 32,
21854 0xfc000000, 0x24000000, 0 , 0,
21855 0x0 }, /* P32~*(5) */
21856 { pool
, P_GP_BH
, 8 , 32,
21857 0xfc000000, 0x44000000, 0 , 0,
21858 0x0 }, /* P.GP.BH */
21859 { reserved_block
, 0 , 0 , 32,
21860 0xfc000000, 0x64000000, 0 , 0,
21861 0x0 }, /* P32~*(13) */
21862 { pool
, P_LS_U12
, 16 , 32,
21863 0xfc000000, 0x84000000, 0 , 0,
21864 0x0 }, /* P.LS.U12 */
21865 { pool
, P_LS_S9
, 8 , 32,
21866 0xfc000000, 0xa4000000, 0 , 0,
21867 0x0 }, /* P.LS.S9 */
21868 { reserved_block
, 0 , 0 , 32,
21869 0xfc000000, 0xc4000000, 0 , 0,
21870 0x0 }, /* P32~*(25) */
21871 { reserved_block
, 0 , 0 , 32,
21872 0xfc000000, 0xe4000000, 0 , 0,
21873 0x0 }, /* P32~*(29) */
21874 { call_instruction
, 0 , 0 , 32,
21875 0xfc000000, 0x08000000, &NMD::MOVE_BALC
, 0,
21876 XMMS_
}, /* MOVE.BALC */
21877 { pool
, P_BAL
, 2 , 32,
21878 0xfc000000, 0x28000000, 0 , 0,
21880 { pool
, P_J
, 16 , 32,
21881 0xfc000000, 0x48000000, 0 , 0,
21883 { reserved_block
, 0 , 0 , 32,
21884 0xfc000000, 0x68000000, 0 , 0,
21885 0x0 }, /* P32~*(14) */
21886 { pool
, P_BR1
, 4 , 32,
21887 0xfc000000, 0x88000000, 0 , 0,
21889 { pool
, P_BR2
, 4 , 32,
21890 0xfc000000, 0xa8000000, 0 , 0,
21892 { pool
, P_BRI
, 8 , 32,
21893 0xfc000000, 0xc8000000, 0 , 0,
21895 { reserved_block
, 0 , 0 , 32,
21896 0xfc000000, 0xe8000000, 0 , 0,
21897 0x0 }, /* P32~*(30) */
21898 { reserved_block
, 0 , 0 , 32,
21899 0xfc000000, 0x0c000000, 0 , 0,
21900 0x0 }, /* P32~*(3) */
21901 { reserved_block
, 0 , 0 , 32,
21902 0xfc000000, 0x2c000000, 0 , 0,
21903 0x0 }, /* P32~*(7) */
21904 { reserved_block
, 0 , 0 , 32,
21905 0xfc000000, 0x4c000000, 0 , 0,
21906 0x0 }, /* P32~*(11) */
21907 { reserved_block
, 0 , 0 , 32,
21908 0xfc000000, 0x6c000000, 0 , 0,
21909 0x0 }, /* P32~*(15) */
21910 { reserved_block
, 0 , 0 , 32,
21911 0xfc000000, 0x8c000000, 0 , 0,
21912 0x0 }, /* P32~*(19) */
21913 { reserved_block
, 0 , 0 , 32,
21914 0xfc000000, 0xac000000, 0 , 0,
21915 0x0 }, /* P32~*(23) */
21916 { reserved_block
, 0 , 0 , 32,
21917 0xfc000000, 0xcc000000, 0 , 0,
21918 0x0 }, /* P32~*(27) */
21919 { reserved_block
, 0 , 0 , 32,
21920 0xfc000000, 0xec000000, 0 , 0,
21921 0x0 }, /* P32~*(31) */
21925 NMD::Pool
NMD::P16_SYSCALL
[2] = {
21926 { instruction
, 0 , 0 , 16,
21927 0xfffc , 0x1008 , &NMD::SYSCALL_16_
, 0,
21928 0x0 }, /* SYSCALL[16] */
21929 { instruction
, 0 , 0 , 16,
21930 0xfffc , 0x100c , &NMD::HYPCALL_16_
, 0,
21931 CP0_
| VZ_
}, /* HYPCALL[16] */
21935 NMD::Pool
NMD::P16_RI
[4] = {
21936 { reserved_block
, 0 , 0 , 16,
21937 0xfff8 , 0x1000 , 0 , 0,
21938 0x0 }, /* P16.RI~*(0) */
21939 { pool
, P16_SYSCALL
, 2 , 16,
21940 0xfff8 , 0x1008 , 0 , 0,
21941 0x0 }, /* P16.SYSCALL */
21942 { instruction
, 0 , 0 , 16,
21943 0xfff8 , 0x1010 , &NMD::BREAK_16_
, 0,
21944 0x0 }, /* BREAK[16] */
21945 { instruction
, 0 , 0 , 16,
21946 0xfff8 , 0x1018 , &NMD::SDBBP_16_
, 0,
21947 EJTAG_
}, /* SDBBP[16] */
21951 NMD::Pool
NMD::P16_MV
[2] = {
21952 { pool
, P16_RI
, 4 , 16,
21953 0xffe0 , 0x1000 , 0 , 0,
21954 0x0 }, /* P16.RI */
21955 { instruction
, 0 , 0 , 16,
21956 0xfc00 , 0x1000 , &NMD::MOVE
, &NMD::MOVE_cond
,
21961 NMD::Pool
NMD::P16_SHIFT
[2] = {
21962 { instruction
, 0 , 0 , 16,
21963 0xfc08 , 0x3000 , &NMD::SLL_16_
, 0,
21964 0x0 }, /* SLL[16] */
21965 { instruction
, 0 , 0 , 16,
21966 0xfc08 , 0x3008 , &NMD::SRL_16_
, 0,
21967 0x0 }, /* SRL[16] */
21971 NMD::Pool
NMD::POOL16C_00
[4] = {
21972 { instruction
, 0 , 0 , 16,
21973 0xfc0f , 0x5000 , &NMD::NOT_16_
, 0,
21974 0x0 }, /* NOT[16] */
21975 { instruction
, 0 , 0 , 16,
21976 0xfc0f , 0x5004 , &NMD::XOR_16_
, 0,
21977 0x0 }, /* XOR[16] */
21978 { instruction
, 0 , 0 , 16,
21979 0xfc0f , 0x5008 , &NMD::AND_16_
, 0,
21980 0x0 }, /* AND[16] */
21981 { instruction
, 0 , 0 , 16,
21982 0xfc0f , 0x500c , &NMD::OR_16_
, 0,
21983 0x0 }, /* OR[16] */
21987 NMD::Pool
NMD::POOL16C_0
[2] = {
21988 { pool
, POOL16C_00
, 4 , 16,
21989 0xfc03 , 0x5000 , 0 , 0,
21990 0x0 }, /* POOL16C_00 */
21991 { reserved_block
, 0 , 0 , 16,
21992 0xfc03 , 0x5002 , 0 , 0,
21993 0x0 }, /* POOL16C_0~*(1) */
21997 NMD::Pool
NMD::P16C
[2] = {
21998 { pool
, POOL16C_0
, 2 , 16,
21999 0xfc01 , 0x5000 , 0 , 0,
22000 0x0 }, /* POOL16C_0 */
22001 { instruction
, 0 , 0 , 16,
22002 0xfc01 , 0x5001 , &NMD::LWXS_16_
, 0,
22003 0x0 }, /* LWXS[16] */
22007 NMD::Pool
NMD::P16_A1
[2] = {
22008 { reserved_block
, 0 , 0 , 16,
22009 0xfc40 , 0x7000 , 0 , 0,
22010 0x0 }, /* P16.A1~*(0) */
22011 { instruction
, 0 , 0 , 16,
22012 0xfc40 , 0x7040 , &NMD::ADDIU_R1_SP_
, 0,
22013 0x0 }, /* ADDIU[R1.SP] */
22017 NMD::Pool
NMD::P_ADDIU_RS5_
[2] = {
22018 { instruction
, 0 , 0 , 16,
22019 0xffe8 , 0x9008 , &NMD::NOP_16_
, 0,
22020 0x0 }, /* NOP[16] */
22021 { instruction
, 0 , 0 , 16,
22022 0xfc08 , 0x9008 , &NMD::ADDIU_RS5_
, &NMD::ADDIU_RS5__cond
,
22023 0x0 }, /* ADDIU[RS5] */
22027 NMD::Pool
NMD::P16_A2
[2] = {
22028 { instruction
, 0 , 0 , 16,
22029 0xfc08 , 0x9000 , &NMD::ADDIU_R2_
, 0,
22030 0x0 }, /* ADDIU[R2] */
22031 { pool
, P_ADDIU_RS5_
, 2 , 16,
22032 0xfc08 , 0x9008 , 0 , 0,
22033 0x0 }, /* P.ADDIU[RS5] */
22037 NMD::Pool
NMD::P16_ADDU
[2] = {
22038 { instruction
, 0 , 0 , 16,
22039 0xfc01 , 0xb000 , &NMD::ADDU_16_
, 0,
22040 0x0 }, /* ADDU[16] */
22041 { instruction
, 0 , 0 , 16,
22042 0xfc01 , 0xb001 , &NMD::SUBU_16_
, 0,
22043 0x0 }, /* SUBU[16] */
22047 NMD::Pool
NMD::P16_JRC
[2] = {
22048 { branch_instruction
, 0 , 0 , 16,
22049 0xfc1f , 0xd800 , &NMD::JRC
, 0,
22051 { call_instruction
, 0 , 0 , 16,
22052 0xfc1f , 0xd810 , &NMD::JALRC_16_
, 0,
22053 0x0 }, /* JALRC[16] */
22057 NMD::Pool
NMD::P16_BR1
[2] = {
22058 { branch_instruction
, 0 , 0 , 16,
22059 0xfc00 , 0xd800 , &NMD::BEQC_16_
, &NMD::BEQC_16__cond
,
22060 XMMS_
}, /* BEQC[16] */
22061 { branch_instruction
, 0 , 0 , 16,
22062 0xfc00 , 0xd800 , &NMD::BNEC_16_
, &NMD::BNEC_16__cond
,
22063 XMMS_
}, /* BNEC[16] */
22067 NMD::Pool
NMD::P16_BR
[2] = {
22068 { pool
, P16_JRC
, 2 , 16,
22069 0xfc0f , 0xd800 , 0 , 0,
22070 0x0 }, /* P16.JRC */
22071 { pool
, P16_BR1
, 2 , 16,
22072 0xfc00 , 0xd800 , 0 , &NMD::P16_BR1_cond
,
22073 0x0 }, /* P16.BR1 */
22077 NMD::Pool
NMD::P16_SR
[2] = {
22078 { instruction
, 0 , 0 , 16,
22079 0xfd00 , 0x1c00 , &NMD::SAVE_16_
, 0,
22080 0x0 }, /* SAVE[16] */
22081 { return_instruction
, 0 , 0 , 16,
22082 0xfd00 , 0x1d00 , &NMD::RESTORE_JRC_16_
, 0,
22083 0x0 }, /* RESTORE.JRC[16] */
22087 NMD::Pool
NMD::P16_4X4
[4] = {
22088 { instruction
, 0 , 0 , 16,
22089 0xfd08 , 0x3c00 , &NMD::ADDU_4X4_
, 0,
22090 XMMS_
}, /* ADDU[4X4] */
22091 { instruction
, 0 , 0 , 16,
22092 0xfd08 , 0x3c08 , &NMD::MUL_4X4_
, 0,
22093 XMMS_
}, /* MUL[4X4] */
22094 { reserved_block
, 0 , 0 , 16,
22095 0xfd08 , 0x3d00 , 0 , 0,
22096 0x0 }, /* P16.4X4~*(2) */
22097 { reserved_block
, 0 , 0 , 16,
22098 0xfd08 , 0x3d08 , 0 , 0,
22099 0x0 }, /* P16.4X4~*(3) */
22103 NMD::Pool
NMD::P16_LB
[4] = {
22104 { instruction
, 0 , 0 , 16,
22105 0xfc0c , 0x5c00 , &NMD::LB_16_
, 0,
22106 0x0 }, /* LB[16] */
22107 { instruction
, 0 , 0 , 16,
22108 0xfc0c , 0x5c04 , &NMD::SB_16_
, 0,
22109 0x0 }, /* SB[16] */
22110 { instruction
, 0 , 0 , 16,
22111 0xfc0c , 0x5c08 , &NMD::LBU_16_
, 0,
22112 0x0 }, /* LBU[16] */
22113 { reserved_block
, 0 , 0 , 16,
22114 0xfc0c , 0x5c0c , 0 , 0,
22115 0x0 }, /* P16.LB~*(3) */
22119 NMD::Pool
NMD::P16_LH
[4] = {
22120 { instruction
, 0 , 0 , 16,
22121 0xfc09 , 0x7c00 , &NMD::LH_16_
, 0,
22122 0x0 }, /* LH[16] */
22123 { instruction
, 0 , 0 , 16,
22124 0xfc09 , 0x7c01 , &NMD::SH_16_
, 0,
22125 0x0 }, /* SH[16] */
22126 { instruction
, 0 , 0 , 16,
22127 0xfc09 , 0x7c08 , &NMD::LHU_16_
, 0,
22128 0x0 }, /* LHU[16] */
22129 { reserved_block
, 0 , 0 , 16,
22130 0xfc09 , 0x7c09 , 0 , 0,
22131 0x0 }, /* P16.LH~*(3) */
22135 NMD::Pool
NMD::P16
[32] = {
22136 { pool
, P16_MV
, 2 , 16,
22137 0xfc00 , 0x1000 , 0 , 0,
22138 0x0 }, /* P16.MV */
22139 { pool
, P16_SHIFT
, 2 , 16,
22140 0xfc00 , 0x3000 , 0 , 0,
22141 0x0 }, /* P16.SHIFT */
22142 { pool
, P16C
, 2 , 16,
22143 0xfc00 , 0x5000 , 0 , 0,
22145 { pool
, P16_A1
, 2 , 16,
22146 0xfc00 , 0x7000 , 0 , 0,
22147 0x0 }, /* P16.A1 */
22148 { pool
, P16_A2
, 2 , 16,
22149 0xfc00 , 0x9000 , 0 , 0,
22150 0x0 }, /* P16.A2 */
22151 { pool
, P16_ADDU
, 2 , 16,
22152 0xfc00 , 0xb000 , 0 , 0,
22153 0x0 }, /* P16.ADDU */
22154 { instruction
, 0 , 0 , 16,
22155 0xfc00 , 0xd000 , &NMD::LI_16_
, 0,
22156 0x0 }, /* LI[16] */
22157 { instruction
, 0 , 0 , 16,
22158 0xfc00 , 0xf000 , &NMD::ANDI_16_
, 0,
22159 0x0 }, /* ANDI[16] */
22160 { instruction
, 0 , 0 , 16,
22161 0xfc00 , 0x1400 , &NMD::LW_16_
, 0,
22162 0x0 }, /* LW[16] */
22163 { instruction
, 0 , 0 , 16,
22164 0xfc00 , 0x3400 , &NMD::LW_SP_
, 0,
22165 0x0 }, /* LW[SP] */
22166 { instruction
, 0 , 0 , 16,
22167 0xfc00 , 0x5400 , &NMD::LW_GP16_
, 0,
22168 0x0 }, /* LW[GP16] */
22169 { instruction
, 0 , 0 , 16,
22170 0xfc00 , 0x7400 , &NMD::LW_4X4_
, 0,
22171 XMMS_
}, /* LW[4X4] */
22172 { instruction
, 0 , 0 , 16,
22173 0xfc00 , 0x9400 , &NMD::SW_16_
, 0,
22174 0x0 }, /* SW[16] */
22175 { instruction
, 0 , 0 , 16,
22176 0xfc00 , 0xb400 , &NMD::SW_SP_
, 0,
22177 0x0 }, /* SW[SP] */
22178 { instruction
, 0 , 0 , 16,
22179 0xfc00 , 0xd400 , &NMD::SW_GP16_
, 0,
22180 0x0 }, /* SW[GP16] */
22181 { instruction
, 0 , 0 , 16,
22182 0xfc00 , 0xf400 , &NMD::SW_4X4_
, 0,
22183 XMMS_
}, /* SW[4X4] */
22184 { branch_instruction
, 0 , 0 , 16,
22185 0xfc00 , 0x1800 , &NMD::BC_16_
, 0,
22186 0x0 }, /* BC[16] */
22187 { call_instruction
, 0 , 0 , 16,
22188 0xfc00 , 0x3800 , &NMD::BALC_16_
, 0,
22189 0x0 }, /* BALC[16] */
22190 { reserved_block
, 0 , 0 , 16,
22191 0xfc00 , 0x5800 , 0 , 0,
22192 0x0 }, /* P16~*(10) */
22193 { reserved_block
, 0 , 0 , 16,
22194 0xfc00 , 0x7800 , 0 , 0,
22195 0x0 }, /* P16~*(14) */
22196 { branch_instruction
, 0 , 0 , 16,
22197 0xfc00 , 0x9800 , &NMD::BEQZC_16_
, 0,
22198 0x0 }, /* BEQZC[16] */
22199 { branch_instruction
, 0 , 0 , 16,
22200 0xfc00 , 0xb800 , &NMD::BNEZC_16_
, 0,
22201 0x0 }, /* BNEZC[16] */
22202 { pool
, P16_BR
, 2 , 16,
22203 0xfc00 , 0xd800 , 0 , 0,
22204 0x0 }, /* P16.BR */
22205 { reserved_block
, 0 , 0 , 16,
22206 0xfc00 , 0xf800 , 0 , 0,
22207 0x0 }, /* P16~*(30) */
22208 { pool
, P16_SR
, 2 , 16,
22209 0xfc00 , 0x1c00 , 0 , 0,
22210 0x0 }, /* P16.SR */
22211 { pool
, P16_4X4
, 4 , 16,
22212 0xfc00 , 0x3c00 , 0 , 0,
22213 0x0 }, /* P16.4X4 */
22214 { pool
, P16_LB
, 4 , 16,
22215 0xfc00 , 0x5c00 , 0 , 0,
22216 0x0 }, /* P16.LB */
22217 { pool
, P16_LH
, 4 , 16,
22218 0xfc00 , 0x7c00 , 0 , 0,
22219 0x0 }, /* P16.LH */
22220 { reserved_block
, 0 , 0 , 16,
22221 0xfc00 , 0x9c00 , 0 , 0,
22222 0x0 }, /* P16~*(19) */
22223 { instruction
, 0 , 0 , 16,
22224 0xfc00 , 0xbc00 , &NMD::MOVEP
, 0,
22225 XMMS_
}, /* MOVEP */
22226 { reserved_block
, 0 , 0 , 16,
22227 0xfc00 , 0xdc00 , 0 , 0,
22228 0x0 }, /* P16~*(27) */
22229 { instruction
, 0 , 0 , 16,
22230 0xfc00 , 0xfc00 , &NMD::MOVEP_REV_
, 0,
22231 XMMS_
}, /* MOVEP[REV] */
22235 NMD::Pool
NMD::MAJOR
[2] = {
22236 { pool
, P32
, 32 , 32,
22237 0x10000000, 0x00000000, 0 , 0,
22239 { pool
, P16
, 32 , 16,
22240 0x1000 , 0x1000 , 0 , 0,