| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/disassembler.h" | 5 #include "vm/disassembler.h" |
| 6 | 6 |
| 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. | 7 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
| 8 #if defined(TARGET_ARCH_ARM64) | 8 #if defined(TARGET_ARCH_ARM64) |
| 9 #include "platform/assert.h" | 9 #include "platform/assert.h" |
| 10 | 10 |
| (...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1054 Unknown(instr); | 1054 Unknown(instr); |
| 1055 break; | 1055 break; |
| 1056 } | 1056 } |
| 1057 } | 1057 } |
| 1058 | 1058 |
| 1059 | 1059 |
| 1060 void ARM64Decoder::DecodeMiscDP3Source(Instr* instr) { | 1060 void ARM64Decoder::DecodeMiscDP3Source(Instr* instr) { |
| 1061 if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && | 1061 if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && |
| 1062 (instr->Bit(15) == 0)) { | 1062 (instr->Bit(15) == 0)) { |
| 1063 if (instr->RaField() == R31) { | 1063 if (instr->RaField() == R31) { |
| 1064 Format(instr, "mul'sf, 'rd, 'rn, 'rm"); | 1064 Format(instr, "mul'sf 'rd, 'rn, 'rm"); |
| 1065 } else { | 1065 } else { |
| 1066 Format(instr, "madd'sf 'rd, 'rn, 'rm, 'ra"); | 1066 Format(instr, "madd'sf 'rd, 'rn, 'rm, 'ra"); |
| 1067 } | 1067 } |
| 1068 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && | 1068 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && |
| 1069 (instr->Bit(15) == 1)) { | 1069 (instr->Bit(15) == 1)) { |
| 1070 Format(instr, "msub'sf 'rd, 'rn, 'rm, 'ra"); | 1070 Format(instr, "msub'sf 'rd, 'rn, 'rm, 'ra"); |
| 1071 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 2) && | 1071 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 2) && |
| 1072 (instr->Bit(15) == 0)) { | 1072 (instr->Bit(15) == 0)) { |
| 1073 Format(instr, "smulh 'rd, 'rn, 'rm"); | 1073 Format(instr, "smulh 'rd, 'rn, 'rm"); |
| 1074 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 6) && |
| 1075 (instr->Bit(15) == 0)) { |
| 1076 Format(instr, "umulh 'rd, 'rn, 'rm"); |
| 1074 } else if ((instr->Bits(29, 3) == 4) && (instr->Bits(21, 3) == 5) && | 1077 } else if ((instr->Bits(29, 3) == 4) && (instr->Bits(21, 3) == 5) && |
| 1075 (instr->Bit(15) == 0)) { | 1078 (instr->Bit(15) == 0)) { |
| 1076 Format(instr, "umaddl 'rd, 'rn, 'rm, 'ra"); | 1079 Format(instr, "umaddl 'rd, 'rn, 'rm, 'ra"); |
| 1077 } else { | 1080 } else { |
| 1078 Unknown(instr); | 1081 Unknown(instr); |
| 1079 } | 1082 } |
| 1080 } | 1083 } |
| 1081 | 1084 |
| 1082 | 1085 |
| 1083 void ARM64Decoder::DecodeConditionalSelect(Instr* instr) { | 1086 void ARM64Decoder::DecodeConditionalSelect(Instr* instr) { |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1431 int32_t instruction_bits = Instr::At(pc)->InstructionBits(); | 1434 int32_t instruction_bits = Instr::At(pc)->InstructionBits(); |
| 1432 OS::SNPrint(hex_buffer, hex_size, "%08x", instruction_bits); | 1435 OS::SNPrint(hex_buffer, hex_size, "%08x", instruction_bits); |
| 1433 if (out_instr_size) { | 1436 if (out_instr_size) { |
| 1434 *out_instr_size = Instr::kInstrSize; | 1437 *out_instr_size = Instr::kInstrSize; |
| 1435 } | 1438 } |
| 1436 } | 1439 } |
| 1437 | 1440 |
| 1438 } // namespace dart | 1441 } // namespace dart |
| 1439 | 1442 |
| 1440 #endif // defined TARGET_ARCH_ARM | 1443 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |