Index: src/ppc/disasm-ppc.cc |
diff --git a/src/ppc/disasm-ppc.cc b/src/ppc/disasm-ppc.cc |
index c0a02a8b9c55d2552626e7cf33f6cdef48b07610..1bffc9885ece3f2be6e7ed1bae1513520068de09 100644 |
--- a/src/ppc/disasm-ppc.cc |
+++ b/src/ppc/disasm-ppc.cc |
@@ -82,6 +82,7 @@ class Decoder { |
void DecodeExt3(Instruction* instr); |
void DecodeExt4(Instruction* instr); |
void DecodeExt5(Instruction* instr); |
+ void DecodeExt6(Instruction* instr); |
const disasm::NameConverter& converter_; |
Vector<char> out_buffer_; |
@@ -1073,6 +1074,28 @@ void Decoder::DecodeExt5(Instruction* instr) { |
Unknown(instr); // not used by V8 |
} |
+void Decoder::DecodeExt6(Instruction* instr) { |
+ switch (instr->Bits(10, 3) << 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) |
+#undef DECODE_XX3_INSTRUCTIONS |
+ } |
+ switch (instr->Bits(10, 2) << 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) |
+ } |
+#undef DECODE_XX3_INSTRUCTIONS |
+ Unknown(instr); // not used by V8 |
+} |
+ |
#undef VERIFIY |
// Disassemble the instruction at *instr_ptr into the output buffer. |
@@ -1360,6 +1383,10 @@ int Decoder::InstructionDecode(byte* instr_ptr) { |
DecodeExt5(instr); |
break; |
} |
+ case EXT6: { |
+ DecodeExt6(instr); |
+ break; |
+ } |
#if V8_TARGET_ARCH_PPC64 |
case LD: { |
switch (instr->Bits(1, 0)) { |