| 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 1051 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1062 Format(instr, "mul'sf, 'rd, 'rn, 'rm"); | 1062 Format(instr, "mul'sf, 'rd, 'rn, 'rm"); |
| 1063 } else { | 1063 } else { |
| 1064 Format(instr, "madd'sf 'rd, 'rn, 'rm, 'ra"); | 1064 Format(instr, "madd'sf 'rd, 'rn, 'rm, 'ra"); |
| 1065 } | 1065 } |
| 1066 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && | 1066 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 0) && |
| 1067 (instr->Bit(15) == 1)) { | 1067 (instr->Bit(15) == 1)) { |
| 1068 Format(instr, "msub'sf 'rd, 'rn, 'rm, 'ra"); | 1068 Format(instr, "msub'sf 'rd, 'rn, 'rm, 'ra"); |
| 1069 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 2) && | 1069 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(21, 3) == 2) && |
| 1070 (instr->Bit(15) == 0)) { | 1070 (instr->Bit(15) == 0)) { |
| 1071 Format(instr, "smulh 'rd, 'rn, 'rm"); | 1071 Format(instr, "smulh 'rd, 'rn, 'rm"); |
| 1072 } else if ((instr->Bits(29, 3) == 4) && (instr->Bits(21, 3) == 5) && |
| 1073 (instr->Bit(15) == 0)) { |
| 1074 Format(instr, "umaddl 'rd, 'rn, 'rm, 'ra"); |
| 1072 } else { | 1075 } else { |
| 1073 Unknown(instr); | 1076 Unknown(instr); |
| 1074 } | 1077 } |
| 1075 } | 1078 } |
| 1076 | 1079 |
| 1077 | 1080 |
| 1078 void ARM64Decoder::DecodeConditionalSelect(Instr* instr) { | 1081 void ARM64Decoder::DecodeConditionalSelect(Instr* instr) { |
| 1079 if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 0)) { | 1082 if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 0)) { |
| 1080 Format(instr, "mov'sf'cond 'rd, 'rn, 'rm"); | 1083 Format(instr, "mov'sf'cond 'rd, 'rn, 'rm"); |
| 1081 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 1)) { | 1084 } else if ((instr->Bits(29, 2) == 0) && (instr->Bits(10, 2) == 1)) { |
| (...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1459 human_buffer, | 1462 human_buffer, |
| 1460 sizeof(human_buffer), | 1463 sizeof(human_buffer), |
| 1461 pc); | 1464 pc); |
| 1462 pc += instruction_length; | 1465 pc += instruction_length; |
| 1463 } | 1466 } |
| 1464 } | 1467 } |
| 1465 | 1468 |
| 1466 } // namespace dart | 1469 } // namespace dart |
| 1467 | 1470 |
| 1468 #endif // defined TARGET_ARCH_ARM | 1471 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |