Index: src/ppc/disasm-ppc.cc |
diff --git a/src/ppc/disasm-ppc.cc b/src/ppc/disasm-ppc.cc |
index 5da45f27f02f0f451aba9d4f5a60be20c80ca804..6baf3d0c7fa188c71805f60919d75df0a4fed23b 100644 |
--- a/src/ppc/disasm-ppc.cc |
+++ b/src/ppc/disasm-ppc.cc |
@@ -371,13 +371,13 @@ void Decoder::UnknownFormat(Instruction* instr, const char* name) { |
void Decoder::DecodeExt1(Instruction* instr) { |
- switch (instr->Bits(10, 1) << 1) { |
+ switch (EXT1 | (instr->BitField(10, 1))) { |
case MCRF: { |
UnknownFormat(instr, "mcrf"); // not used by V8 |
break; |
} |
case BCLRX: { |
- int bo = instr->Bits(25, 21) << 21; |
+ int bo = instr->BitField(25, 21); |
int bi = instr->Bits(20, 16); |
CRBit cond = static_cast<CRBit>(bi & (CRWIDTH - 1)); |
switch (bo) { |
@@ -447,7 +447,7 @@ void Decoder::DecodeExt1(Instruction* instr) { |
break; |
} |
case BCCTRX: { |
- switch (instr->Bits(25, 21) << 21) { |
+ switch (instr->BitField(25, 21)) { |
case DCBNZF: { |
UnknownFormat(instr, "bcctrx-dcbnzf"); |
break; |
@@ -541,7 +541,7 @@ void Decoder::DecodeExt1(Instruction* instr) { |
void Decoder::DecodeExt2(Instruction* instr) { |
// Some encodings are 10-1 bits, handle those first |
- switch (instr->Bits(10, 1) << 1) { |
+ switch (EXT2 | (instr->BitField(10, 1))) { |
case SRWX: { |
Format(instr, "srw'. 'ra, 'rs, 'rb"); |
return; |
@@ -642,7 +642,7 @@ void Decoder::DecodeExt2(Instruction* instr) { |
#endif |
} |
- switch (instr->Bits(10, 2) << 2) { |
+ switch (EXT2 | (instr->BitField(10, 2))) { |
case SRADIX: { |
Format(instr, "sradi'. 'ra,'rs,'sh"); |
return; |
@@ -650,7 +650,7 @@ void Decoder::DecodeExt2(Instruction* instr) { |
} |
// ?? are all of these xo_form? |
- switch (instr->Bits(9, 1) << 1) { |
+ switch (EXT2 | (instr->BitField(9, 1))) { |
case CMP: { |
#if V8_TARGET_ARCH_PPC64 |
if (instr->Bit(21)) { |
@@ -899,7 +899,7 @@ void Decoder::DecodeExt2(Instruction* instr) { |
#endif |
} |
- switch (instr->Bits(5, 1) << 1) { |
+ switch (EXT2 | (instr->BitField(5, 1))) { |
case ISEL: { |
Format(instr, "isel 'rt, 'ra, 'rb"); |
return; |
@@ -912,7 +912,7 @@ void Decoder::DecodeExt2(Instruction* instr) { |
void Decoder::DecodeExt3(Instruction* instr) { |
- switch (instr->Bits(10, 1) << 1) { |
+ switch (EXT3 | (instr->BitField(10, 1))) { |
case FCFID: { |
Format(instr, "fcfids'. 'Dt, 'Db"); |
break; |
@@ -929,7 +929,7 @@ void Decoder::DecodeExt3(Instruction* instr) { |
void Decoder::DecodeExt4(Instruction* instr) { |
- switch (instr->Bits(5, 1) << 1) { |
+ switch (EXT4 | (instr->BitField(5, 1))) { |
case FDIV: { |
Format(instr, "fdiv'. 'Dt, 'Da, 'Db"); |
return; |
@@ -964,7 +964,7 @@ void Decoder::DecodeExt4(Instruction* instr) { |
} |
} |
- switch (instr->Bits(10, 1) << 1) { |
+ switch (EXT4 | (instr->BitField(10, 1))) { |
case FCMPU: { |
Format(instr, "fcmpu 'Da, 'Db"); |
break; |
@@ -1065,7 +1065,7 @@ void Decoder::DecodeExt4(Instruction* instr) { |
void Decoder::DecodeExt5(Instruction* instr) { |
- switch (instr->Bits(4, 2) << 2) { |
+ switch (EXT5 | (instr->BitField(4, 2))) { |
case RLDICL: { |
Format(instr, "rldicl'. 'ra, 'rs, 'sh, 'mb"); |
return; |
@@ -1083,7 +1083,7 @@ void Decoder::DecodeExt5(Instruction* instr) { |
return; |
} |
} |
- switch (instr->Bits(4, 1) << 1) { |
+ switch (EXT5 | (instr->BitField(4, 1))) { |
case RLDCL: { |
Format(instr, "rldcl'. 'ra, 'rs, 'sb, 'mb"); |
return; |
@@ -1093,22 +1093,22 @@ void Decoder::DecodeExt5(Instruction* instr) { |
} |
void Decoder::DecodeExt6(Instruction* instr) { |
- switch (instr->Bits(10, 3) << 3) { |
+ switch (EXT6 | (instr->BitField(10, 3))) { |
#define DECODE_XX3_INSTRUCTIONS(name, opcode_name, opcode_value) \ |
case opcode_name: { \ |
Format(instr, #name" 'Dt, 'Da, 'Db"); \ |
return; \ |
} |
- XX3_OPCODE_LIST(DECODE_XX3_INSTRUCTIONS) |
+ PPC_XX3_OPCODE_LIST(DECODE_XX3_INSTRUCTIONS) |
#undef DECODE_XX3_INSTRUCTIONS |
} |
- switch (instr->Bits(10, 2) << 2) { |
+ switch (EXT6 | (instr->BitField(10, 2))) { |
#define DECODE_XX2_INSTRUCTIONS(name, opcode_name, opcode_value) \ |
case opcode_name: { \ |
Format(instr, #name" 'Dt, 'Db"); \ |
return; \ |
} |
- XX2_OPCODE_LIST(DECODE_XX2_INSTRUCTIONS) |
+ PPC_XX2_OPCODE_LIST(DECODE_XX2_INSTRUCTIONS) |
} |
#undef DECODE_XX3_INSTRUCTIONS |
Unknown(instr); // not used by V8 |
@@ -1130,7 +1130,8 @@ int Decoder::InstructionDecode(byte* instr_ptr) { |
return Instruction::kInstrSize; |
} |
- switch (instr->OpcodeValue() << 26) { |
+ uint32_t opcode = instr->OpcodeValue() << 26; |
+ switch (opcode) { |
case TWI: { |
PrintSoftwareInterrupt(instr->SvcValue()); |
break; |