| Index: src/arm/disasm-arm.cc
|
| diff --git a/src/arm/disasm-arm.cc b/src/arm/disasm-arm.cc
|
| index cb0a6cb5c70235881ec64fbccab3adbf50cb971a..089d3ec14c1d2c1d3b43c613fded5030f71b133a 100644
|
| --- a/src/arm/disasm-arm.cc
|
| +++ b/src/arm/disasm-arm.cc
|
| @@ -192,7 +192,7 @@ void Decoder::PrintSRegister(int reg) {
|
| Print(VFPRegisters::Name(reg, false));
|
| }
|
|
|
| -// Print the VFP D register name according to the active name converter.
|
| +// Print the VFP D register name according to the active name converter.
|
| void Decoder::PrintDRegister(int reg) {
|
| Print(VFPRegisters::Name(reg, true));
|
| }
|
| @@ -1343,7 +1343,7 @@ void Decoder::DecodeType6CoprocessorIns(Instruction* instr) {
|
| switch (instr->OpcodeValue()) {
|
| case 0x2:
|
| // Load and store double to two GP registers
|
| - if (instr->Bits(7, 4) != 0x1) {
|
| + if (instr->Bits(7, 6) != 0 || instr->Bit(4) != 1) {
|
| Unknown(instr); // Not used by V8.
|
| } else if (instr->HasL()) {
|
| Format(instr, "vmov'cond 'rt, 'rn, 'Dm");
|
| @@ -1352,6 +1352,7 @@ void Decoder::DecodeType6CoprocessorIns(Instruction* instr) {
|
| }
|
| break;
|
| case 0x8:
|
| + case 0xA:
|
| if (instr->HasL()) {
|
| Format(instr, "vldr'cond 'Dd, ['rn - 4*'imm08@00]");
|
| } else {
|
| @@ -1359,6 +1360,7 @@ void Decoder::DecodeType6CoprocessorIns(Instruction* instr) {
|
| }
|
| break;
|
| case 0xC:
|
| + case 0xE:
|
| if (instr->HasL()) {
|
| Format(instr, "vldr'cond 'Dd, ['rn + 4*'imm08@00]");
|
| } else {
|
| @@ -1367,7 +1369,10 @@ void Decoder::DecodeType6CoprocessorIns(Instruction* instr) {
|
| break;
|
| case 0x4:
|
| case 0x5:
|
| - case 0x9: {
|
| + case 0x6:
|
| + case 0x7:
|
| + case 0x9:
|
| + case 0xB: {
|
| bool to_vfp_register = (instr->VLValue() == 0x1);
|
| if (to_vfp_register) {
|
| Format(instr, "vldm'cond'pu 'rn'w, {'Dd-'Dd+}");
|
|
|