Adding finer-grained instruction classification.
This commit is contained in:
parent
cc72de0f64
commit
214957da3a
|
@ -42,7 +42,6 @@ enum class PPCOpcode : uint32_t {
|
|||
cror,
|
||||
crorc,
|
||||
crxor,
|
||||
dcba,
|
||||
dcbf,
|
||||
dcbi,
|
||||
dcbst,
|
||||
|
|
|
@ -264,10 +264,9 @@ void PrintDisasm_cmpli(const PPCDecodeData& d, StringBuffer* str) {
|
|||
str->AppendFormat("0x%X", d.D.UIMM());
|
||||
}
|
||||
void PrintDisasm_cntlzdx(const PPCDecodeData& d, StringBuffer* str) {
|
||||
// cntlzd[Rc] [RA], [RS]
|
||||
// cntlzd [RA], [RS]
|
||||
size_t str_start = str->length();
|
||||
str->Append("cntlzd");
|
||||
if (d.X.Rc()) str->Append('.');
|
||||
PadStringBuffer(str, str_start, kNamePad);
|
||||
str->AppendFormat("r%d", d.X.RA());
|
||||
str->Append(", ");
|
||||
|
@ -371,15 +370,6 @@ void PrintDisasm_crxor(const PPCDecodeData& d, StringBuffer* str) {
|
|||
str->Append(", ");
|
||||
str->AppendFormat("crb%d", d.XL.CRBB());
|
||||
}
|
||||
void PrintDisasm_dcba(const PPCDecodeData& d, StringBuffer* str) {
|
||||
// dcba [RA0], [RB]
|
||||
size_t str_start = str->length();
|
||||
str->Append("dcba");
|
||||
PadStringBuffer(str, str_start, kNamePad);
|
||||
str->AppendFormat("r%d", d.X.RA0());
|
||||
str->Append(", ");
|
||||
str->AppendFormat("r%d", d.X.RB());
|
||||
}
|
||||
void PrintDisasm_dcbf(const PPCDecodeData& d, StringBuffer* str) {
|
||||
// dcbf [RA0], [RB]
|
||||
size_t str_start = str->length();
|
||||
|
@ -4977,8 +4967,8 @@ void PrintDisasm_xorx(const PPCDecodeData& d, StringBuffer* str) {
|
|||
#define INSTRUCTION(opcode, mnem, form, group, type, desc, reads, writes, fn) \
|
||||
{PPCOpcodeGroup::group, PPCOpcodeFormat::form, opcode, mnem, desc, INIT_LIST reads, INIT_LIST writes, fn}
|
||||
PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
||||
INSTRUCTION(0x7c000014, "addcx" , kXO , kI, kGeneral, "Add Carrying" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_addcx),
|
||||
INSTRUCTION(0x7c000114, "addex" , kXO , kI, kGeneral, "Add Extended" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB,PPCOpcodeField::kCR), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_addex),
|
||||
INSTRUCTION(0x7c000014, "addcx" , kXO , kI, kGeneral, "Add Carrying" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCA,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_addcx),
|
||||
INSTRUCTION(0x7c000114, "addex" , kXO , kI, kGeneral, "Add Extended" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB,PPCOpcodeField::kCA), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_addex),
|
||||
INSTRUCTION(0x38000000, "addi" , kD , kI, kGeneral, "Add Immediate" , (PPCOpcodeField::kRA0,PPCOpcodeField::kSIMM), (PPCOpcodeField::kRD), PrintDisasm_addi),
|
||||
INSTRUCTION(0x30000000, "addic" , kD , kI, kGeneral, "Add Immediate Carrying" , (PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (PPCOpcodeField::kRD,PPCOpcodeField::kCA), PrintDisasm_addic),
|
||||
INSTRUCTION(0x34000000, "addicx" , kD , kI, kGeneral, "Add Immediate Carrying and Record" , (PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (PPCOpcodeField::kRD,PPCOpcodeField::kCA,PPCOpcodeField::kCR), PrintDisasm_addicx),
|
||||
|
@ -4990,32 +4980,31 @@ PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
|||
INSTRUCTION(0x74000000, "andisx" , kD , kI, kGeneral, "AND Immediate Shifted" , (PPCOpcodeField::kRS,PPCOpcodeField::kUIMM), (PPCOpcodeField::kRA,PPCOpcodeField::kCR), PrintDisasm_andisx),
|
||||
INSTRUCTION(0x70000000, "andix" , kD , kI, kGeneral, "AND Immediate" , (PPCOpcodeField::kRS,PPCOpcodeField::kUIMM), (PPCOpcodeField::kRA,PPCOpcodeField::kCR), PrintDisasm_andix),
|
||||
INSTRUCTION(0x7c000038, "andx" , kX , kI, kGeneral, "AND" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_andx),
|
||||
INSTRUCTION(0x4c000420, "bcctrx" , kXL , kI, kSync , "Branch Conditional to Count Register" , (PPCOpcodeField::kLK,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kCR,PPCOpcodeField::kCTR), (PPCOpcodeField::kLRcond), PrintDisasm_bcctrx),
|
||||
INSTRUCTION(0x4c000020, "bclrx" , kXL , kI, kSync , "Branch Conditional to Link Register" , (PPCOpcodeField::kLK,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kCRcond,PPCOpcodeField::kCTRcond), (PPCOpcodeField::kCTRcond,PPCOpcodeField::kLRcond), PrintDisasm_bclrx),
|
||||
INSTRUCTION(0x40000000, "bcx" , kB , kI, kSync , "Branch Conditional" , (PPCOpcodeField::kLK,PPCOpcodeField::kAA,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kADDR,PPCOpcodeField::kCRcond,PPCOpcodeField::kCTRcond), (PPCOpcodeField::kCTRcond,PPCOpcodeField::kLRcond), PrintDisasm_bcx),
|
||||
INSTRUCTION(0x48000000, "bx" , kI , kI, kSync , "Branch" , (PPCOpcodeField::kLK,PPCOpcodeField::kAA,PPCOpcodeField::kADDR), (PPCOpcodeField::kLRcond), PrintDisasm_bx),
|
||||
INSTRUCTION(0x4c000420, "bcctrx" , kXL , kB, kSync , "Branch Conditional to Count Register" , (PPCOpcodeField::kLK,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kCR,PPCOpcodeField::kCTR), (PPCOpcodeField::kLRcond), PrintDisasm_bcctrx),
|
||||
INSTRUCTION(0x4c000020, "bclrx" , kXL , kB, kSync , "Branch Conditional to Link Register" , (PPCOpcodeField::kLK,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kCRcond,PPCOpcodeField::kCTRcond), (PPCOpcodeField::kCTRcond,PPCOpcodeField::kLRcond), PrintDisasm_bclrx),
|
||||
INSTRUCTION(0x40000000, "bcx" , kB , kB, kSync , "Branch Conditional" , (PPCOpcodeField::kLK,PPCOpcodeField::kAA,PPCOpcodeField::kBO,PPCOpcodeField::kBI,PPCOpcodeField::kADDR,PPCOpcodeField::kCRcond,PPCOpcodeField::kCTRcond), (PPCOpcodeField::kCTRcond,PPCOpcodeField::kLRcond), PrintDisasm_bcx),
|
||||
INSTRUCTION(0x48000000, "bx" , kI , kB, kSync , "Branch" , (PPCOpcodeField::kLK,PPCOpcodeField::kAA,PPCOpcodeField::kADDR), (PPCOpcodeField::kLRcond), PrintDisasm_bx),
|
||||
INSTRUCTION(0x7c000000, "cmp" , kX , kI, kGeneral, "Compare" , (PPCOpcodeField::kL,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kCRFD), PrintDisasm_cmp),
|
||||
INSTRUCTION(0x2c000000, "cmpi" , kD , kI, kGeneral, "Compare Immediate" , (PPCOpcodeField::kL,PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (PPCOpcodeField::kRD,PPCOpcodeField::kCRFD), PrintDisasm_cmpi),
|
||||
INSTRUCTION(0x7c000040, "cmpl" , kX , kI, kGeneral, "Compare Logical" , (PPCOpcodeField::kL,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kCRFD), PrintDisasm_cmpl),
|
||||
INSTRUCTION(0x28000000, "cmpli" , kD , kI, kGeneral, "Compare Logical Immediate" , (PPCOpcodeField::kL,PPCOpcodeField::kRA,PPCOpcodeField::kUIMM), (PPCOpcodeField::kCRFD), PrintDisasm_cmpli),
|
||||
INSTRUCTION(0x7c000074, "cntlzdx" , kX , kI, kGeneral, "Count Leading Zeros Doubleword" , (PPCOpcodeField::kRS), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_cntlzdx),
|
||||
INSTRUCTION(0x7c000034, "cntlzwx" , kX , kI, kGeneral, "Count Leading Zeros Word" , (PPCOpcodeField::kRS), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_cntlzwx),
|
||||
INSTRUCTION(0x4c000202, "crand" , kXL , kI, kGeneral, "Condition Register AND" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crand),
|
||||
INSTRUCTION(0x4c000102, "crandc" , kXL , kI, kGeneral, "Condition Register AND with Complement" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crandc),
|
||||
INSTRUCTION(0x4c000242, "creqv" , kXL , kI, kGeneral, "Condition Register Equivalent" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_creqv),
|
||||
INSTRUCTION(0x4c0001c2, "crnand" , kXL , kI, kGeneral, "Condition Register NAND" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crnand),
|
||||
INSTRUCTION(0x4c000042, "crnor" , kXL , kI, kGeneral, "Condition Register NOR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crnor),
|
||||
INSTRUCTION(0x4c000382, "cror" , kXL , kI, kGeneral, "Condition Register OR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_cror),
|
||||
INSTRUCTION(0x4c000342, "crorc" , kXL , kI, kGeneral, "Condition Register OR with Complement" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crorc),
|
||||
INSTRUCTION(0x4c000182, "crxor" , kXL , kI, kGeneral, "Condition Register XOR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crxor),
|
||||
INSTRUCTION(0x7c0005ec, "dcba" , kX , kI, kGeneral, "Data Cache Block Allocate" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcba),
|
||||
INSTRUCTION(0x4c000202, "crand" , kXL , kC, kGeneral, "Condition Register AND" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crand),
|
||||
INSTRUCTION(0x4c000102, "crandc" , kXL , kC, kGeneral, "Condition Register AND with Complement" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crandc),
|
||||
INSTRUCTION(0x4c000242, "creqv" , kXL , kC, kGeneral, "Condition Register Equivalent" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_creqv),
|
||||
INSTRUCTION(0x4c0001c2, "crnand" , kXL , kC, kGeneral, "Condition Register NAND" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crnand),
|
||||
INSTRUCTION(0x4c000042, "crnor" , kXL , kC, kGeneral, "Condition Register NOR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crnor),
|
||||
INSTRUCTION(0x4c000382, "cror" , kXL , kC, kGeneral, "Condition Register OR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_cror),
|
||||
INSTRUCTION(0x4c000342, "crorc" , kXL , kC, kGeneral, "Condition Register OR with Complement" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crorc),
|
||||
INSTRUCTION(0x4c000182, "crxor" , kXL , kC, kGeneral, "Condition Register XOR" , (PPCOpcodeField::kCRBA,PPCOpcodeField::kCRBB), (PPCOpcodeField::kCRBD), PrintDisasm_crxor),
|
||||
INSTRUCTION(0x7c0000ac, "dcbf" , kX , kI, kGeneral, "Data Cache Block Flush" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbf),
|
||||
INSTRUCTION(0x7c0003ac, "dcbi" , kX , kI, kGeneral, "Data Cache Block Invalidate" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbi),
|
||||
INSTRUCTION(0x7c00006c, "dcbst" , kX , kI, kGeneral, "Data Cache Block Store" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbst),
|
||||
INSTRUCTION(0x7c00022c, "dcbt" , kX , kI, kGeneral, "Data Cache Block Touch" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbt),
|
||||
INSTRUCTION(0x7c0001ec, "dcbtst" , kX , kI, kGeneral, "Data Cache Block Touch for Store" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbtst),
|
||||
INSTRUCTION(0x7c0007ec, "dcbz" , kDCBZ , kI, kGeneral, "Data Cache Block Clear to Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbz),
|
||||
INSTRUCTION(0x7c2007ec, "dcbz128" , kDCBZ , kI, kGeneral, "Data Cache Block Clear to Zero 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbz128),
|
||||
INSTRUCTION(0x7c0007ec, "dcbz" , kDCBZ , kM, kGeneral, "Data Cache Block Clear to Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbz),
|
||||
INSTRUCTION(0x7c2007ec, "dcbz128" , kDCBZ , kM, kGeneral, "Data Cache Block Clear to Zero 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_dcbz128),
|
||||
INSTRUCTION(0x7c000392, "divdux" , kXO , kI, kGeneral, "Divide Doubleword Unsigned" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_divdux),
|
||||
INSTRUCTION(0x7c0003d2, "divdx" , kXO , kI, kGeneral, "Divide Doubleword" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_divdx),
|
||||
INSTRUCTION(0x7c000396, "divwux" , kXO , kI, kGeneral, "Divide Word Unsigned" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kOEcond,PPCOpcodeField::kCRcond), PrintDisasm_divwux),
|
||||
|
@ -5060,83 +5049,83 @@ PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
|||
INSTRUCTION(0xfc000028, "fsubx" , kA , kF, kGeneral, "Floating Subtract" , (PPCOpcodeField::kFA,PPCOpcodeField::kFB), (PPCOpcodeField::kFD,PPCOpcodeField::kCRcond,PPCOpcodeField::kFPSCR), PrintDisasm_fsubx),
|
||||
INSTRUCTION(0x7c0007ac, "icbi" , kX , kI, kGeneral, "Instruction Cache Block Invalidate" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_icbi),
|
||||
INSTRUCTION(0x4c00012c, "isync" , kXL , kI, kGeneral, "Instruction Synchronize" , (), (), PrintDisasm_isync),
|
||||
INSTRUCTION(0x88000000, "lbz" , kD , kI, kGeneral, "Load Byte and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lbz),
|
||||
INSTRUCTION(0x8c000000, "lbzu" , kD , kI, kGeneral, "Load Byte and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lbzu),
|
||||
INSTRUCTION(0x7c0000ee, "lbzux" , kX , kI, kGeneral, "Load Byte and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lbzux),
|
||||
INSTRUCTION(0x7c0000ae, "lbzx" , kX , kI, kGeneral, "Load Byte and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lbzx),
|
||||
INSTRUCTION(0xe8000000, "ld" , kDS , kI, kGeneral, "Load Doubleword" , (PPCOpcodeField::kRA0,PPCOpcodeField::kds), (PPCOpcodeField::kRD), PrintDisasm_ld),
|
||||
INSTRUCTION(0x7c0000a8, "ldarx" , kX , kI, kGeneral, "Load Doubleword and Reserve Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldarx),
|
||||
INSTRUCTION(0x7c000428, "ldbrx" , kX , kI, kGeneral, "Load Doubleword Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldbrx),
|
||||
INSTRUCTION(0xe8000001, "ldu" , kDS , kI, kGeneral, "Load Doubleword with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kds), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_ldu),
|
||||
INSTRUCTION(0x7c00006a, "ldux" , kX , kI, kGeneral, "Load Doubleword with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_ldux),
|
||||
INSTRUCTION(0x7c00002a, "ldx" , kX , kI, kGeneral, "Load Doubleword Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldx),
|
||||
INSTRUCTION(0xc8000000, "lfd" , kD , kF, kGeneral, "Load Floating-Point Double" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kFD), PrintDisasm_lfd),
|
||||
INSTRUCTION(0xcc000000, "lfdu" , kD , kF, kGeneral, "Load Floating-Point Double with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfdu),
|
||||
INSTRUCTION(0x7c0004ee, "lfdux" , kX , kF, kGeneral, "Load Floating-Point Double with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfdux),
|
||||
INSTRUCTION(0x7c0004ae, "lfdx" , kX , kF, kGeneral, "Load Floating-Point Double Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kFD), PrintDisasm_lfdx),
|
||||
INSTRUCTION(0xc0000000, "lfs" , kD , kF, kGeneral, "Load Floating-Point Single" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kFD), PrintDisasm_lfs),
|
||||
INSTRUCTION(0xc4000000, "lfsu" , kD , kF, kGeneral, "Load Floating-Point Single with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfsu),
|
||||
INSTRUCTION(0x7c00046e, "lfsux" , kX , kF, kGeneral, "Load Floating-Point Single with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfsux),
|
||||
INSTRUCTION(0x7c00042e, "lfsx" , kX , kF, kGeneral, "Load Floating-Point Single Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kFD), PrintDisasm_lfsx),
|
||||
INSTRUCTION(0xa8000000, "lha" , kD , kI, kGeneral, "Load Half Word Algebraic" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lha),
|
||||
INSTRUCTION(0xac000000, "lhau" , kD , kI, kGeneral, "Load Half Word Algebraic with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhau),
|
||||
INSTRUCTION(0x7c0002ee, "lhaux" , kX , kI, kGeneral, "Load Half Word Algebraic with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhaux),
|
||||
INSTRUCTION(0x7c0002ae, "lhax" , kX , kI, kGeneral, "Load Half Word Algebraic Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhax),
|
||||
INSTRUCTION(0x7c00062c, "lhbrx" , kX , kI, kGeneral, "Load Half Word Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhbrx),
|
||||
INSTRUCTION(0xa0000000, "lhz" , kD , kI, kGeneral, "Load Half Word and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lhz),
|
||||
INSTRUCTION(0xa4000000, "lhzu" , kD , kI, kGeneral, "Load Half Word and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhzu),
|
||||
INSTRUCTION(0x7c00026e, "lhzux" , kX , kI, kGeneral, "Load Half Word and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhzux),
|
||||
INSTRUCTION(0x7c00022e, "lhzx" , kX , kI, kGeneral, "Load Half Word and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhzx),
|
||||
INSTRUCTION(0xb8000000, "lmw" , kD , kI, kGeneral, "Load Multiple Word" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c0004aa, "lswi" , kX , kI, kGeneral, "Load String Word Immediate" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00042a, "lswx" , kX , kI, kGeneral, "Load String Word Indexed" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00000e, "lvebx" , kX , kV, kGeneral, "Load Vector Element Byte Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvebx),
|
||||
INSTRUCTION(0x7c00004e, "lvehx" , kX , kV, kGeneral, "Load Vector Element Half Word Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvehx),
|
||||
INSTRUCTION(0x7c00008e, "lvewx" , kX , kV, kGeneral, "Load Vector Element Word Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvewx),
|
||||
INSTRUCTION(0x10000083, "lvewx128" , kVX128_1, kV, kGeneral, "Load Vector Element Word Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvewx128),
|
||||
INSTRUCTION(0x7c00040e, "lvlx" , kX , kV, kGeneral, "Load Vector Left Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlx),
|
||||
INSTRUCTION(0x10000403, "lvlx128" , kVX128_1, kV, kGeneral, "Load Vector Left Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlx128),
|
||||
INSTRUCTION(0x7c00060e, "lvlxl" , kX , kV, kGeneral, "Load Vector Left Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlxl),
|
||||
INSTRUCTION(0x10000603, "lvlxl128" , kVX128_1, kV, kGeneral, "Load Vector Left Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlxl128),
|
||||
INSTRUCTION(0x7c00044e, "lvrx" , kX , kV, kGeneral, "Load Vector Right Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrx),
|
||||
INSTRUCTION(0x10000443, "lvrx128" , kVX128_1, kV, kGeneral, "Load Vector Right Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrx128),
|
||||
INSTRUCTION(0x7c00064e, "lvrxl" , kX , kV, kGeneral, "Load Vector Right Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrxl),
|
||||
INSTRUCTION(0x10000643, "lvrxl128" , kVX128_1, kV, kGeneral, "Load Vector Right Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrxl128),
|
||||
INSTRUCTION(0x88000000, "lbz" , kD , kM, kGeneral, "Load Byte and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lbz),
|
||||
INSTRUCTION(0x8c000000, "lbzu" , kD , kM, kGeneral, "Load Byte and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lbzu),
|
||||
INSTRUCTION(0x7c0000ee, "lbzux" , kX , kM, kGeneral, "Load Byte and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lbzux),
|
||||
INSTRUCTION(0x7c0000ae, "lbzx" , kX , kM, kGeneral, "Load Byte and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lbzx),
|
||||
INSTRUCTION(0xe8000000, "ld" , kDS , kM, kGeneral, "Load Doubleword" , (PPCOpcodeField::kRA0,PPCOpcodeField::kds), (PPCOpcodeField::kRD), PrintDisasm_ld),
|
||||
INSTRUCTION(0x7c0000a8, "ldarx" , kX , kM, kGeneral, "Load Doubleword and Reserve Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldarx),
|
||||
INSTRUCTION(0x7c000428, "ldbrx" , kX , kM, kGeneral, "Load Doubleword Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldbrx),
|
||||
INSTRUCTION(0xe8000001, "ldu" , kDS , kM, kGeneral, "Load Doubleword with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kds), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_ldu),
|
||||
INSTRUCTION(0x7c00006a, "ldux" , kX , kM, kGeneral, "Load Doubleword with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_ldux),
|
||||
INSTRUCTION(0x7c00002a, "ldx" , kX , kM, kGeneral, "Load Doubleword Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_ldx),
|
||||
INSTRUCTION(0xc8000000, "lfd" , kD , kM, kGeneral, "Load Floating-Point Double" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kFD), PrintDisasm_lfd),
|
||||
INSTRUCTION(0xcc000000, "lfdu" , kD , kM, kGeneral, "Load Floating-Point Double with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfdu),
|
||||
INSTRUCTION(0x7c0004ee, "lfdux" , kX , kM, kGeneral, "Load Floating-Point Double with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfdux),
|
||||
INSTRUCTION(0x7c0004ae, "lfdx" , kX , kM, kGeneral, "Load Floating-Point Double Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kFD), PrintDisasm_lfdx),
|
||||
INSTRUCTION(0xc0000000, "lfs" , kD , kM, kGeneral, "Load Floating-Point Single" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kFD), PrintDisasm_lfs),
|
||||
INSTRUCTION(0xc4000000, "lfsu" , kD , kM, kGeneral, "Load Floating-Point Single with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfsu),
|
||||
INSTRUCTION(0x7c00046e, "lfsux" , kX , kM, kGeneral, "Load Floating-Point Single with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kFD,PPCOpcodeField::kRA), PrintDisasm_lfsux),
|
||||
INSTRUCTION(0x7c00042e, "lfsx" , kX , kM, kGeneral, "Load Floating-Point Single Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kFD), PrintDisasm_lfsx),
|
||||
INSTRUCTION(0xa8000000, "lha" , kD , kM, kGeneral, "Load Half Word Algebraic" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lha),
|
||||
INSTRUCTION(0xac000000, "lhau" , kD , kM, kGeneral, "Load Half Word Algebraic with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhau),
|
||||
INSTRUCTION(0x7c0002ee, "lhaux" , kX , kM, kGeneral, "Load Half Word Algebraic with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhaux),
|
||||
INSTRUCTION(0x7c0002ae, "lhax" , kX , kM, kGeneral, "Load Half Word Algebraic Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhax),
|
||||
INSTRUCTION(0x7c00062c, "lhbrx" , kX , kM, kGeneral, "Load Half Word Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhbrx),
|
||||
INSTRUCTION(0xa0000000, "lhz" , kD , kM, kGeneral, "Load Half Word and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lhz),
|
||||
INSTRUCTION(0xa4000000, "lhzu" , kD , kM, kGeneral, "Load Half Word and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhzu),
|
||||
INSTRUCTION(0x7c00026e, "lhzux" , kX , kM, kGeneral, "Load Half Word and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lhzux),
|
||||
INSTRUCTION(0x7c00022e, "lhzx" , kX , kM, kGeneral, "Load Half Word and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lhzx),
|
||||
INSTRUCTION(0xb8000000, "lmw" , kD , kM, kGeneral, "Load Multiple Word" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c0004aa, "lswi" , kX , kM, kGeneral, "Load String Word Immediate" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00042a, "lswx" , kX , kM, kGeneral, "Load String Word Indexed" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00000e, "lvebx" , kX , kM, kGeneral, "Load Vector Element Byte Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvebx),
|
||||
INSTRUCTION(0x7c00004e, "lvehx" , kX , kM, kGeneral, "Load Vector Element Half Word Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvehx),
|
||||
INSTRUCTION(0x7c00008e, "lvewx" , kX , kM, kGeneral, "Load Vector Element Word Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvewx),
|
||||
INSTRUCTION(0x10000083, "lvewx128" , kVX128_1, kM, kGeneral, "Load Vector Element Word Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvewx128),
|
||||
INSTRUCTION(0x7c00040e, "lvlx" , kX , kM, kGeneral, "Load Vector Left Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlx),
|
||||
INSTRUCTION(0x10000403, "lvlx128" , kVX128_1, kM, kGeneral, "Load Vector Left Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlx128),
|
||||
INSTRUCTION(0x7c00060e, "lvlxl" , kX , kM, kGeneral, "Load Vector Left Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlxl),
|
||||
INSTRUCTION(0x10000603, "lvlxl128" , kVX128_1, kM, kGeneral, "Load Vector Left Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvlxl128),
|
||||
INSTRUCTION(0x7c00044e, "lvrx" , kX , kM, kGeneral, "Load Vector Right Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrx),
|
||||
INSTRUCTION(0x10000443, "lvrx128" , kVX128_1, kM, kGeneral, "Load Vector Right Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrx128),
|
||||
INSTRUCTION(0x7c00064e, "lvrxl" , kX , kM, kGeneral, "Load Vector Right Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrxl),
|
||||
INSTRUCTION(0x10000643, "lvrxl128" , kVX128_1, kM, kGeneral, "Load Vector Right Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvrxl128),
|
||||
INSTRUCTION(0x7c00000c, "lvsl" , kX , kV, kGeneral, "Load Vector for Shift Left Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvsl),
|
||||
INSTRUCTION(0x10000003, "lvsl128" , kVX128_1, kV, kGeneral, "Load Vector for Shift Left Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvsl128),
|
||||
INSTRUCTION(0x7c00004c, "lvsr" , kX , kV, kGeneral, "Load Vector for Shift Right Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvsr),
|
||||
INSTRUCTION(0x10000043, "lvsr128" , kVX128_1, kV, kGeneral, "Load Vector for Shift Right Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvsr128),
|
||||
INSTRUCTION(0x7c0000ce, "lvx" , kX , kV, kGeneral, "Load Vector Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvx),
|
||||
INSTRUCTION(0x100000c3, "lvx128" , kVX128_1, kV, kGeneral, "Load Vector Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvx128),
|
||||
INSTRUCTION(0x7c0002ce, "lvxl" , kX , kV, kGeneral, "Load Vector Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvxl),
|
||||
INSTRUCTION(0x100002c3, "lvxl128" , kVX128_1, kV, kGeneral, "Load Vector Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvxl128),
|
||||
INSTRUCTION(0xe8000002, "lwa" , kDS , kI, kGeneral, "Load Word Algebraic" , (PPCOpcodeField::kRA0,PPCOpcodeField::kds), (PPCOpcodeField::kRD), PrintDisasm_lwa),
|
||||
INSTRUCTION(0x7c000028, "lwarx" , kX , kI, kGeneral, "Load Word and Reserve Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwarx),
|
||||
INSTRUCTION(0x7c0002ea, "lwaux" , kX , kI, kGeneral, "Load Word Algebraic with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwaux),
|
||||
INSTRUCTION(0x7c0002aa, "lwax" , kX , kI, kGeneral, "Load Word Algebraic Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwax),
|
||||
INSTRUCTION(0x7c00042c, "lwbrx" , kX , kI, kGeneral, "Load Word Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwbrx),
|
||||
INSTRUCTION(0x80000000, "lwz" , kD , kI, kGeneral, "Load Word and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lwz),
|
||||
INSTRUCTION(0x84000000, "lwzu" , kD , kI, kGeneral, "Load Word and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwzu),
|
||||
INSTRUCTION(0x7c00006e, "lwzux" , kX , kI, kGeneral, "Load Word and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwzux),
|
||||
INSTRUCTION(0x7c00002e, "lwzx" , kX , kI, kGeneral, "Load Word and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwzx),
|
||||
INSTRUCTION(0x4c000000, "mcrf" , kXL , kI, kGeneral, "Move Condition Register Field" , (PPCOpcodeField::kCRFS), (PPCOpcodeField::kCRFD), PrintDisasm_mcrf),
|
||||
INSTRUCTION(0xfc000080, "mcrfs" , kX , kF, kGeneral, "Move to Condition Register from FPSCR" , (PPCOpcodeField::kCRFS,PPCOpcodeField::kFPSCR), (PPCOpcodeField::kCRFD,PPCOpcodeField::kFPSCR), PrintDisasm_mcrfs),
|
||||
INSTRUCTION(0x7c000400, "mcrxr" , kX , kI, kGeneral, "Move to Condition Register from XER" , (PPCOpcodeField::kCR), (PPCOpcodeField::kCRFD), PrintDisasm_mcrxr),
|
||||
INSTRUCTION(0x7c000026, "mfcr" , kX , kI, kGeneral, "Move from Condition Register" , (PPCOpcodeField::kCR), (PPCOpcodeField::kRD), PrintDisasm_mfcr),
|
||||
INSTRUCTION(0xfc00048e, "mffsx" , kX , kF, kGeneral, "Move from FPSCR" , (PPCOpcodeField::kFPSCR), (PPCOpcodeField::kFD,PPCOpcodeField::kCRcond), PrintDisasm_mffsx),
|
||||
INSTRUCTION(0x7c0000a6, "mfmsr" , kX , kI, kGeneral, "Move from Machine State Register" , (PPCOpcodeField::kMSR), (PPCOpcodeField::kRD), PrintDisasm_mfmsr),
|
||||
INSTRUCTION(0x7c0002a6, "mfspr" , kXFX , kI, kGeneral, "Move from Special-Purpose Register" , (PPCOpcodeField::kSPR), (PPCOpcodeField::kRD), PrintDisasm_mfspr),
|
||||
INSTRUCTION(0x7c0002e6, "mftb" , kXFX , kI, kGeneral, "Move from Time Base" , (PPCOpcodeField::kTBR), (PPCOpcodeField::kRD), PrintDisasm_mftb),
|
||||
INSTRUCTION(0x10000604, "mfvscr" , kVX , kV, kGeneral, "Move from VSCR" , (PPCOpcodeField::kVSCR), (PPCOpcodeField::kVD), nullptr),
|
||||
INSTRUCTION(0x7c000120, "mtcrf" , kXFX , kI, kGeneral, "Move to Condition Register Fields" , (PPCOpcodeField::kRS), (PPCOpcodeField::kCRM), PrintDisasm_mtcrf),
|
||||
INSTRUCTION(0xfc00008c, "mtfsb0x" , kX , kF, kGeneral, "Move to FPSCR Bit 0" , (), (PPCOpcodeField::kFPSCRD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsb0x),
|
||||
INSTRUCTION(0xfc00004c, "mtfsb1x" , kX , kF, kGeneral, "Move to FPSCR Bit 1" , (), (PPCOpcodeField::kFPSCRD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsb1x),
|
||||
INSTRUCTION(0xfc00010c, "mtfsfix" , kX , kF, kGeneral, "Move to FPSCR Field Immediate" , (PPCOpcodeField::kIMM), (PPCOpcodeField::kCRFD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsfix),
|
||||
INSTRUCTION(0xfc00058e, "mtfsfx" , kXFL , kF, kGeneral, "Move to FPSCR Fields" , (PPCOpcodeField::kFM,PPCOpcodeField::kFB), (PPCOpcodeField::kFPSCR,PPCOpcodeField::kCRcond), PrintDisasm_mtfsfx),
|
||||
INSTRUCTION(0x7c000124, "mtmsr" , kX , kI, kGeneral, "Move to Machine State Register" , (PPCOpcodeField::kRS), (PPCOpcodeField::kMSR), PrintDisasm_mtmsr),
|
||||
INSTRUCTION(0x7c000164, "mtmsrd" , kX , kI, kGeneral, "Move to Machine State Register Doubleword" , (PPCOpcodeField::kRS), (PPCOpcodeField::kMSR), PrintDisasm_mtmsrd),
|
||||
INSTRUCTION(0x7c0003a6, "mtspr" , kXFX , kI, kGeneral, "Move to Special-Purpose Register" , (PPCOpcodeField::kRS), (PPCOpcodeField::kSPR), PrintDisasm_mtspr),
|
||||
INSTRUCTION(0x10000644, "mtvscr" , kVX , kV, kGeneral, "Move to VSCR" , (PPCOpcodeField::kVB), (PPCOpcodeField::kVSCR), nullptr),
|
||||
INSTRUCTION(0x7c0000ce, "lvx" , kX , kM, kGeneral, "Load Vector Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvx),
|
||||
INSTRUCTION(0x100000c3, "lvx128" , kVX128_1, kM, kGeneral, "Load Vector Indexed 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvx128),
|
||||
INSTRUCTION(0x7c0002ce, "lvxl" , kX , kM, kGeneral, "Load Vector Indexed LRU" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvxl),
|
||||
INSTRUCTION(0x100002c3, "lvxl128" , kVX128_1, kM, kGeneral, "Load Vector Indexed LRU 128" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kVD), PrintDisasm_lvxl128),
|
||||
INSTRUCTION(0xe8000002, "lwa" , kDS , kM, kGeneral, "Load Word Algebraic" , (PPCOpcodeField::kRA0,PPCOpcodeField::kds), (PPCOpcodeField::kRD), PrintDisasm_lwa),
|
||||
INSTRUCTION(0x7c000028, "lwarx" , kX , kM, kGeneral, "Load Word and Reserve Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwarx),
|
||||
INSTRUCTION(0x7c0002ea, "lwaux" , kX , kM, kGeneral, "Load Word Algebraic with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwaux),
|
||||
INSTRUCTION(0x7c0002aa, "lwax" , kX , kM, kGeneral, "Load Word Algebraic Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwax),
|
||||
INSTRUCTION(0x7c00042c, "lwbrx" , kX , kM, kGeneral, "Load Word Byte-Reverse Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwbrx),
|
||||
INSTRUCTION(0x80000000, "lwz" , kD , kM, kGeneral, "Load Word and Zero" , (PPCOpcodeField::kRA0,PPCOpcodeField::kd), (PPCOpcodeField::kRD), PrintDisasm_lwz),
|
||||
INSTRUCTION(0x84000000, "lwzu" , kD , kM, kGeneral, "Load Word and Zero with Update" , (PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwzu),
|
||||
INSTRUCTION(0x7c00006e, "lwzux" , kX , kM, kGeneral, "Load Word and Zero with Update Indexed" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kRA), PrintDisasm_lwzux),
|
||||
INSTRUCTION(0x7c00002e, "lwzx" , kX , kM, kGeneral, "Load Word and Zero Indexed" , (PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kRD), PrintDisasm_lwzx),
|
||||
INSTRUCTION(0x4c000000, "mcrf" , kXL , kC, kGeneral, "Move Condition Register Field" , (PPCOpcodeField::kCRFS), (PPCOpcodeField::kCRFD), PrintDisasm_mcrf),
|
||||
INSTRUCTION(0xfc000080, "mcrfs" , kX , kC, kGeneral, "Move to Condition Register from FPSCR" , (PPCOpcodeField::kCRFS,PPCOpcodeField::kFPSCR), (PPCOpcodeField::kCRFD,PPCOpcodeField::kFPSCR), PrintDisasm_mcrfs),
|
||||
INSTRUCTION(0x7c000400, "mcrxr" , kX , kC, kGeneral, "Move to Condition Register from XER" , (PPCOpcodeField::kCR), (PPCOpcodeField::kCRFD), PrintDisasm_mcrxr),
|
||||
INSTRUCTION(0x7c000026, "mfcr" , kX , kC, kGeneral, "Move from Condition Register" , (PPCOpcodeField::kCR), (PPCOpcodeField::kRD), PrintDisasm_mfcr),
|
||||
INSTRUCTION(0xfc00048e, "mffsx" , kX , kC, kGeneral, "Move from FPSCR" , (PPCOpcodeField::kFPSCR), (PPCOpcodeField::kFD,PPCOpcodeField::kCRcond), PrintDisasm_mffsx),
|
||||
INSTRUCTION(0x7c0000a6, "mfmsr" , kX , kC, kGeneral, "Move from Machine State Register" , (PPCOpcodeField::kMSR), (PPCOpcodeField::kRD), PrintDisasm_mfmsr),
|
||||
INSTRUCTION(0x7c0002a6, "mfspr" , kXFX , kC, kGeneral, "Move from Special-Purpose Register" , (PPCOpcodeField::kSPR), (PPCOpcodeField::kRD), PrintDisasm_mfspr),
|
||||
INSTRUCTION(0x7c0002e6, "mftb" , kXFX , kC, kGeneral, "Move from Time Base" , (PPCOpcodeField::kTBR), (PPCOpcodeField::kRD), PrintDisasm_mftb),
|
||||
INSTRUCTION(0x10000604, "mfvscr" , kVX , kC, kGeneral, "Move from VSCR" , (PPCOpcodeField::kVSCR), (PPCOpcodeField::kVD), nullptr),
|
||||
INSTRUCTION(0x7c000120, "mtcrf" , kXFX , kC, kGeneral, "Move to Condition Register Fields" , (PPCOpcodeField::kRS), (PPCOpcodeField::kCRM), PrintDisasm_mtcrf),
|
||||
INSTRUCTION(0xfc00008c, "mtfsb0x" , kX , kC, kGeneral, "Move to FPSCR Bit 0" , (), (PPCOpcodeField::kFPSCRD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsb0x),
|
||||
INSTRUCTION(0xfc00004c, "mtfsb1x" , kX , kC, kGeneral, "Move to FPSCR Bit 1" , (), (PPCOpcodeField::kFPSCRD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsb1x),
|
||||
INSTRUCTION(0xfc00010c, "mtfsfix" , kX , kC, kGeneral, "Move to FPSCR Field Immediate" , (PPCOpcodeField::kIMM), (PPCOpcodeField::kCRFD,PPCOpcodeField::kCRcond), PrintDisasm_mtfsfix),
|
||||
INSTRUCTION(0xfc00058e, "mtfsfx" , kXFL , kC, kGeneral, "Move to FPSCR Fields" , (PPCOpcodeField::kFM,PPCOpcodeField::kFB), (PPCOpcodeField::kFPSCR,PPCOpcodeField::kCRcond), PrintDisasm_mtfsfx),
|
||||
INSTRUCTION(0x7c000124, "mtmsr" , kX , kC, kGeneral, "Move to Machine State Register" , (PPCOpcodeField::kRS), (PPCOpcodeField::kMSR), PrintDisasm_mtmsr),
|
||||
INSTRUCTION(0x7c000164, "mtmsrd" , kX , kC, kGeneral, "Move to Machine State Register Doubleword" , (PPCOpcodeField::kRS), (PPCOpcodeField::kMSR), PrintDisasm_mtmsrd),
|
||||
INSTRUCTION(0x7c0003a6, "mtspr" , kXFX , kC, kGeneral, "Move to Special-Purpose Register" , (PPCOpcodeField::kRS), (PPCOpcodeField::kSPR), PrintDisasm_mtspr),
|
||||
INSTRUCTION(0x10000644, "mtvscr" , kVX , kC, kGeneral, "Move to VSCR" , (PPCOpcodeField::kVB), (PPCOpcodeField::kVSCR), nullptr),
|
||||
INSTRUCTION(0x7c000012, "mulhdux" , kXO , kI, kGeneral, "Multiply High Doubleword Unsigned" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond), PrintDisasm_mulhdux),
|
||||
INSTRUCTION(0x7c000092, "mulhdx" , kXO , kI, kGeneral, "Multiply High Doubleword" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond), PrintDisasm_mulhdx),
|
||||
INSTRUCTION(0x7c000016, "mulhwux" , kXO , kI, kGeneral, "Multiply High Word Unsigned" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond), PrintDisasm_mulhwux),
|
||||
|
@ -5160,7 +5149,7 @@ PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
|||
INSTRUCTION(0x50000000, "rlwimix" , kM , kI, kGeneral, "Rotate Left Word Immediate then Mask Insert" , (PPCOpcodeField::kRS,PPCOpcodeField::kSH,PPCOpcodeField::kMB,PPCOpcodeField::kME), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_rlwimix),
|
||||
INSTRUCTION(0x54000000, "rlwinmx" , kM , kI, kGeneral, "Rotate Left Word Immediate then AND with Mask" , (PPCOpcodeField::kRS,PPCOpcodeField::kSH,PPCOpcodeField::kMB,PPCOpcodeField::kME), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_rlwinmx),
|
||||
INSTRUCTION(0x5c000000, "rlwnmx" , kM , kI, kGeneral, "Rotate Left Word then AND with Mask" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB,PPCOpcodeField::kMB,PPCOpcodeField::kME), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_rlwnmx),
|
||||
INSTRUCTION(0x44000002, "sc" , kSC , kI, kSync , "System Call" , (), (), PrintDisasm_sc),
|
||||
INSTRUCTION(0x44000002, "sc" , kSC , kB, kSync , "System Call" , (), (), PrintDisasm_sc),
|
||||
INSTRUCTION(0x7c000036, "sldx" , kX , kI, kGeneral, "Shift Left Doubleword" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_sldx),
|
||||
INSTRUCTION(0x7c000030, "slwx" , kX , kI, kGeneral, "Shift Left Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_slwx),
|
||||
INSTRUCTION(0x7c000674, "sradix" , kXS , kI, kGeneral, "Shift Right Algebraic Doubleword Immediate" , (PPCOpcodeField::kRS,PPCOpcodeField::kSH), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond,PPCOpcodeField::kCA), PrintDisasm_sradix),
|
||||
|
@ -5169,55 +5158,55 @@ PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
|||
INSTRUCTION(0x7c000630, "srawx" , kX , kI, kGeneral, "Shift Right Algebraic Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond,PPCOpcodeField::kCA), PrintDisasm_srawx),
|
||||
INSTRUCTION(0x7c000436, "srdx" , kX , kI, kGeneral, "Shift Right Doubleword" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_srdx),
|
||||
INSTRUCTION(0x7c000430, "srwx" , kX , kI, kGeneral, "Shift Right Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRB), (PPCOpcodeField::kRA,PPCOpcodeField::kCRcond), PrintDisasm_srwx),
|
||||
INSTRUCTION(0x98000000, "stb" , kD , kI, kGeneral, "Store Byte" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stb),
|
||||
INSTRUCTION(0x9c000000, "stbu" , kD , kI, kGeneral, "Store Byte with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stbu),
|
||||
INSTRUCTION(0x7c0001ee, "stbux" , kX , kI, kGeneral, "Store Byte with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stbux),
|
||||
INSTRUCTION(0x7c0001ae, "stbx" , kX , kI, kGeneral, "Store Byte Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stbx),
|
||||
INSTRUCTION(0xf8000000, "std" , kDS , kI, kGeneral, "Store Doubleword" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kds), (), PrintDisasm_std),
|
||||
INSTRUCTION(0x7c000528, "stdbrx" , kX , kI, kGeneral, "Store Doubleword Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stdbrx),
|
||||
INSTRUCTION(0x7c0001ad, "stdcx" , kX , kI, kGeneral, "Store Doubleword Conditional Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kCR), PrintDisasm_stdcx),
|
||||
INSTRUCTION(0xf8000001, "stdu" , kDS , kI, kGeneral, "Store Doubleword with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kds), (PPCOpcodeField::kRA), PrintDisasm_stdu),
|
||||
INSTRUCTION(0x7c00016a, "stdux" , kX , kI, kGeneral, "Store Doubleword with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stdux),
|
||||
INSTRUCTION(0x7c00012a, "stdx" , kX , kI, kGeneral, "Store Doubleword Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stdx),
|
||||
INSTRUCTION(0xd8000000, "stfd" , kD , kF, kGeneral, "Store Floating-Point Double" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stfd),
|
||||
INSTRUCTION(0xdc000000, "stfdu" , kD , kF, kGeneral, "Store Floating-Point Double with Update" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stfdu),
|
||||
INSTRUCTION(0x7c0005ee, "stfdux" , kX , kF, kGeneral, "Store Floating-Point Double with Update Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stfdux),
|
||||
INSTRUCTION(0x7c0005ae, "stfdx" , kX , kF, kGeneral, "Store Floating-Point Double Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfdx),
|
||||
INSTRUCTION(0x7c0007ae, "stfiwx" , kX , kF, kGeneral, "Store Floating-Point as Integer Word Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfiwx),
|
||||
INSTRUCTION(0xd0000000, "stfs" , kD , kF, kGeneral, "Store Floating-Point Single" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stfs),
|
||||
INSTRUCTION(0xd4000000, "stfsu" , kD , kF, kGeneral, "Store Floating-Point Single with Update" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stfsu),
|
||||
INSTRUCTION(0x7c00056e, "stfsux" , kX , kF, kGeneral, "Store Floating-Point Single with Update Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stfsux),
|
||||
INSTRUCTION(0x7c00052e, "stfsx" , kX , kF, kGeneral, "Store Floating-Point Single Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfsx),
|
||||
INSTRUCTION(0xb0000000, "sth" , kD , kI, kGeneral, "Store Half Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_sth),
|
||||
INSTRUCTION(0x7c00072c, "sthbrx" , kX , kI, kGeneral, "Store Half Word Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_sthbrx),
|
||||
INSTRUCTION(0xb4000000, "sthu" , kD , kI, kGeneral, "Store Half Word with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_sthu),
|
||||
INSTRUCTION(0x7c00036e, "sthux" , kX , kI, kGeneral, "Store Half Word with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_sthux),
|
||||
INSTRUCTION(0x7c00032e, "sthx" , kX , kI, kGeneral, "Store Half Word Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_sthx),
|
||||
INSTRUCTION(0xbc000000, "stmw" , kD , kI, kGeneral, "Store Multiple Word" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c0005aa, "stswi" , kX , kI, kGeneral, "Store String Word Immediate" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00052a, "stswx" , kX , kI, kGeneral, "Store String Word Indexed" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00010e, "stvebx" , kX , kV, kGeneral, "Store Vector Element Byte Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvebx),
|
||||
INSTRUCTION(0x7c00014e, "stvehx" , kX , kV, kGeneral, "Store Vector Element Half Word Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvehx),
|
||||
INSTRUCTION(0x7c00018e, "stvewx" , kX , kV, kGeneral, "Store Vector Element Word Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvewx),
|
||||
INSTRUCTION(0x10000183, "stvewx128" , kVX128_1, kV, kGeneral, "Store Vector Element Word Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvewx128),
|
||||
INSTRUCTION(0x7c00050e, "stvlx" , kX , kV, kGeneral, "Store Vector Left Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlx),
|
||||
INSTRUCTION(0x10000503, "stvlx128" , kVX128_1, kV, kGeneral, "Store Vector Left Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlx128),
|
||||
INSTRUCTION(0x7c00070e, "stvlxl" , kX , kV, kGeneral, "Store Vector Left Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlxl),
|
||||
INSTRUCTION(0x10000703, "stvlxl128" , kVX128_1, kV, kGeneral, "Store Vector Left Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlxl128),
|
||||
INSTRUCTION(0x7c00054e, "stvrx" , kX , kV, kGeneral, "Store Vector Right Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrx),
|
||||
INSTRUCTION(0x10000543, "stvrx128" , kVX128_1, kV, kGeneral, "Store Vector Right Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrx128),
|
||||
INSTRUCTION(0x7c00074e, "stvrxl" , kX , kV, kGeneral, "Store Vector Right Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrxl),
|
||||
INSTRUCTION(0x10000743, "stvrxl128" , kVX128_1, kV, kGeneral, "Store Vector Right Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrxl128),
|
||||
INSTRUCTION(0x7c0001ce, "stvx" , kX , kV, kGeneral, "Store Vector Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvx),
|
||||
INSTRUCTION(0x100001c3, "stvx128" , kVX128_1, kV, kGeneral, "Store Vector Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvx128),
|
||||
INSTRUCTION(0x7c0003ce, "stvxl" , kX , kV, kGeneral, "Store Vector Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvxl),
|
||||
INSTRUCTION(0x100003c3, "stvxl128" , kVX128_1, kV, kGeneral, "Store Vector Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvxl128),
|
||||
INSTRUCTION(0x90000000, "stw" , kD , kI, kGeneral, "Store Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stw),
|
||||
INSTRUCTION(0x7c00052c, "stwbrx" , kX , kI, kGeneral, "Store Word Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stwbrx),
|
||||
INSTRUCTION(0x7c00012d, "stwcx" , kX , kI, kGeneral, "Store Word Conditional Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kCR), PrintDisasm_stwcx),
|
||||
INSTRUCTION(0x94000000, "stwu" , kD , kI, kGeneral, "Store Word with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stwu),
|
||||
INSTRUCTION(0x7c00016e, "stwux" , kX , kI, kGeneral, "Store Word with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stwux),
|
||||
INSTRUCTION(0x7c00012e, "stwx" , kX , kI, kGeneral, "Store Word Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stwx),
|
||||
INSTRUCTION(0x98000000, "stb" , kD , kM, kGeneral, "Store Byte" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stb),
|
||||
INSTRUCTION(0x9c000000, "stbu" , kD , kM, kGeneral, "Store Byte with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stbu),
|
||||
INSTRUCTION(0x7c0001ee, "stbux" , kX , kM, kGeneral, "Store Byte with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stbux),
|
||||
INSTRUCTION(0x7c0001ae, "stbx" , kX , kM, kGeneral, "Store Byte Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stbx),
|
||||
INSTRUCTION(0xf8000000, "std" , kDS , kM, kGeneral, "Store Doubleword" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kds), (), PrintDisasm_std),
|
||||
INSTRUCTION(0x7c000528, "stdbrx" , kX , kM, kGeneral, "Store Doubleword Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stdbrx),
|
||||
INSTRUCTION(0x7c0001ad, "stdcx" , kX , kM, kGeneral, "Store Doubleword Conditional Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kCR), PrintDisasm_stdcx),
|
||||
INSTRUCTION(0xf8000001, "stdu" , kDS , kM, kGeneral, "Store Doubleword with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kds), (PPCOpcodeField::kRA), PrintDisasm_stdu),
|
||||
INSTRUCTION(0x7c00016a, "stdux" , kX , kM, kGeneral, "Store Doubleword with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stdux),
|
||||
INSTRUCTION(0x7c00012a, "stdx" , kX , kM, kGeneral, "Store Doubleword Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stdx),
|
||||
INSTRUCTION(0xd8000000, "stfd" , kD , kM, kGeneral, "Store Floating-Point Double" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stfd),
|
||||
INSTRUCTION(0xdc000000, "stfdu" , kD , kM, kGeneral, "Store Floating-Point Double with Update" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stfdu),
|
||||
INSTRUCTION(0x7c0005ee, "stfdux" , kX , kM, kGeneral, "Store Floating-Point Double with Update Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stfdux),
|
||||
INSTRUCTION(0x7c0005ae, "stfdx" , kX , kM, kGeneral, "Store Floating-Point Double Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfdx),
|
||||
INSTRUCTION(0x7c0007ae, "stfiwx" , kX , kM, kGeneral, "Store Floating-Point as Integer Word Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfiwx),
|
||||
INSTRUCTION(0xd0000000, "stfs" , kD , kM, kGeneral, "Store Floating-Point Single" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stfs),
|
||||
INSTRUCTION(0xd4000000, "stfsu" , kD , kM, kGeneral, "Store Floating-Point Single with Update" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stfsu),
|
||||
INSTRUCTION(0x7c00056e, "stfsux" , kX , kM, kGeneral, "Store Floating-Point Single with Update Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stfsux),
|
||||
INSTRUCTION(0x7c00052e, "stfsx" , kX , kM, kGeneral, "Store Floating-Point Single Indexed" , (PPCOpcodeField::kFS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stfsx),
|
||||
INSTRUCTION(0xb0000000, "sth" , kD , kM, kGeneral, "Store Half Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_sth),
|
||||
INSTRUCTION(0x7c00072c, "sthbrx" , kX , kM, kGeneral, "Store Half Word Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_sthbrx),
|
||||
INSTRUCTION(0xb4000000, "sthu" , kD , kM, kGeneral, "Store Half Word with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_sthu),
|
||||
INSTRUCTION(0x7c00036e, "sthux" , kX , kM, kGeneral, "Store Half Word with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_sthux),
|
||||
INSTRUCTION(0x7c00032e, "sthx" , kX , kM, kGeneral, "Store Half Word Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_sthx),
|
||||
INSTRUCTION(0xbc000000, "stmw" , kD , kM, kGeneral, "Store Multiple Word" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c0005aa, "stswi" , kX , kM, kGeneral, "Store String Word Immediate" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00052a, "stswx" , kX , kM, kGeneral, "Store String Word Indexed" , (), (), nullptr),
|
||||
INSTRUCTION(0x7c00010e, "stvebx" , kX , kM, kGeneral, "Store Vector Element Byte Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvebx),
|
||||
INSTRUCTION(0x7c00014e, "stvehx" , kX , kM, kGeneral, "Store Vector Element Half Word Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvehx),
|
||||
INSTRUCTION(0x7c00018e, "stvewx" , kX , kM, kGeneral, "Store Vector Element Word Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvewx),
|
||||
INSTRUCTION(0x10000183, "stvewx128" , kVX128_1, kM, kGeneral, "Store Vector Element Word Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvewx128),
|
||||
INSTRUCTION(0x7c00050e, "stvlx" , kX , kM, kGeneral, "Store Vector Left Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlx),
|
||||
INSTRUCTION(0x10000503, "stvlx128" , kVX128_1, kM, kGeneral, "Store Vector Left Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlx128),
|
||||
INSTRUCTION(0x7c00070e, "stvlxl" , kX , kM, kGeneral, "Store Vector Left Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlxl),
|
||||
INSTRUCTION(0x10000703, "stvlxl128" , kVX128_1, kM, kGeneral, "Store Vector Left Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvlxl128),
|
||||
INSTRUCTION(0x7c00054e, "stvrx" , kX , kM, kGeneral, "Store Vector Right Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrx),
|
||||
INSTRUCTION(0x10000543, "stvrx128" , kVX128_1, kM, kGeneral, "Store Vector Right Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrx128),
|
||||
INSTRUCTION(0x7c00074e, "stvrxl" , kX , kM, kGeneral, "Store Vector Right Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrxl),
|
||||
INSTRUCTION(0x10000743, "stvrxl128" , kVX128_1, kM, kGeneral, "Store Vector Right Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvrxl128),
|
||||
INSTRUCTION(0x7c0001ce, "stvx" , kX , kM, kGeneral, "Store Vector Indexed" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvx),
|
||||
INSTRUCTION(0x100001c3, "stvx128" , kVX128_1, kM, kGeneral, "Store Vector Indexed 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvx128),
|
||||
INSTRUCTION(0x7c0003ce, "stvxl" , kX , kM, kGeneral, "Store Vector Indexed LRU" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvxl),
|
||||
INSTRUCTION(0x100003c3, "stvxl128" , kVX128_1, kM, kGeneral, "Store Vector Indexed LRU 128" , (PPCOpcodeField::kVS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stvxl128),
|
||||
INSTRUCTION(0x90000000, "stw" , kD , kM, kGeneral, "Store Word" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kd), (), PrintDisasm_stw),
|
||||
INSTRUCTION(0x7c00052c, "stwbrx" , kX , kM, kGeneral, "Store Word Byte-Reverse Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stwbrx),
|
||||
INSTRUCTION(0x7c00012d, "stwcx" , kX , kM, kGeneral, "Store Word Conditional Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (PPCOpcodeField::kCR), PrintDisasm_stwcx),
|
||||
INSTRUCTION(0x94000000, "stwu" , kD , kM, kGeneral, "Store Word with Update" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kd), (PPCOpcodeField::kRA), PrintDisasm_stwu),
|
||||
INSTRUCTION(0x7c00016e, "stwux" , kX , kM, kGeneral, "Store Word with Update Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRA), PrintDisasm_stwux),
|
||||
INSTRUCTION(0x7c00012e, "stwx" , kX , kM, kGeneral, "Store Word Indexed" , (PPCOpcodeField::kRS,PPCOpcodeField::kRA0,PPCOpcodeField::kRB), (), PrintDisasm_stwx),
|
||||
INSTRUCTION(0x7c000010, "subfcx" , kXO , kI, kGeneral, "Subtract From Carrying" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond,PPCOpcodeField::kOEcond), PrintDisasm_subfcx),
|
||||
INSTRUCTION(0x7c000110, "subfex" , kXO , kI, kGeneral, "Subtract From Extended" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond,PPCOpcodeField::kOEcond), PrintDisasm_subfex),
|
||||
INSTRUCTION(0x20000000, "subficx" , kD , kI, kGeneral, "Subtract From Immediate Carrying" , (PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (PPCOpcodeField::kRD,PPCOpcodeField::kCA), PrintDisasm_subficx),
|
||||
|
@ -5225,10 +5214,10 @@ PPCOpcodeDisasmInfo ppc_opcode_disasm_table[] = {
|
|||
INSTRUCTION(0x7c000050, "subfx" , kXO , kI, kGeneral, "Subtract From" , (PPCOpcodeField::kRA,PPCOpcodeField::kRB), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond,PPCOpcodeField::kOEcond), PrintDisasm_subfx),
|
||||
INSTRUCTION(0x7c000190, "subfzex" , kXO , kI, kGeneral, "Subtract From Zero Extended" , (PPCOpcodeField::kRA,PPCOpcodeField::kCA), (PPCOpcodeField::kRD,PPCOpcodeField::kCRcond,PPCOpcodeField::kOEcond,PPCOpcodeField::kCA), PrintDisasm_subfzex),
|
||||
INSTRUCTION(0x7c0004ac, "sync" , kX , kI, kGeneral, "Synchronize" , (), (), PrintDisasm_sync),
|
||||
INSTRUCTION(0x7c000088, "td" , kX , kI, kGeneral, "Trap Doubleword" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (), PrintDisasm_td),
|
||||
INSTRUCTION(0x08000000, "tdi" , kD , kI, kGeneral, "Trap Doubleword Immediate" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (), PrintDisasm_tdi),
|
||||
INSTRUCTION(0x7c000008, "tw" , kX , kI, kGeneral, "Trap Word" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (), PrintDisasm_tw),
|
||||
INSTRUCTION(0x0c000000, "twi" , kD , kI, kGeneral, "Trap Word Immediate" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (), PrintDisasm_twi),
|
||||
INSTRUCTION(0x7c000088, "td" , kX , kB, kGeneral, "Trap Doubleword" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (), PrintDisasm_td),
|
||||
INSTRUCTION(0x08000000, "tdi" , kD , kB, kGeneral, "Trap Doubleword Immediate" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (), PrintDisasm_tdi),
|
||||
INSTRUCTION(0x7c000008, "tw" , kX , kB, kGeneral, "Trap Word" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kRB), (), PrintDisasm_tw),
|
||||
INSTRUCTION(0x0c000000, "twi" , kD , kB, kGeneral, "Trap Word Immediate" , (PPCOpcodeField::kTO,PPCOpcodeField::kRA,PPCOpcodeField::kSIMM), (), PrintDisasm_twi),
|
||||
INSTRUCTION(0x10000180, "vaddcuw" , kVX , kV, kGeneral, "Vector Add Carryout Unsigned Word" , (PPCOpcodeField::kVA,PPCOpcodeField::kVB), (PPCOpcodeField::kVD), PrintDisasm_vaddcuw),
|
||||
INSTRUCTION(0x1000000a, "vaddfp" , kVX , kV, kGeneral, "Vector Add Floating Point" , (PPCOpcodeField::kVA,PPCOpcodeField::kVB), (PPCOpcodeField::kVD), PrintDisasm_vaddfp),
|
||||
INSTRUCTION(0x14000010, "vaddfp128" , kVX128 , kV, kGeneral, "Vector128 Add Floating Point" , (PPCOpcodeField::kVA,PPCOpcodeField::kVB), (PPCOpcodeField::kVD), PrintDisasm_vaddfp128),
|
||||
|
|
|
@ -53,9 +53,12 @@ enum class PPCOpcodeFormat {
|
|||
};
|
||||
|
||||
enum class PPCOpcodeGroup {
|
||||
kI,
|
||||
kF,
|
||||
kV,
|
||||
kB, // Branching/traps/etc.
|
||||
kC, // Control.
|
||||
kM, // Memory load/store (of all types).
|
||||
kI, // Integer.
|
||||
kF, // Floating-point.
|
||||
kV, // VMX.
|
||||
};
|
||||
|
||||
enum class PPCOpcodeType {
|
||||
|
|
|
@ -411,7 +411,6 @@ PPCOpcode LookupOpcode(uint32_t code) {
|
|||
case 0b1010110111: PPC_DECODER_HIT(stfsux);
|
||||
case 0b1011010101: PPC_DECODER_HIT(stswi);
|
||||
case 0b1011010111: PPC_DECODER_HIT(stfdx);
|
||||
case 0b1011110110: PPC_DECODER_HIT(dcba);
|
||||
case 0b1011110111: PPC_DECODER_HIT(stfdux);
|
||||
case 0b1100000111: PPC_DECODER_HIT(lvlxl);
|
||||
case 0b1100010110: PPC_DECODER_HIT(lhbrx);
|
||||
|
|
|
@ -26,32 +26,31 @@ PPCOpcodeInfo ppc_opcode_table[] = {
|
|||
INSTRUCTION(0x74000000, "andisx" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x70000000, "andix" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000038, "andx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000420, "bcctrx" , kXL , kI, kSync ),
|
||||
INSTRUCTION(0x4c000020, "bclrx" , kXL , kI, kSync ),
|
||||
INSTRUCTION(0x40000000, "bcx" , kB , kI, kSync ),
|
||||
INSTRUCTION(0x48000000, "bx" , kI , kI, kSync ),
|
||||
INSTRUCTION(0x4c000420, "bcctrx" , kXL , kB, kSync ),
|
||||
INSTRUCTION(0x4c000020, "bclrx" , kXL , kB, kSync ),
|
||||
INSTRUCTION(0x40000000, "bcx" , kB , kB, kSync ),
|
||||
INSTRUCTION(0x48000000, "bx" , kI , kB, kSync ),
|
||||
INSTRUCTION(0x7c000000, "cmp" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x2c000000, "cmpi" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000040, "cmpl" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x28000000, "cmpli" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000074, "cntlzdx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000034, "cntlzwx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000202, "crand" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000102, "crandc" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000242, "creqv" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c0001c2, "crnand" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000042, "crnor" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000382, "cror" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000342, "crorc" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000182, "crxor" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0005ec, "dcba" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000202, "crand" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000102, "crandc" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000242, "creqv" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c0001c2, "crnand" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000042, "crnor" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000382, "cror" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000342, "crorc" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x4c000182, "crxor" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0x7c0000ac, "dcbf" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0003ac, "dcbi" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00006c, "dcbst" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00022c, "dcbt" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0001ec, "dcbtst" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0007ec, "dcbz" , kDCBZ , kI, kGeneral),
|
||||
INSTRUCTION(0x7c2007ec, "dcbz128" , kDCBZ , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0007ec, "dcbz" , kDCBZ , kM, kGeneral),
|
||||
INSTRUCTION(0x7c2007ec, "dcbz128" , kDCBZ , kM, kGeneral),
|
||||
INSTRUCTION(0x7c000392, "divdux" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0003d2, "divdx" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000396, "divwux" , kXO , kI, kGeneral),
|
||||
|
@ -96,83 +95,83 @@ PPCOpcodeInfo ppc_opcode_table[] = {
|
|||
INSTRUCTION(0xfc000028, "fsubx" , kA , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0007ac, "icbi" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x4c00012c, "isync" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0x88000000, "lbz" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x8c000000, "lbzu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0000ee, "lbzux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0000ae, "lbzx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xe8000000, "ld" , kDS , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0000a8, "ldarx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000428, "ldbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xe8000001, "ldu" , kDS , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00006a, "ldux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00002a, "ldx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xc8000000, "lfd" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0xcc000000, "lfdu" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0004ee, "lfdux" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0004ae, "lfdx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xc0000000, "lfs" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0xc4000000, "lfsu" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0x7c00046e, "lfsux" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c00042e, "lfsx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xa8000000, "lha" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0xac000000, "lhau" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002ee, "lhaux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002ae, "lhax" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00062c, "lhbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xa0000000, "lhz" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0xa4000000, "lhzu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00026e, "lhzux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00022e, "lhzx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xb8000000, "lmw" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0004aa, "lswi" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00042a, "lswx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00000e, "lvebx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c00004e, "lvehx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c00008e, "lvewx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000083, "lvewx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00040e, "lvlx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000403, "lvlx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00060e, "lvlxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000603, "lvlxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00044e, "lvrx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000443, "lvrx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00064e, "lvrxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000643, "lvrxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x88000000, "lbz" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x8c000000, "lbzu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0000ee, "lbzux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0000ae, "lbzx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xe8000000, "ld" , kDS , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0000a8, "ldarx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c000428, "ldbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xe8000001, "ldu" , kDS , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00006a, "ldux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00002a, "ldx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xc8000000, "lfd" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xcc000000, "lfdu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0004ee, "lfdux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0004ae, "lfdx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xc0000000, "lfs" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xc4000000, "lfsu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00046e, "lfsux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00042e, "lfsx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xa8000000, "lha" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xac000000, "lhau" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0002ee, "lhaux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0002ae, "lhax" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00062c, "lhbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xa0000000, "lhz" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xa4000000, "lhzu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00026e, "lhzux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00022e, "lhzx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xb8000000, "lmw" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0004aa, "lswi" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00042a, "lswx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00000e, "lvebx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00004e, "lvehx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00008e, "lvewx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000083, "lvewx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00040e, "lvlx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000403, "lvlx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00060e, "lvlxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000603, "lvlxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00044e, "lvrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000443, "lvrx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00064e, "lvrxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000643, "lvrxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00000c, "lvsl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000003, "lvsl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00004c, "lvsr" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000043, "lvsr128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c0000ce, "lvx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x100000c3, "lvx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c0002ce, "lvxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x100002c3, "lvxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0xe8000002, "lwa" , kDS , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000028, "lwarx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002ea, "lwaux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002aa, "lwax" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00042c, "lwbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x80000000, "lwz" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x84000000, "lwzu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00006e, "lwzux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00002e, "lwzx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x4c000000, "mcrf" , kXL , kI, kGeneral),
|
||||
INSTRUCTION(0xfc000080, "mcrfs" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c000400, "mcrxr" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000026, "mfcr" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xfc00048e, "mffsx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0000a6, "mfmsr" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002a6, "mfspr" , kXFX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0002e6, "mftb" , kXFX , kI, kGeneral),
|
||||
INSTRUCTION(0x10000604, "mfvscr" , kVX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c000120, "mtcrf" , kXFX , kI, kGeneral),
|
||||
INSTRUCTION(0xfc00008c, "mtfsb0x" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xfc00004c, "mtfsb1x" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xfc00010c, "mtfsfix" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xfc00058e, "mtfsfx" , kXFL , kF, kGeneral),
|
||||
INSTRUCTION(0x7c000124, "mtmsr" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000164, "mtmsrd" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0003a6, "mtspr" , kXFX , kI, kGeneral),
|
||||
INSTRUCTION(0x10000644, "mtvscr" , kVX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c0000ce, "lvx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x100000c3, "lvx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c0002ce, "lvxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x100002c3, "lvxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0xe8000002, "lwa" , kDS , kM, kGeneral),
|
||||
INSTRUCTION(0x7c000028, "lwarx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0002ea, "lwaux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0002aa, "lwax" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00042c, "lwbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x80000000, "lwz" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x84000000, "lwzu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00006e, "lwzux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00002e, "lwzx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x4c000000, "mcrf" , kXL , kC, kGeneral),
|
||||
INSTRUCTION(0xfc000080, "mcrfs" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000400, "mcrxr" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000026, "mfcr" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0xfc00048e, "mffsx" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c0000a6, "mfmsr" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c0002a6, "mfspr" , kXFX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c0002e6, "mftb" , kXFX , kC, kGeneral),
|
||||
INSTRUCTION(0x10000604, "mfvscr" , kVX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000120, "mtcrf" , kXFX , kC, kGeneral),
|
||||
INSTRUCTION(0xfc00008c, "mtfsb0x" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0xfc00004c, "mtfsb1x" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0xfc00010c, "mtfsfix" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0xfc00058e, "mtfsfx" , kXFL , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000124, "mtmsr" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000164, "mtmsrd" , kX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c0003a6, "mtspr" , kXFX , kC, kGeneral),
|
||||
INSTRUCTION(0x10000644, "mtvscr" , kVX , kC, kGeneral),
|
||||
INSTRUCTION(0x7c000012, "mulhdux" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000092, "mulhdx" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000016, "mulhwux" , kXO , kI, kGeneral),
|
||||
|
@ -196,7 +195,7 @@ PPCOpcodeInfo ppc_opcode_table[] = {
|
|||
INSTRUCTION(0x50000000, "rlwimix" , kM , kI, kGeneral),
|
||||
INSTRUCTION(0x54000000, "rlwinmx" , kM , kI, kGeneral),
|
||||
INSTRUCTION(0x5c000000, "rlwnmx" , kM , kI, kGeneral),
|
||||
INSTRUCTION(0x44000002, "sc" , kSC , kI, kSync ),
|
||||
INSTRUCTION(0x44000002, "sc" , kSC , kB, kSync ),
|
||||
INSTRUCTION(0x7c000036, "sldx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000030, "slwx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000674, "sradix" , kXS , kI, kGeneral),
|
||||
|
@ -205,55 +204,55 @@ PPCOpcodeInfo ppc_opcode_table[] = {
|
|||
INSTRUCTION(0x7c000630, "srawx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000436, "srdx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000430, "srwx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x98000000, "stb" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x9c000000, "stbu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0001ee, "stbux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0001ae, "stbx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xf8000000, "std" , kDS , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000528, "stdbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0001ad, "stdcx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xf8000001, "stdu" , kDS , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00016a, "stdux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00012a, "stdx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xd8000000, "stfd" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0xdc000000, "stfdu" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0005ee, "stfdux" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0005ae, "stfdx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c0007ae, "stfiwx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xd0000000, "stfs" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0xd4000000, "stfsu" , kD , kF, kGeneral),
|
||||
INSTRUCTION(0x7c00056e, "stfsux" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0x7c00052e, "stfsx" , kX , kF, kGeneral),
|
||||
INSTRUCTION(0xb0000000, "sth" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00072c, "sthbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xb4000000, "sthu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00036e, "sthux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00032e, "sthx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0xbc000000, "stmw" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0005aa, "stswi" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00052a, "stswx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00010e, "stvebx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c00014e, "stvehx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x7c00018e, "stvewx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000183, "stvewx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00050e, "stvlx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000503, "stvlx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00070e, "stvlxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000703, "stvlxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00054e, "stvrx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000543, "stvrx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c00074e, "stvrxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x10000743, "stvrxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c0001ce, "stvx" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x100001c3, "stvx128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x7c0003ce, "stvxl" , kX , kV, kGeneral),
|
||||
INSTRUCTION(0x100003c3, "stvxl128" , kVX128_1, kV, kGeneral),
|
||||
INSTRUCTION(0x90000000, "stw" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00052c, "stwbrx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00012d, "stwcx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x94000000, "stwu" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00016e, "stwux" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c00012e, "stwx" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x98000000, "stb" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x9c000000, "stbu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0001ee, "stbux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0001ae, "stbx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xf8000000, "std" , kDS , kM, kGeneral),
|
||||
INSTRUCTION(0x7c000528, "stdbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0001ad, "stdcx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xf8000001, "stdu" , kDS , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00016a, "stdux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00012a, "stdx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xd8000000, "stfd" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xdc000000, "stfdu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0005ee, "stfdux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0005ae, "stfdx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0007ae, "stfiwx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xd0000000, "stfs" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0xd4000000, "stfsu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00056e, "stfsux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00052e, "stfsx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xb0000000, "sth" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00072c, "sthbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xb4000000, "sthu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00036e, "sthux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00032e, "sthx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0xbc000000, "stmw" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c0005aa, "stswi" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00052a, "stswx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00010e, "stvebx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00014e, "stvehx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00018e, "stvewx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000183, "stvewx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00050e, "stvlx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000503, "stvlx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00070e, "stvlxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000703, "stvlxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00054e, "stvrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000543, "stvrx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c00074e, "stvrxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x10000743, "stvrxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c0001ce, "stvx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x100001c3, "stvx128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x7c0003ce, "stvxl" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x100003c3, "stvxl128" , kVX128_1, kM, kGeneral),
|
||||
INSTRUCTION(0x90000000, "stw" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00052c, "stwbrx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00012d, "stwcx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x94000000, "stwu" , kD , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00016e, "stwux" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c00012e, "stwx" , kX , kM, kGeneral),
|
||||
INSTRUCTION(0x7c000010, "subfcx" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000110, "subfex" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x20000000, "subficx" , kD , kI, kGeneral),
|
||||
|
@ -261,10 +260,10 @@ PPCOpcodeInfo ppc_opcode_table[] = {
|
|||
INSTRUCTION(0x7c000050, "subfx" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000190, "subfzex" , kXO , kI, kGeneral),
|
||||
INSTRUCTION(0x7c0004ac, "sync" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000088, "td" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x08000000, "tdi" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000008, "tw" , kX , kI, kGeneral),
|
||||
INSTRUCTION(0x0c000000, "twi" , kD , kI, kGeneral),
|
||||
INSTRUCTION(0x7c000088, "td" , kX , kB, kGeneral),
|
||||
INSTRUCTION(0x08000000, "tdi" , kD , kB, kGeneral),
|
||||
INSTRUCTION(0x7c000008, "tw" , kX , kB, kGeneral),
|
||||
INSTRUCTION(0x0c000000, "twi" , kD , kB, kGeneral),
|
||||
INSTRUCTION(0x10000180, "vaddcuw" , kVX , kV, kGeneral),
|
||||
INSTRUCTION(0x1000000a, "vaddfp" , kVX , kV, kGeneral),
|
||||
INSTRUCTION(0x14000010, "vaddfp128" , kVX128 , kV, kGeneral),
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -20,10 +20,6 @@ from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring, du
|
|||
self_path = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
|
||||
class Insn:
|
||||
pass
|
||||
|
||||
|
||||
def bit_extract(x, leftmost, rightmost):
|
||||
return (x >> (32 - 1 - rightmost)) & ((1 << (rightmost - leftmost + 1)) - 1)
|
||||
|
||||
|
@ -74,6 +70,10 @@ def opcode_extended(insn, form):
|
|||
return -1
|
||||
|
||||
|
||||
class Insn:
|
||||
pass
|
||||
|
||||
|
||||
def parse_insns(filename):
|
||||
root = ElementTree(file = filename)
|
||||
insns = []
|
||||
|
|
Loading…
Reference in New Issue