Lines Matching refs:instr

73   void PrintRs(Instruction* instr);
74 void PrintRt(Instruction* instr);
75 void PrintRd(Instruction* instr);
76 void PrintFs(Instruction* instr);
77 void PrintFt(Instruction* instr);
78 void PrintFd(Instruction* instr);
79 void PrintSa(Instruction* instr);
80 void PrintLsaSa(Instruction* instr);
81 void PrintSd(Instruction* instr);
82 void PrintSs1(Instruction* instr);
83 void PrintSs2(Instruction* instr);
84 void PrintSs3(Instruction* instr);
85 void PrintSs4(Instruction* instr);
86 void PrintSs5(Instruction* instr);
87 void PrintBc(Instruction* instr);
88 void PrintCc(Instruction* instr);
89 void PrintFunction(Instruction* instr);
90 void PrintSecondaryField(Instruction* instr);
91 void PrintUImm9(Instruction* instr);
92 void PrintSImm9(Instruction* instr);
93 void PrintUImm16(Instruction* instr);
94 void PrintSImm16(Instruction* instr);
95 void PrintXImm16(Instruction* instr);
96 void PrintPCImm16(Instruction* instr, int delta_pc, int n_bits);
97 void PrintXImm18(Instruction* instr);
98 void PrintSImm18(Instruction* instr);
99 void PrintXImm19(Instruction* instr);
100 void PrintSImm19(Instruction* instr);
101 void PrintXImm21(Instruction* instr);
102 void PrintSImm21(Instruction* instr);
103 void PrintPCImm21(Instruction* instr, int delta_pc, int n_bits);
104 void PrintXImm26(Instruction* instr);
105 void PrintSImm26(Instruction* instr);
106 void PrintPCImm26(Instruction* instr, int delta_pc, int n_bits);
107 void PrintPCImm26(Instruction* instr);
108 void PrintCode(Instruction* instr); // For break and trap instructions.
109 void PrintFormat(Instruction* instr); // For floating format postfix.
110 void PrintBp2(Instruction* instr);
111 void PrintBp3(Instruction* instr);
112 void PrintMsaDataFormat(Instruction* instr);
113 void PrintMsaXImm8(Instruction* instr);
114 void PrintMsaImm8(Instruction* instr);
115 void PrintMsaImm5(Instruction* instr);
116 void PrintMsaSImm5(Instruction* instr);
117 void PrintMsaSImm10(Instruction* instr, bool is_mi10 = false);
118 void PrintMsaImmBit(Instruction* instr);
119 void PrintMsaImmElm(Instruction* instr);
120 void PrintMsaCopy(Instruction* instr);
122 void PrintInstructionName(Instruction* instr);
125 int FormatRegister(Instruction* instr, const char* option);
126 int FormatFPURegister(Instruction* instr, const char* option);
127 int FormatMSARegister(Instruction* instr, const char* option);
128 int FormatOption(Instruction* instr, const char* option);
129 void Format(Instruction* instr, const char* format);
130 void Unknown(Instruction* instr);
131 int DecodeBreakInstr(Instruction* instr);
134 bool DecodeTypeRegisterRsType(Instruction* instr);
135 void DecodeTypeRegisterSRsType(Instruction* instr);
136 void DecodeTypeRegisterDRsType(Instruction* instr);
137 void DecodeTypeRegisterLRsType(Instruction* instr);
138 void DecodeTypeRegisterWRsType(Instruction* instr);
139 void DecodeTypeRegisterSPECIAL(Instruction* instr);
140 void DecodeTypeRegisterSPECIAL2(Instruction* instr);
141 void DecodeTypeRegisterSPECIAL3(Instruction* instr);
142 void DecodeTypeRegisterCOP1(Instruction* instr);
143 void DecodeTypeRegisterCOP1X(Instruction* instr);
144 int DecodeTypeRegister(Instruction* instr);
146 void DecodeTypeImmediateCOP1(Instruction* instr);
147 void DecodeTypeImmediateREGIMM(Instruction* instr);
148 void DecodeTypeImmediateSPECIAL3(Instruction* instr);
149 void DecodeTypeImmediate(Instruction* instr);
151 void DecodeTypeJump(Instruction* instr);
153 void DecodeTypeMsaI8(Instruction* instr);
154 void DecodeTypeMsaI5(Instruction* instr);
155 void DecodeTypeMsaI10(Instruction* instr);
156 void DecodeTypeMsaELM(Instruction* instr);
157 void DecodeTypeMsaBIT(Instruction* instr);
158 void DecodeTypeMsaMI10(Instruction* instr);
159 void DecodeTypeMsa3R(Instruction* instr);
160 void DecodeTypeMsa3RF(Instruction* instr);
161 void DecodeTypeMsaVec(Instruction* instr);
162 void DecodeTypeMsa2R(Instruction* instr);
163 void DecodeTypeMsa2RF(Instruction* instr);
201 void Decoder::PrintRs(Instruction* instr) { in PrintRs() argument
202 int reg = instr->RsValue(); in PrintRs()
207 void Decoder::PrintRt(Instruction* instr) { in PrintRt() argument
208 int reg = instr->RtValue(); in PrintRt()
213 void Decoder::PrintRd(Instruction* instr) { in PrintRd() argument
214 int reg = instr->RdValue(); in PrintRd()
249 void Decoder::PrintFs(Instruction* instr) { in PrintFs() argument
250 int freg = instr->RsValue(); in PrintFs()
255 void Decoder::PrintFt(Instruction* instr) { in PrintFt() argument
256 int freg = instr->RtValue(); in PrintFt()
261 void Decoder::PrintFd(Instruction* instr) { in PrintFd() argument
262 int freg = instr->RdValue(); in PrintFd()
268 void Decoder::PrintSa(Instruction* instr) { in PrintSa() argument
269 int sa = instr->SaValue(); in PrintSa()
275 void Decoder::PrintLsaSa(Instruction* instr) { in PrintLsaSa() argument
276 int sa = instr->LsaSaValue() + 1; in PrintLsaSa()
282 void Decoder::PrintSd(Instruction* instr) { in PrintSd() argument
283 int sd = instr->RdValue(); in PrintSd()
288 void Decoder::PrintSs1(Instruction* instr) { in PrintSs1() argument
289 int msbd = instr->RdValue(); in PrintSs1()
295 void Decoder::PrintSs2(Instruction* instr) { in PrintSs2() argument
296 int msb = instr->RdValue(); in PrintSs2()
297 int lsb = instr->SaValue(); in PrintSs2()
303 void Decoder::PrintSs3(Instruction* instr) { in PrintSs3() argument
304 int msbdminus32 = instr->RdValue(); in PrintSs3()
310 void Decoder::PrintSs4(Instruction* instr) { in PrintSs4() argument
311 int msbminus32 = instr->RdValue(); in PrintSs4()
312 int lsb = instr->SaValue(); in PrintSs4()
318 void Decoder::PrintSs5(Instruction* instr) { in PrintSs5() argument
319 int lsbminus32 = instr->SaValue(); in PrintSs5()
326 void Decoder::PrintBc(Instruction* instr) { in PrintBc() argument
327 int cc = instr->FBccValue(); in PrintBc()
333 void Decoder::PrintCc(Instruction* instr) { in PrintCc() argument
334 int cc = instr->FCccValue(); in PrintCc()
339 void Decoder::PrintUImm9(Instruction* instr) { in PrintUImm9() argument
340 int32_t imm = instr->Imm9Value(); in PrintUImm9()
345 void Decoder::PrintSImm9(Instruction* instr) { in PrintSImm9() argument
346 int32_t imm = ((instr->Imm9Value()) << 23) >> 23; in PrintSImm9()
351 void Decoder::PrintUImm16(Instruction* instr) { in PrintUImm16() argument
352 int32_t imm = instr->Imm16Value(); in PrintUImm16()
358 void Decoder::PrintSImm16(Instruction* instr) { in PrintSImm16() argument
360 ((instr->Imm16Value()) << (32 - kImm16Bits)) >> (32 - kImm16Bits); in PrintSImm16()
366 void Decoder::PrintXImm16(Instruction* instr) { in PrintXImm16() argument
367 int32_t imm = instr->Imm16Value(); in PrintXImm16()
375 void Decoder::PrintPCImm16(Instruction* instr, int delta_pc, int n_bits) { in PrintPCImm16() argument
376 int16_t offset = instr->Imm16Value(); in PrintPCImm16()
379 converter_.NameOfAddress(reinterpret_cast<byte*>(instr) + in PrintPCImm16()
385 void Decoder::PrintSImm18(Instruction* instr) { in PrintSImm18() argument
387 ((instr->Imm18Value()) << (32 - kImm18Bits)) >> (32 - kImm18Bits); in PrintSImm18()
393 void Decoder::PrintXImm18(Instruction* instr) { in PrintXImm18() argument
394 int32_t imm = instr->Imm18Value(); in PrintXImm18()
400 void Decoder::PrintXImm19(Instruction* instr) { in PrintXImm19() argument
401 int32_t imm = instr->Imm19Value(); in PrintXImm19()
407 void Decoder::PrintSImm19(Instruction* instr) { in PrintSImm19() argument
408 int32_t imm19 = instr->Imm19Value(); in PrintSImm19()
417 void Decoder::PrintXImm21(Instruction* instr) { in PrintXImm21() argument
418 uint32_t imm = instr->Imm21Value(); in PrintXImm21()
424 void Decoder::PrintSImm21(Instruction* instr) { in PrintSImm21() argument
425 int32_t imm21 = instr->Imm21Value(); in PrintSImm21()
436 void Decoder::PrintPCImm21(Instruction* instr, int delta_pc, int n_bits) { in PrintPCImm21() argument
437 int32_t imm21 = instr->Imm21Value(); in PrintPCImm21()
443 converter_.NameOfAddress(reinterpret_cast<byte*>(instr) + in PrintPCImm21()
449 void Decoder::PrintXImm26(Instruction* instr) { in PrintXImm26() argument
450 uint64_t target = static_cast<uint64_t>(instr->Imm26Value()) in PrintXImm26()
452 target = (reinterpret_cast<uint64_t>(instr) & ~0xFFFFFFF) | target; in PrintXImm26()
459 void Decoder::PrintSImm26(Instruction* instr) { in PrintSImm26() argument
460 int32_t imm26 = instr->Imm26Value(); in PrintSImm26()
471 void Decoder::PrintPCImm26(Instruction* instr, int delta_pc, int n_bits) { in PrintPCImm26() argument
472 int32_t imm26 = instr->Imm26Value(); in PrintPCImm26()
478 converter_.NameOfAddress(reinterpret_cast<byte*>(instr) + in PrintPCImm26()
486 void Decoder::PrintPCImm26(Instruction* instr) { in PrintPCImm26() argument
487 int32_t imm26 = instr->Imm26Value(); in PrintPCImm26()
489 uint64_t pc = ((uint64_t)(instr + 1) & pc_mask) | (imm26 << 2); in PrintPCImm26()
496 void Decoder::PrintBp2(Instruction* instr) { in PrintBp2() argument
497 int bp2 = instr->Bp2Value(); in PrintBp2()
502 void Decoder::PrintBp3(Instruction* instr) { in PrintBp3() argument
503 int bp3 = instr->Bp3Value(); in PrintBp3()
509 void Decoder::PrintCode(Instruction* instr) { in PrintCode() argument
510 if (instr->OpcodeFieldRaw() != SPECIAL) in PrintCode()
512 switch (instr->FunctionFieldRaw()) { in PrintCode()
514 int32_t code = instr->Bits(25, 6); in PrintCode()
525 int32_t code = instr->Bits(15, 6); in PrintCode()
535 void Decoder::PrintMsaXImm8(Instruction* instr) { in PrintMsaXImm8() argument
536 int32_t imm = instr->MsaImm8Value(); in PrintMsaXImm8()
540 void Decoder::PrintMsaImm8(Instruction* instr) { in PrintMsaImm8() argument
541 int32_t imm = instr->MsaImm8Value(); in PrintMsaImm8()
545 void Decoder::PrintMsaImm5(Instruction* instr) { in PrintMsaImm5() argument
546 int32_t imm = instr->MsaImm5Value(); in PrintMsaImm5()
550 void Decoder::PrintMsaSImm5(Instruction* instr) { in PrintMsaSImm5() argument
551 int32_t imm = instr->MsaImm5Value(); in PrintMsaSImm5()
557 void Decoder::PrintMsaSImm10(Instruction* instr, bool is_mi10) { in PrintMsaSImm10() argument
558 int32_t imm = is_mi10 ? instr->MsaImmMI10Value() : instr->MsaImm10Value(); in PrintMsaSImm10()
564 void Decoder::PrintMsaImmBit(Instruction* instr) { in PrintMsaImmBit() argument
565 int32_t m = instr->MsaBitMValue(); in PrintMsaImmBit()
569 void Decoder::PrintMsaImmElm(Instruction* instr) { in PrintMsaImmElm() argument
570 int32_t n = instr->MsaElmNValue(); in PrintMsaImmElm()
574 void Decoder::PrintMsaCopy(Instruction* instr) { in PrintMsaCopy() argument
575 int32_t rd = instr->WdValue(); in PrintMsaCopy()
576 int32_t ws = instr->WsValue(); in PrintMsaCopy()
577 int32_t n = instr->MsaElmNValue(); in PrintMsaCopy()
583 void Decoder::PrintFormat(Instruction* instr) { in PrintFormat() argument
585 switch (instr->RsFieldRaw()) { in PrintFormat()
605 void Decoder::PrintMsaDataFormat(Instruction* instr) { in PrintMsaDataFormat() argument
606 DCHECK(instr->IsMSAInstr()); in PrintMsaDataFormat()
608 if (instr->IsMSABranchInstr()) { in PrintMsaDataFormat()
609 switch (instr->RsFieldRaw()) { in PrintMsaDataFormat()
636 switch (instr->MSAMinorOpcodeField()) { in PrintMsaDataFormat()
640 df = DF[instr->Bits(22, 21)]; in PrintMsaDataFormat()
643 df = DF[instr->Bits(1, 0)]; in PrintMsaDataFormat()
646 df = DF[instr->MsaBitDf()]; in PrintMsaDataFormat()
649 df = DF[instr->MsaElmDf()]; in PrintMsaDataFormat()
652 uint32_t opcode = instr->InstructionBits() & kMsa3RFMask; in PrintMsaDataFormat()
662 df = DF[1 + instr->Bit(21)]; in PrintMsaDataFormat()
665 df = DF[2 + instr->Bit(21)]; in PrintMsaDataFormat()
670 df = DF[instr->Bits(17, 16)]; in PrintMsaDataFormat()
673 df = DF[2 + instr->Bit(16)]; in PrintMsaDataFormat()
685 void Decoder::PrintInstructionName(Instruction* instr) { in PrintInstructionName() argument
691 int Decoder::FormatRegister(Instruction* instr, const char* format) { in FormatRegister() argument
694 int reg = instr->RsValue(); in FormatRegister()
698 int reg = instr->RtValue(); in FormatRegister()
702 int reg = instr->RdValue(); in FormatRegister()
712 int Decoder::FormatFPURegister(Instruction* instr, const char* format) { in FormatFPURegister() argument
714 if ((CTC1 == instr->RsFieldRaw()) || (CFC1 == instr->RsFieldRaw())) { in FormatFPURegister()
716 int reg = instr->FsValue(); in FormatFPURegister()
720 int reg = instr->FtValue(); in FormatFPURegister()
724 int reg = instr->FdValue(); in FormatFPURegister()
728 int reg = instr->FrValue(); in FormatFPURegister()
734 int reg = instr->FsValue(); in FormatFPURegister()
738 int reg = instr->FtValue(); in FormatFPURegister()
742 int reg = instr->FdValue(); in FormatFPURegister()
746 int reg = instr->FrValue(); in FormatFPURegister()
756 int Decoder::FormatMSARegister(Instruction* instr, const char* format) { in FormatMSARegister() argument
759 int reg = instr->WsValue(); in FormatMSARegister()
763 int reg = instr->WtValue(); in FormatMSARegister()
767 int reg = instr->WdValue(); in FormatMSARegister()
780 int Decoder::FormatOption(Instruction* instr, const char* format) { in FormatOption() argument
784 PrintCode(instr); in FormatOption()
794 PrintSImm16(instr); in FormatOption()
798 PrintSImm16(instr); in FormatOption()
802 PrintXImm16(instr); in FormatOption()
816 PrintPCImm16(instr, delta_pc, n_bits); in FormatOption()
829 PrintSImm18(instr); in FormatOption()
833 PrintXImm18(instr); in FormatOption()
842 PrintSImm19(instr); in FormatOption()
846 PrintXImm19(instr); in FormatOption()
854 PrintMsaSImm10(instr, false); in FormatOption()
857 PrintMsaSImm10(instr, true); in FormatOption()
866 PrintSImm21(instr); in FormatOption()
870 PrintXImm21(instr); in FormatOption()
884 PrintPCImm21(instr, delta_pc, n_bits); in FormatOption()
897 PrintSImm26(instr); in FormatOption()
901 PrintXImm26(instr); in FormatOption()
915 PrintPCImm26(instr, delta_pc, n_bits); in FormatOption()
923 PrintPCImm26(instr); in FormatOption()
932 PrintMsaImm5(instr); in FormatOption()
935 PrintMsaSImm5(instr); in FormatOption()
940 PrintMsaImm8(instr); in FormatOption()
946 PrintUImm9(instr); in FormatOption()
949 PrintSImm9(instr); in FormatOption()
954 PrintMsaImmBit(instr); in FormatOption()
958 PrintMsaImmElm(instr); in FormatOption()
964 return FormatRegister(instr, format); in FormatOption()
967 return FormatFPURegister(instr, format); in FormatOption()
970 return FormatMSARegister(instr, format); in FormatOption()
977 PrintLsaSa(instr); in FormatOption()
981 PrintSa(instr); in FormatOption()
987 PrintSd(instr); in FormatOption()
993 PrintSs1(instr); in FormatOption()
996 PrintSs2(instr); in FormatOption()
999 PrintSs3(instr); in FormatOption()
1002 PrintSs4(instr); in FormatOption()
1005 PrintSs5(instr); in FormatOption()
1015 PrintBc(instr); in FormatOption()
1022 PrintBp2(instr); in FormatOption()
1027 PrintBp3(instr); in FormatOption()
1036 PrintCc(instr); in FormatOption()
1040 if (instr->IsMSAInstr()) { in FormatOption()
1041 PrintMsaDataFormat(instr); in FormatOption()
1043 PrintFormat(instr); in FormatOption()
1054 void Decoder::Format(Instruction* instr, const char* format) { in Format() argument
1058 format += FormatOption(instr, format); in Format()
1070 void Decoder::Unknown(Instruction* instr) { in Unknown() argument
1071 Format(instr, "unknown"); in Unknown()
1075 int Decoder::DecodeBreakInstr(Instruction* instr) { in DecodeBreakInstr() argument
1077 if (instr->Bits(25, 6) == static_cast<int>(kMaxStopCode)) { in DecodeBreakInstr()
1079 Format(instr, "break, code: 'code"); in DecodeBreakInstr()
1082 static_cast<void*>(reinterpret_cast<int32_t*>(instr + kInstrSize)), in DecodeBreakInstr()
1084 *reinterpret_cast<char**>(instr + kInstrSize))); in DecodeBreakInstr()
1088 Format(instr, "break, code: 'code"); in DecodeBreakInstr()
1094 bool Decoder::DecodeTypeRegisterRsType(Instruction* instr) { in DecodeTypeRegisterRsType() argument
1095 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterRsType()
1097 Format(instr, "rint.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1100 Format(instr, "sel.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1103 Format(instr, "seleqz.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1106 Format(instr, "selnez.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1109 Format(instr, "movz.'t 'fd, 'fs, 'rt"); in DecodeTypeRegisterRsType()
1112 Format(instr, "movn.'t 'fd, 'fs, 'rt"); in DecodeTypeRegisterRsType()
1115 if (instr->Bit(16)) { in DecodeTypeRegisterRsType()
1116 Format(instr, "movt.'t 'fd, 'fs, 'Cc"); in DecodeTypeRegisterRsType()
1118 Format(instr, "movf.'t 'fd, 'fs, 'Cc"); in DecodeTypeRegisterRsType()
1122 Format(instr, "min.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1125 Format(instr, "max.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1128 Format(instr, "mina.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1131 Format(instr, "maxa.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1134 Format(instr, "add.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1137 Format(instr, "sub.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1140 Format(instr, "mul.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1143 Format(instr, "div.'t 'fd, 'fs, 'ft"); in DecodeTypeRegisterRsType()
1146 Format(instr, "abs.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1149 Format(instr, "mov.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1152 Format(instr, "neg.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1155 Format(instr, "sqrt.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1158 Format(instr, "recip.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1161 Format(instr, "rsqrt.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1164 Format(instr, "cvt.w.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1167 Format(instr, "cvt.l.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1170 Format(instr, "trunc.w.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1173 Format(instr, "trunc.l.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1176 Format(instr, "round.w.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1179 Format(instr, "round.l.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1182 Format(instr, "floor.w.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1185 Format(instr, "floor.l.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1188 Format(instr, "ceil.w.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1191 Format(instr, "ceil.l.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1194 Format(instr, "class.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1197 Format(instr, "cvt.s.'t 'fd, 'fs"); in DecodeTypeRegisterRsType()
1200 Format(instr, "c.f.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1203 Format(instr, "c.un.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1206 Format(instr, "c.eq.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1209 Format(instr, "c.ueq.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1212 Format(instr, "c.olt.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1215 Format(instr, "c.ult.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1218 Format(instr, "c.ole.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1221 Format(instr, "c.ule.'t 'fs, 'ft, 'Cc"); in DecodeTypeRegisterRsType()
1230 void Decoder::DecodeTypeRegisterSRsType(Instruction* instr) { in DecodeTypeRegisterSRsType() argument
1231 if (!DecodeTypeRegisterRsType(instr)) { in DecodeTypeRegisterSRsType()
1232 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterSRsType()
1234 Format(instr, "cvt.d.'t 'fd, 'fs"); in DecodeTypeRegisterSRsType()
1237 Format(instr, "maddf.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterSRsType()
1240 Format(instr, "msubf.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterSRsType()
1243 Format(instr, "unknown.cop1.'t"); in DecodeTypeRegisterSRsType()
1250 void Decoder::DecodeTypeRegisterDRsType(Instruction* instr) { in DecodeTypeRegisterDRsType() argument
1251 if (!DecodeTypeRegisterRsType(instr)) { in DecodeTypeRegisterDRsType()
1252 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterDRsType()
1254 Format(instr, "maddf.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterDRsType()
1257 Format(instr, "msubf.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterDRsType()
1260 Format(instr, "unknown.cop1.'t"); in DecodeTypeRegisterDRsType()
1267 void Decoder::DecodeTypeRegisterLRsType(Instruction* instr) { in DecodeTypeRegisterLRsType() argument
1268 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterLRsType()
1270 Format(instr, "cvt.d.l 'fd, 'fs"); in DecodeTypeRegisterLRsType()
1273 Format(instr, "cvt.s.l 'fd, 'fs"); in DecodeTypeRegisterLRsType()
1276 Format(instr, "cmp.af.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1279 Format(instr, "cmp.un.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1282 Format(instr, "cmp.eq.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1285 Format(instr, "cmp.ueq.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1288 Format(instr, "cmp.lt.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1291 Format(instr, "cmp.ult.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1294 Format(instr, "cmp.le.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1297 Format(instr, "cmp.ule.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1300 Format(instr, "cmp.or.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1303 Format(instr, "cmp.une.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1306 Format(instr, "cmp.ne.d 'fd, 'fs, 'ft"); in DecodeTypeRegisterLRsType()
1314 void Decoder::DecodeTypeRegisterWRsType(Instruction* instr) { in DecodeTypeRegisterWRsType() argument
1315 switch (instr->FunctionValue()) { in DecodeTypeRegisterWRsType()
1317 Format(instr, "cvt.s.w 'fd, 'fs"); in DecodeTypeRegisterWRsType()
1320 Format(instr, "cvt.d.w 'fd, 'fs"); in DecodeTypeRegisterWRsType()
1323 Format(instr, "cmp.af.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1326 Format(instr, "cmp.un.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1329 Format(instr, "cmp.eq.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1332 Format(instr, "cmp.ueq.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1335 Format(instr, "cmp.lt.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1338 Format(instr, "cmp.ult.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1341 Format(instr, "cmp.le.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1344 Format(instr, "cmp.ule.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1347 Format(instr, "cmp.or.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1350 Format(instr, "cmp.une.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1353 Format(instr, "cmp.ne.s 'fd, 'fs, 'ft"); in DecodeTypeRegisterWRsType()
1361 void Decoder::DecodeTypeRegisterCOP1(Instruction* instr) { in DecodeTypeRegisterCOP1() argument
1362 switch (instr->RsFieldRaw()) { in DecodeTypeRegisterCOP1()
1364 Format(instr, "mfc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1367 Format(instr, "dmfc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1370 Format(instr, "mfhc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1373 Format(instr, "mtc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1376 Format(instr, "dmtc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1380 Format(instr, "ctc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1383 Format(instr, "cfc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1386 Format(instr, "mthc1 'rt, 'fs"); in DecodeTypeRegisterCOP1()
1389 DecodeTypeRegisterSRsType(instr); in DecodeTypeRegisterCOP1()
1392 DecodeTypeRegisterDRsType(instr); in DecodeTypeRegisterCOP1()
1395 DecodeTypeRegisterWRsType(instr); in DecodeTypeRegisterCOP1()
1398 DecodeTypeRegisterLRsType(instr); in DecodeTypeRegisterCOP1()
1406 void Decoder::DecodeTypeRegisterCOP1X(Instruction* instr) { in DecodeTypeRegisterCOP1X() argument
1407 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterCOP1X()
1409 Format(instr, "madd.s 'fd, 'fr, 'fs, 'ft"); in DecodeTypeRegisterCOP1X()
1412 Format(instr, "madd.d 'fd, 'fr, 'fs, 'ft"); in DecodeTypeRegisterCOP1X()
1415 Format(instr, "msub.s 'fd, 'fr, 'fs, 'ft"); in DecodeTypeRegisterCOP1X()
1418 Format(instr, "msub.d 'fd, 'fr, 'fs, 'ft"); in DecodeTypeRegisterCOP1X()
1426 void Decoder::DecodeTypeRegisterSPECIAL(Instruction* instr) { in DecodeTypeRegisterSPECIAL() argument
1427 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterSPECIAL()
1429 Format(instr, "jr 'rs"); in DecodeTypeRegisterSPECIAL()
1432 Format(instr, "jalr 'rs, 'rd"); in DecodeTypeRegisterSPECIAL()
1435 if (0x0 == static_cast<int>(instr->InstructionBits())) in DecodeTypeRegisterSPECIAL()
1436 Format(instr, "nop"); in DecodeTypeRegisterSPECIAL()
1438 Format(instr, "sll 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1441 Format(instr, "dsll 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1445 Format(instr, "dmult 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1447 if (instr->SaValue() == MUL_OP) { in DecodeTypeRegisterSPECIAL()
1448 Format(instr, "dmul 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1450 Format(instr, "dmuh 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1455 Format(instr, "dsll32 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1458 if (instr->RsValue() == 0) { in DecodeTypeRegisterSPECIAL()
1459 Format(instr, "srl 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1461 Format(instr, "rotr 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1465 if (instr->RsValue() == 0) { in DecodeTypeRegisterSPECIAL()
1466 Format(instr, "dsrl 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1468 Format(instr, "drotr 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1472 if (instr->RsValue() == 0) { in DecodeTypeRegisterSPECIAL()
1473 Format(instr, "dsrl32 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1475 Format(instr, "drotr32 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1479 Format(instr, "sra 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1482 Format(instr, "dsra 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1485 Format(instr, "dsra32 'rd, 'rt, 'sa"); in DecodeTypeRegisterSPECIAL()
1488 Format(instr, "sllv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1491 Format(instr, "dsllv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1494 if (instr->SaValue() == 0) { in DecodeTypeRegisterSPECIAL()
1495 Format(instr, "srlv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1497 Format(instr, "rotrv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1501 if (instr->SaValue() == 0) { in DecodeTypeRegisterSPECIAL()
1502 Format(instr, "dsrlv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1504 Format(instr, "drotrv 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1508 Format(instr, "srav 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1511 Format(instr, "dsrav 'rd, 'rt, 'rs"); in DecodeTypeRegisterSPECIAL()
1514 Format(instr, "lsa 'rd, 'rt, 'rs, 'sa2"); in DecodeTypeRegisterSPECIAL()
1517 Format(instr, "dlsa 'rd, 'rt, 'rs, 'sa2"); in DecodeTypeRegisterSPECIAL()
1520 if (instr->Bits(25, 16) == 0) { in DecodeTypeRegisterSPECIAL()
1521 Format(instr, "mfhi 'rd"); in DecodeTypeRegisterSPECIAL()
1523 if ((instr->FunctionFieldRaw() == CLZ_R6) && (instr->FdValue() == 1)) { in DecodeTypeRegisterSPECIAL()
1524 Format(instr, "clz 'rd, 'rs"); in DecodeTypeRegisterSPECIAL()
1525 } else if ((instr->FunctionFieldRaw() == CLO_R6) && in DecodeTypeRegisterSPECIAL()
1526 (instr->FdValue() == 1)) { in DecodeTypeRegisterSPECIAL()
1527 Format(instr, "clo 'rd, 'rs"); in DecodeTypeRegisterSPECIAL()
1532 if (instr->Bits(25, 16) == 0) { in DecodeTypeRegisterSPECIAL()
1533 Format(instr, "mflo 'rd"); in DecodeTypeRegisterSPECIAL()
1535 if ((instr->FunctionFieldRaw() == DCLZ_R6) && (instr->FdValue() == 1)) { in DecodeTypeRegisterSPECIAL()
1536 Format(instr, "dclz 'rd, 'rs"); in DecodeTypeRegisterSPECIAL()
1537 } else if ((instr->FunctionFieldRaw() == DCLO_R6) && in DecodeTypeRegisterSPECIAL()
1538 (instr->FdValue() == 1)) { in DecodeTypeRegisterSPECIAL()
1539 Format(instr, "dclo 'rd, 'rs"); in DecodeTypeRegisterSPECIAL()
1545 Format(instr, "dmultu 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1547 if (instr->SaValue() == MUL_OP) { in DecodeTypeRegisterSPECIAL()
1548 Format(instr, "dmulu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1550 Format(instr, "dmuhu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1556 Format(instr, "mult 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1558 if (instr->SaValue() == MUL_OP) { in DecodeTypeRegisterSPECIAL()
1559 Format(instr, "mul 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1561 Format(instr, "muh 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1567 Format(instr, "multu 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1569 if (instr->SaValue() == MUL_OP) { in DecodeTypeRegisterSPECIAL()
1570 Format(instr, "mulu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1572 Format(instr, "muhu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1579 Format(instr, "div 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1581 if (instr->SaValue() == DIV_OP) { in DecodeTypeRegisterSPECIAL()
1582 Format(instr, "div 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1584 Format(instr, "mod 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1590 Format(instr, "ddiv 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1592 if (instr->SaValue() == DIV_OP) { in DecodeTypeRegisterSPECIAL()
1593 Format(instr, "ddiv 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1595 Format(instr, "dmod 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1601 Format(instr, "divu 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1603 if (instr->SaValue() == DIV_OP) { in DecodeTypeRegisterSPECIAL()
1604 Format(instr, "divu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1606 Format(instr, "modu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1612 Format(instr, "ddivu 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1614 if (instr->SaValue() == DIV_OP) { in DecodeTypeRegisterSPECIAL()
1615 Format(instr, "ddivu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1617 Format(instr, "dmodu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1622 Format(instr, "add 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1625 Format(instr, "dadd 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1628 Format(instr, "addu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1631 Format(instr, "daddu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1634 Format(instr, "sub 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1637 Format(instr, "dsub 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1640 Format(instr, "subu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1643 Format(instr, "dsubu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1646 Format(instr, "and 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1649 if (0 == instr->RsValue()) { in DecodeTypeRegisterSPECIAL()
1650 Format(instr, "mov 'rd, 'rt"); in DecodeTypeRegisterSPECIAL()
1651 } else if (0 == instr->RtValue()) { in DecodeTypeRegisterSPECIAL()
1652 Format(instr, "mov 'rd, 'rs"); in DecodeTypeRegisterSPECIAL()
1654 Format(instr, "or 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1658 Format(instr, "xor 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1661 Format(instr, "nor 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1664 Format(instr, "slt 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1667 Format(instr, "sltu 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1670 Format(instr, "tge 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1673 Format(instr, "tgeu 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1676 Format(instr, "tlt 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1679 Format(instr, "tltu 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1682 Format(instr, "teq 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1685 Format(instr, "tne 'rs, 'rt, code: 'code"); in DecodeTypeRegisterSPECIAL()
1688 Format(instr, "sync"); in DecodeTypeRegisterSPECIAL()
1691 Format(instr, "movz 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1694 Format(instr, "movn 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1697 if (instr->Bit(16)) { in DecodeTypeRegisterSPECIAL()
1698 Format(instr, "movt 'rd, 'rs, 'bc"); in DecodeTypeRegisterSPECIAL()
1700 Format(instr, "movf 'rd, 'rs, 'bc"); in DecodeTypeRegisterSPECIAL()
1704 Format(instr, "seleqz 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1707 Format(instr, "selnez 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL()
1715 void Decoder::DecodeTypeRegisterSPECIAL2(Instruction* instr) { in DecodeTypeRegisterSPECIAL2() argument
1716 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterSPECIAL2()
1718 Format(instr, "mul 'rd, 'rs, 'rt"); in DecodeTypeRegisterSPECIAL2()
1722 Format(instr, "clz 'rd, 'rs"); in DecodeTypeRegisterSPECIAL2()
1727 Format(instr, "dclz 'rd, 'rs"); in DecodeTypeRegisterSPECIAL2()
1736 void Decoder::DecodeTypeRegisterSPECIAL3(Instruction* instr) { in DecodeTypeRegisterSPECIAL3() argument
1737 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegisterSPECIAL3()
1739 Format(instr, "ext 'rt, 'rs, 'sa, 'ss1"); in DecodeTypeRegisterSPECIAL3()
1743 Format(instr, "dext 'rt, 'rs, 'sa, 'ss1"); in DecodeTypeRegisterSPECIAL3()
1747 Format(instr, "dextm 'rt, 'rs, 'sa, 'ss3"); in DecodeTypeRegisterSPECIAL3()
1751 Format(instr, "dextu 'rt, 'rs, 'ss5, 'ss1"); in DecodeTypeRegisterSPECIAL3()
1755 Format(instr, "ins 'rt, 'rs, 'sa, 'ss2"); in DecodeTypeRegisterSPECIAL3()
1759 Format(instr, "dins 'rt, 'rs, 'sa, 'ss2"); in DecodeTypeRegisterSPECIAL3()
1763 Format(instr, "dinsm 'rt, 'rs, 'sa, 'ss4"); in DecodeTypeRegisterSPECIAL3()
1767 Format(instr, "dinsu 'rt, 'rs, 'ss5, 'ss2"); in DecodeTypeRegisterSPECIAL3()
1771 int sa = instr->SaFieldRaw() >> kSaShift; in DecodeTypeRegisterSPECIAL3()
1774 Format(instr, "bitswap 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1778 Format(instr, "seb 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1782 Format(instr, "seh 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1786 Format(instr, "wsbh 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1793 Format(instr, "align 'rd, 'rs, 'rt, 'bp2"); in DecodeTypeRegisterSPECIAL3()
1806 int sa = instr->SaFieldRaw() >> kSaShift; in DecodeTypeRegisterSPECIAL3()
1809 switch (instr->SaFieldRaw() >> kSaShift) { in DecodeTypeRegisterSPECIAL3()
1811 Format(instr, "dbitswap 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1820 Format(instr, "dsbh 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1824 Format(instr, "dshd 'rd, 'rt"); in DecodeTypeRegisterSPECIAL3()
1831 Format(instr, "dalign 'rd, 'rs, 'rt, 'bp3"); in DecodeTypeRegisterSPECIAL3()
1849 int Decoder::DecodeTypeRegister(Instruction* instr) { in DecodeTypeRegister() argument
1850 switch (instr->OpcodeFieldRaw()) { in DecodeTypeRegister()
1852 DecodeTypeRegisterCOP1(instr); in DecodeTypeRegister()
1855 DecodeTypeRegisterCOP1X(instr); in DecodeTypeRegister()
1858 switch (instr->FunctionFieldRaw()) { in DecodeTypeRegister()
1860 return DecodeBreakInstr(instr); in DecodeTypeRegister()
1862 DecodeTypeRegisterSPECIAL(instr); in DecodeTypeRegister()
1867 DecodeTypeRegisterSPECIAL2(instr); in DecodeTypeRegister()
1870 DecodeTypeRegisterSPECIAL3(instr); in DecodeTypeRegister()
1873 switch (instr->MSAMinorOpcodeField()) { in DecodeTypeRegister()
1875 DecodeTypeMsa3R(instr); in DecodeTypeRegister()
1878 DecodeTypeMsa3RF(instr); in DecodeTypeRegister()
1881 DecodeTypeMsaVec(instr); in DecodeTypeRegister()
1884 DecodeTypeMsa2R(instr); in DecodeTypeRegister()
1887 DecodeTypeMsa2RF(instr); in DecodeTypeRegister()
1890 DecodeTypeMsaELM(instr); in DecodeTypeRegister()
1902 void Decoder::DecodeTypeImmediateCOP1(Instruction* instr) { in DecodeTypeImmediateCOP1() argument
1903 switch (instr->RsFieldRaw()) { in DecodeTypeImmediateCOP1()
1905 if (instr->FBtrueValue()) { in DecodeTypeImmediateCOP1()
1906 Format(instr, "bc1t 'bc, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1908 Format(instr, "bc1f 'bc, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1912 Format(instr, "bc1eqz 'ft, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1915 Format(instr, "bc1nez 'ft, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1922 Format(instr, "bz.'t 'wt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1929 Format(instr, "bnz.'t 'wt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediateCOP1()
1937 void Decoder::DecodeTypeImmediateREGIMM(Instruction* instr) { in DecodeTypeImmediateREGIMM() argument
1938 switch (instr->RtFieldRaw()) { in DecodeTypeImmediateREGIMM()
1940 Format(instr, "bltz 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1943 Format(instr, "bltzal 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1946 Format(instr, "bgez 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1949 if (instr->RsValue() == 0) in DecodeTypeImmediateREGIMM()
1950 Format(instr, "bal 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1952 Format(instr, "bgezal 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1956 Format(instr, "bgezall 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediateREGIMM()
1959 Format(instr, "dahi 'rs, 'imm16x"); in DecodeTypeImmediateREGIMM()
1962 Format(instr, "dati 'rs, 'imm16x"); in DecodeTypeImmediateREGIMM()
1969 void Decoder::DecodeTypeImmediateSPECIAL3(Instruction* instr) { in DecodeTypeImmediateSPECIAL3() argument
1970 switch (instr->FunctionFieldRaw()) { in DecodeTypeImmediateSPECIAL3()
1973 Format(instr, "ll 'rt, 'imm9s('rs)"); in DecodeTypeImmediateSPECIAL3()
1975 Unknown(instr); in DecodeTypeImmediateSPECIAL3()
1981 Format(instr, "lld 'rt, 'imm9s('rs)"); in DecodeTypeImmediateSPECIAL3()
1983 Unknown(instr); in DecodeTypeImmediateSPECIAL3()
1989 Format(instr, "sc 'rt, 'imm9s('rs)"); in DecodeTypeImmediateSPECIAL3()
1991 Unknown(instr); in DecodeTypeImmediateSPECIAL3()
1997 Format(instr, "scd 'rt, 'imm9s('rs)"); in DecodeTypeImmediateSPECIAL3()
1999 Unknown(instr); in DecodeTypeImmediateSPECIAL3()
2008 void Decoder::DecodeTypeImmediate(Instruction* instr) { in DecodeTypeImmediate() argument
2009 switch (instr->OpcodeFieldRaw()) { in DecodeTypeImmediate()
2011 DecodeTypeImmediateCOP1(instr); in DecodeTypeImmediate()
2015 DecodeTypeImmediateREGIMM(instr); in DecodeTypeImmediate()
2019 Format(instr, "beq 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2022 Format(instr, "bc 'imm26s -> 'imm26p4s2"); in DecodeTypeImmediate()
2025 Format(instr, "balc 'imm26s -> 'imm26p4s2"); in DecodeTypeImmediate()
2028 Format(instr, "bne 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2031 if ((instr->RtValue() == 0) && (instr->RsValue() != 0)) { in DecodeTypeImmediate()
2032 Format(instr, "blez 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2033 } else if ((instr->RtValue() != instr->RsValue()) && in DecodeTypeImmediate()
2034 (instr->RsValue() != 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2035 Format(instr, "bgeuc 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2036 } else if ((instr->RtValue() == instr->RsValue()) && in DecodeTypeImmediate()
2037 (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2038 Format(instr, "bgezalc 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2039 } else if ((instr->RsValue() == 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2040 Format(instr, "blezalc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2046 if ((instr->RtValue() == 0) && (instr->RsValue() != 0)) { in DecodeTypeImmediate()
2047 Format(instr, "bgtz 'rs, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2048 } else if ((instr->RtValue() != instr->RsValue()) && in DecodeTypeImmediate()
2049 (instr->RsValue() != 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2050 Format(instr, "bltuc 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2051 } else if ((instr->RtValue() == instr->RsValue()) && in DecodeTypeImmediate()
2052 (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2053 Format(instr, "bltzalc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2054 } else if ((instr->RsValue() == 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2055 Format(instr, "bgtzalc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2061 if ((instr->RtValue() == instr->RsValue()) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2062 Format(instr, "bgezc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2063 } else if ((instr->RtValue() != instr->RsValue()) && in DecodeTypeImmediate()
2064 (instr->RsValue() != 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2065 Format(instr, "bgec 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2066 } else if ((instr->RsValue() == 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2067 Format(instr, "blezc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2073 if ((instr->RtValue() == instr->RsValue()) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2074 Format(instr, "bltzc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2075 } else if ((instr->RtValue() != instr->RsValue()) && in DecodeTypeImmediate()
2076 (instr->RsValue() != 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2077 Format(instr, "bltc 'rs, 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2078 } else if ((instr->RsValue() == 0) && (instr->RtValue() != 0)) { in DecodeTypeImmediate()
2079 Format(instr, "bgtzc 'rt, 'imm16u -> 'imm16p4s2"); in DecodeTypeImmediate()
2085 if (instr->RsValue() == JIC) { in DecodeTypeImmediate()
2086 Format(instr, "jic 'rt, 'imm16s"); in DecodeTypeImmediate()
2088 Format(instr, "beqzc 'rs, 'imm21s -> 'imm21p4s2"); in DecodeTypeImmediate()
2092 if (instr->RsValue() == JIALC) { in DecodeTypeImmediate()
2093 Format(instr, "jialc 'rt, 'imm16s"); in DecodeTypeImmediate()
2095 Format(instr, "bnezc 'rs, 'imm21s -> 'imm21p4s2"); in DecodeTypeImmediate()
2101 Format(instr, "addi 'rt, 'rs, 'imm16s"); in DecodeTypeImmediate()
2103 int rs_reg = instr->RsValue(); in DecodeTypeImmediate()
2104 int rt_reg = instr->RtValue(); in DecodeTypeImmediate()
2107 Format(instr, "bovc 'rs, 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2111 Format(instr, "beqzalc 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2113 Format(instr, "beqc 'rs, 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2120 Format(instr, "daddi 'rt, 'rs, 'imm16s"); in DecodeTypeImmediate()
2122 int rs_reg = instr->RsValue(); in DecodeTypeImmediate()
2123 int rt_reg = instr->RtValue(); in DecodeTypeImmediate()
2126 Format(instr, "bnvc 'rs, 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2130 Format(instr, "bnezalc 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2132 Format(instr, "bnec 'rs, 'rt, 'imm16s -> 'imm16p4s2"); in DecodeTypeImmediate()
2138 Format(instr, "addiu 'rt, 'rs, 'imm16s"); in DecodeTypeImmediate()
2141 Format(instr, "daddiu 'rt, 'rs, 'imm16s"); in DecodeTypeImmediate()
2144 Format(instr, "slti 'rt, 'rs, 'imm16s"); in DecodeTypeImmediate()
2147 Format(instr, "sltiu 'rt, 'rs, 'imm16u"); in DecodeTypeImmediate()
2150 Format(instr, "andi 'rt, 'rs, 'imm16x"); in DecodeTypeImmediate()
2153 Format(instr, "ori 'rt, 'rs, 'imm16x"); in DecodeTypeImmediate()
2156 Format(instr, "xori 'rt, 'rs, 'imm16x"); in DecodeTypeImmediate()
2160 Format(instr, "lui 'rt, 'imm16x"); in DecodeTypeImmediate()
2162 if (instr->RsValue() != 0) { in DecodeTypeImmediate()
2163 Format(instr, "aui 'rt, 'rs, 'imm16x"); in DecodeTypeImmediate()
2165 Format(instr, "lui 'rt, 'imm16x"); in DecodeTypeImmediate()
2170 Format(instr, "daui 'rt, 'rs, 'imm16x"); in DecodeTypeImmediate()
2174 Format(instr, "lb 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2177 Format(instr, "lh 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2180 Format(instr, "lwl 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2183 Format(instr, "ldl 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2186 Format(instr, "lw 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2189 Format(instr, "lwu 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2192 Format(instr, "ld 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2195 Format(instr, "lbu 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2198 Format(instr, "lhu 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2201 Format(instr, "lwr 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2204 Format(instr, "ldr 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2207 Format(instr, "pref 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2210 Format(instr, "sb 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2213 Format(instr, "sh 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2216 Format(instr, "swl 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2219 Format(instr, "sw 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2222 Format(instr, "sd 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2225 Format(instr, "swr 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2228 Format(instr, "sdr 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2231 Format(instr, "sdl 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2235 Unknown(instr); in DecodeTypeImmediate()
2237 Format(instr, "ll 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2242 Unknown(instr); in DecodeTypeImmediate()
2244 Format(instr, "lld 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2249 Unknown(instr); in DecodeTypeImmediate()
2251 Format(instr, "sc 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2256 Unknown(instr); in DecodeTypeImmediate()
2258 Format(instr, "scd 'rt, 'imm16s('rs)"); in DecodeTypeImmediate()
2262 Format(instr, "lwc1 'ft, 'imm16s('rs)"); in DecodeTypeImmediate()
2265 Format(instr, "ldc1 'ft, 'imm16s('rs)"); in DecodeTypeImmediate()
2268 Format(instr, "swc1 'ft, 'imm16s('rs)"); in DecodeTypeImmediate()
2271 Format(instr, "sdc1 'ft, 'imm16s('rs)"); in DecodeTypeImmediate()
2274 int32_t imm21 = instr->Imm21Value(); in DecodeTypeImmediate()
2279 Format(instr, "aluipc 'rs, 'imm16s"); in DecodeTypeImmediate()
2282 Format(instr, "auipc 'rs, 'imm16s"); in DecodeTypeImmediate()
2289 Format(instr, "ldpc 'rs, 'imm18s"); in DecodeTypeImmediate()
2296 Format(instr, "lwupc 'rs, 'imm19s"); in DecodeTypeImmediate()
2299 Format(instr, "lwpc 'rs, 'imm19s"); in DecodeTypeImmediate()
2302 Format(instr, "addiupc 'rs, 'imm19s"); in DecodeTypeImmediate()
2317 DecodeTypeImmediateSPECIAL3(instr); in DecodeTypeImmediate()
2320 switch (instr->MSAMinorOpcodeField()) { in DecodeTypeImmediate()
2322 DecodeTypeMsaI8(instr); in DecodeTypeImmediate()
2325 DecodeTypeMsaI5(instr); in DecodeTypeImmediate()
2328 DecodeTypeMsaI10(instr); in DecodeTypeImmediate()
2331 DecodeTypeMsaELM(instr); in DecodeTypeImmediate()
2334 DecodeTypeMsaBIT(instr); in DecodeTypeImmediate()
2337 DecodeTypeMsaMI10(instr); in DecodeTypeImmediate()
2345 printf("a 0x%x \n", instr->OpcodeFieldRaw()); in DecodeTypeImmediate()
2352 void Decoder::DecodeTypeJump(Instruction* instr) { in DecodeTypeJump() argument
2353 switch (instr->OpcodeFieldRaw()) { in DecodeTypeJump()
2355 Format(instr, "j 'imm26x -> 'imm26j"); in DecodeTypeJump()
2358 Format(instr, "jal 'imm26x -> 'imm26j"); in DecodeTypeJump()
2365 void Decoder::DecodeTypeMsaI8(Instruction* instr) { in DecodeTypeMsaI8() argument
2366 uint32_t opcode = instr->InstructionBits() & kMsaI8Mask; in DecodeTypeMsaI8()
2370 Format(instr, "andi.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2373 Format(instr, "ori.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2376 Format(instr, "nori.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2379 Format(instr, "xori.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2382 Format(instr, "bmnzi.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2385 Format(instr, "bmzi.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2388 Format(instr, "bseli.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2391 Format(instr, "shf.b 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2394 Format(instr, "shf.h 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2397 Format(instr, "shf.w 'wd, 'ws, 'imm8"); in DecodeTypeMsaI8()
2404 void Decoder::DecodeTypeMsaI5(Instruction* instr) { in DecodeTypeMsaI5() argument
2405 uint32_t opcode = instr->InstructionBits() & kMsaI5Mask; in DecodeTypeMsaI5()
2409 Format(instr, "addvi.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2412 Format(instr, "subvi.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2415 Format(instr, "maxi_s.'t 'wd, 'ws, 'imm5s"); in DecodeTypeMsaI5()
2418 Format(instr, "maxi_u.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2421 Format(instr, "mini_s.'t 'wd, 'ws, 'imm5s"); in DecodeTypeMsaI5()
2424 Format(instr, "mini_u.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2427 Format(instr, "ceqi.'t 'wd, 'ws, 'imm5s"); in DecodeTypeMsaI5()
2430 Format(instr, "clti_s.'t 'wd, 'ws, 'imm5s"); in DecodeTypeMsaI5()
2433 Format(instr, "clti_u.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2436 Format(instr, "clei_s.'t 'wd, 'ws, 'imm5s"); in DecodeTypeMsaI5()
2439 Format(instr, "clei_u.'t 'wd, 'ws, 'imm5u"); in DecodeTypeMsaI5()
2446 void Decoder::DecodeTypeMsaI10(Instruction* instr) { in DecodeTypeMsaI10() argument
2447 uint32_t opcode = instr->InstructionBits() & kMsaI5Mask; in DecodeTypeMsaI10()
2449 Format(instr, "ldi.'t 'wd, 'imm10s1"); in DecodeTypeMsaI10()
2455 void Decoder::DecodeTypeMsaELM(Instruction* instr) { in DecodeTypeMsaELM() argument
2456 uint32_t opcode = instr->InstructionBits() & kMsaELMMask; in DecodeTypeMsaELM()
2459 if (instr->Bits(21, 16) == 0x3E) { in DecodeTypeMsaELM()
2460 Format(instr, "ctcmsa "); in DecodeTypeMsaELM()
2461 PrintMSAControlRegister(instr->WdValue()); in DecodeTypeMsaELM()
2463 PrintRegister(instr->WsValue()); in DecodeTypeMsaELM()
2465 Format(instr, "sldi.'t 'wd, 'ws['imme]"); in DecodeTypeMsaELM()
2469 if (instr->Bits(21, 16) == 0x3E) { in DecodeTypeMsaELM()
2470 Format(instr, "cfcmsa "); in DecodeTypeMsaELM()
2471 PrintRegister(instr->WdValue()); in DecodeTypeMsaELM()
2473 PrintMSAControlRegister(instr->WsValue()); in DecodeTypeMsaELM()
2475 Format(instr, "splati.'t 'wd, 'ws['imme]"); in DecodeTypeMsaELM()
2479 if (instr->Bits(21, 16) == 0x3E) { in DecodeTypeMsaELM()
2480 Format(instr, "move.v 'wd, 'ws"); in DecodeTypeMsaELM()
2482 Format(instr, "copy_s.'t "); in DecodeTypeMsaELM()
2483 PrintMsaCopy(instr); in DecodeTypeMsaELM()
2487 Format(instr, "copy_u.'t "); in DecodeTypeMsaELM()
2488 PrintMsaCopy(instr); in DecodeTypeMsaELM()
2491 Format(instr, "insert.'t 'wd['imme], "); in DecodeTypeMsaELM()
2492 PrintRegister(instr->WsValue()); in DecodeTypeMsaELM()
2495 Format(instr, "insve.'t 'wd['imme], 'ws[0]"); in DecodeTypeMsaELM()
2502 void Decoder::DecodeTypeMsaBIT(Instruction* instr) { in DecodeTypeMsaBIT() argument
2503 uint32_t opcode = instr->InstructionBits() & kMsaBITMask; in DecodeTypeMsaBIT()
2507 Format(instr, "slli.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2510 Format(instr, "srai.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2513 Format(instr, "srli.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2516 Format(instr, "bclri.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2519 Format(instr, "bseti.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2522 Format(instr, "bnegi.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2525 Format(instr, "binsli.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2528 Format(instr, "binsri.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2531 Format(instr, "sat_s.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2534 Format(instr, "sat_u.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2537 Format(instr, "srari.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2540 Format(instr, "srlri.'t 'wd, 'ws, 'immb"); in DecodeTypeMsaBIT()
2547 void Decoder::DecodeTypeMsaMI10(Instruction* instr) { in DecodeTypeMsaMI10() argument
2548 uint32_t opcode = instr->InstructionBits() & kMsaMI10Mask; in DecodeTypeMsaMI10()
2550 Format(instr, "ld.'t 'wd, 'imm10s2("); in DecodeTypeMsaMI10()
2551 PrintRegister(instr->WsValue()); in DecodeTypeMsaMI10()
2554 Format(instr, "st.'t 'wd, 'imm10s2("); in DecodeTypeMsaMI10()
2555 PrintRegister(instr->WsValue()); in DecodeTypeMsaMI10()
2562 void Decoder::DecodeTypeMsa3R(Instruction* instr) { in DecodeTypeMsa3R() argument
2563 uint32_t opcode = instr->InstructionBits() & kMsa3RMask; in DecodeTypeMsa3R()
2566 Format(instr, "sll.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2569 Format(instr, "sra.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2572 Format(instr, "srl.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2575 Format(instr, "bclr.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2578 Format(instr, "bset.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2581 Format(instr, "bneg.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2584 Format(instr, "binsl.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2587 Format(instr, "binsr.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2590 Format(instr, "addv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2593 Format(instr, "subv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2596 Format(instr, "max_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2599 Format(instr, "max_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2602 Format(instr, "min_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2605 Format(instr, "min_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2608 Format(instr, "max_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2611 Format(instr, "min_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2614 Format(instr, "ceq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2617 Format(instr, "clt_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2620 Format(instr, "clt_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2623 Format(instr, "cle_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2626 Format(instr, "cle_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2629 Format(instr, "add_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2632 Format(instr, "adds_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2635 Format(instr, "adds_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2638 Format(instr, "adds_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2641 Format(instr, "ave_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2644 Format(instr, "ave_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2647 Format(instr, "aver_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2650 Format(instr, "aver_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2653 Format(instr, "subs_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2656 Format(instr, "subs_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2659 Format(instr, "subsus_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2662 Format(instr, "subsuu_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2665 Format(instr, "asub_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2668 Format(instr, "asub_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2671 Format(instr, "mulv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2674 Format(instr, "maddv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2677 Format(instr, "msubv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2680 Format(instr, "div_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2683 Format(instr, "div_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2686 Format(instr, "mod_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2689 Format(instr, "mod_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2692 Format(instr, "dotp_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2695 Format(instr, "dotp_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2698 Format(instr, "dpadd_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2701 Format(instr, "dpadd_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2704 Format(instr, "dpsub_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2707 Format(instr, "dpsub_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2710 Format(instr, "sld.'t 'wd, 'ws['rt]"); in DecodeTypeMsa3R()
2713 Format(instr, "splat.'t 'wd, 'ws['rt]"); in DecodeTypeMsa3R()
2716 Format(instr, "pckev.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2719 Format(instr, "pckod.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2722 Format(instr, "ilvl.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2725 Format(instr, "ilvr.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2728 Format(instr, "ilvev.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2731 Format(instr, "ilvod.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2734 Format(instr, "vshf.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2737 Format(instr, "srar.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2740 Format(instr, "srlr.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2743 Format(instr, "hadd_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2746 Format(instr, "hadd_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2749 Format(instr, "hsub_s.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2752 Format(instr, "hsub_u.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3R()
2759 void Decoder::DecodeTypeMsa3RF(Instruction* instr) { in DecodeTypeMsa3RF() argument
2760 uint32_t opcode = instr->InstructionBits() & kMsa3RFMask; in DecodeTypeMsa3RF()
2763 Format(instr, "fcaf.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2766 Format(instr, "fcun.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2769 Format(instr, "fceq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2772 Format(instr, "fcueq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2775 Format(instr, "fclt.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2778 Format(instr, "fcult.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2781 Format(instr, "fcle.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2784 Format(instr, "fcule.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2787 Format(instr, "fsaf.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2790 Format(instr, "fsun.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2793 Format(instr, "fseq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2796 Format(instr, "fsueq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2799 Format(instr, "fslt.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2802 Format(instr, "fsult.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2805 Format(instr, "fsle.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2808 Format(instr, "fsule.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2811 Format(instr, "fadd.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2814 Format(instr, "fsub.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2817 Format(instr, "fmul.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2820 Format(instr, "fdiv.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2823 Format(instr, "fmadd.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2826 Format(instr, "fmsub.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2829 Format(instr, "fexp2.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2832 Format(instr, "fexdo.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2835 Format(instr, "ftq.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2838 Format(instr, "fmin.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2841 Format(instr, "fmin_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2844 Format(instr, "fmax.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2847 Format(instr, "fmax_a.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2850 Format(instr, "fcor.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2853 Format(instr, "fcune.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2856 Format(instr, "fcne.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2859 Format(instr, "mul_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2862 Format(instr, "madd_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2865 Format(instr, "msub_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2868 Format(instr, "fsor.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2871 Format(instr, "fsune.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2874 Format(instr, "fsne.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2877 Format(instr, "mulr_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2880 Format(instr, "maddr_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2883 Format(instr, "msubr_q.'t 'wd, 'ws, 'wt"); in DecodeTypeMsa3RF()
2890 void Decoder::DecodeTypeMsaVec(Instruction* instr) { in DecodeTypeMsaVec() argument
2891 uint32_t opcode = instr->InstructionBits() & kMsaVECMask; in DecodeTypeMsaVec()
2894 Format(instr, "and.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2897 Format(instr, "or.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2900 Format(instr, "nor.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2903 Format(instr, "xor.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2906 Format(instr, "bmnz.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2909 Format(instr, "bmz.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2912 Format(instr, "bsel.v 'wd, 'ws, 'wt"); in DecodeTypeMsaVec()
2919 void Decoder::DecodeTypeMsa2R(Instruction* instr) { in DecodeTypeMsa2R() argument
2920 uint32_t opcode = instr->InstructionBits() & kMsa2RMask; in DecodeTypeMsa2R()
2923 Format(instr, "fill.'t 'wd, "); in DecodeTypeMsa2R()
2924 PrintRegister(instr->WsValue()); // rs value is in ws field in DecodeTypeMsa2R()
2927 Format(instr, "pcnt.'t 'wd, 'ws"); in DecodeTypeMsa2R()
2930 Format(instr, "nloc.'t 'wd, 'ws"); in DecodeTypeMsa2R()
2933 Format(instr, "nlzc.'t 'wd, 'ws"); in DecodeTypeMsa2R()
2940 void Decoder::DecodeTypeMsa2RF(Instruction* instr) { in DecodeTypeMsa2RF() argument
2941 uint32_t opcode = instr->InstructionBits() & kMsa2RFMask; in DecodeTypeMsa2RF()
2944 Format(instr, "fclass.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2947 Format(instr, "ftrunc_s.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2950 Format(instr, "ftrunc_u.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2953 Format(instr, "fsqrt.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2956 Format(instr, "frsqrt.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2959 Format(instr, "frcp.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2962 Format(instr, "frint.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2965 Format(instr, "flog2.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2968 Format(instr, "fexupl.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2971 Format(instr, "fexupr.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2974 Format(instr, "ffql.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2977 Format(instr, "ffqr.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2980 Format(instr, "ftint_s.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2983 Format(instr, "ftint_u.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2986 Format(instr, "ffint_s.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
2989 Format(instr, "ffint_u.'t 'wd, 'ws"); in DecodeTypeMsa2RF()
3002 Instruction* instr = Instruction::At(instr_ptr); in InstructionDecode() local
3006 instr->InstructionBits()); in InstructionDecode()
3007 switch (instr->InstructionType()) { in InstructionDecode()
3009 return DecodeTypeRegister(instr); in InstructionDecode()
3012 DecodeTypeImmediate(instr); in InstructionDecode()
3016 DecodeTypeJump(instr); in InstructionDecode()
3020 Format(instr, "UNSUPPORTED"); in InstructionDecode()