Index: runtime/vm/disassembler_arm64.cc |
=================================================================== |
--- runtime/vm/disassembler_arm64.cc (revision 35439) |
+++ runtime/vm/disassembler_arm64.cc (working copy) |
@@ -126,7 +126,11 @@ |
// Print the condition guarding the instruction. |
void ARM64Decoder::PrintCondition(Instr* instr) { |
- Print(cond_names[instr->ConditionField()]); |
+ if (instr->IsConditionalSelectOp()) { |
+ Print(cond_names[instr->SelectConditionField()]); |
+ } else { |
+ Print(cond_names[instr->ConditionField()]); |
+ } |
} |
@@ -844,6 +848,15 @@ |
} |
+void ARM64Decoder::DecodeConditionalSelect(Instr* instr) { |
+ if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 0)) { |
+ Format(instr, "mov'sf'cond 'rd, 'rn, 'rm"); |
+ } else { |
+ Unknown(instr); |
+ } |
+} |
+ |
+ |
void ARM64Decoder::DecodeDPRegister(Instr* instr) { |
if (instr->IsAddSubShiftExtOp()) { |
DecodeAddSubShiftExt(instr); |
@@ -853,6 +866,8 @@ |
DecodeMiscDP2Source(instr); |
} else if (instr->IsMiscDP3SourceOp()) { |
DecodeMiscDP3Source(instr); |
+ } else if (instr->IsConditionalSelectOp()) { |
+ DecodeConditionalSelect(instr); |
} else { |
Unknown(instr); |
} |