Index: src/arm/disasm-arm.cc |
diff --git a/src/arm/disasm-arm.cc b/src/arm/disasm-arm.cc |
index a3775b5fca48ba257bcbb9aa1d66f2ca0cf6f117..d4bd81ce464c9c5a7576f6a18f24a94e02cc41ba 100644 |
--- a/src/arm/disasm-arm.cc |
+++ b/src/arm/disasm-arm.cc |
@@ -502,13 +502,16 @@ int Decoder::FormatOption(Instruction* instr, const char* format) { |
ASSERT(STRING_STARTS_WITH(format, "memop")); |
if (instr->HasL()) { |
Print("ldr"); |
- } else if ((instr->Bits(27, 25) == 0) && (instr->Bit(20) == 0)) { |
- if (instr->Bits(7, 4) == 0xf) { |
- Print("strd"); |
- } else { |
- Print("ldrd"); |
- } |
} else { |
+ if ((instr->Bits(27, 25) == 0) && (instr->Bit(20) == 0) && |
+ (instr->Bits(7, 6) == 3) && (instr->Bit(4) == 1)) { |
+ if (instr->Bit(5) == 1) { |
+ Print("strd"); |
+ } else { |
+ Print("ldrd"); |
+ } |
+ return 5; |
+ } |
Print("str"); |
} |
return 5; |
@@ -1086,10 +1089,10 @@ void Decoder::DecodeTypeVFP(Instruction* instr) { |
} |
} else if ((instr->Opc2Value() == 0x0) && (instr->Opc3Value() == 0x3)) { |
// vabs |
- Format(instr, "vabs'cond 'Dd, 'Dm"); |
+ Format(instr, "vabs.f64'cond 'Dd, 'Dm"); |
} else if ((instr->Opc2Value() == 0x1) && (instr->Opc3Value() == 0x1)) { |
// vneg |
- Format(instr, "vneg'cond 'Dd, 'Dm"); |
+ Format(instr, "vneg.f64'cond 'Dd, 'Dm"); |
} else if ((instr->Opc2Value() == 0x7) && (instr->Opc3Value() == 0x3)) { |
DecodeVCVTBetweenDoubleAndSingle(instr); |
} else if ((instr->Opc2Value() == 0x8) && (instr->Opc3Value() & 0x1)) { |