| OLD | NEW |
| 1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <assert.h> | 5 #include <assert.h> |
| 6 #include <stdarg.h> | 6 #include <stdarg.h> |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include "src/v8.h" | 10 #include "src/v8.h" |
| (...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 switch (instr->Mask(LoadStorePairOffsetMask)) { | 910 switch (instr->Mask(LoadStorePairOffsetMask)) { |
| 911 #define LSP_OFFSET(A, B, C, D) \ | 911 #define LSP_OFFSET(A, B, C, D) \ |
| 912 case A##_off: mnemonic = B; form = C ", ['Xns'ILP" D "]"; break; | 912 case A##_off: mnemonic = B; form = C ", ['Xns'ILP" D "]"; break; |
| 913 LOAD_STORE_PAIR_LIST(LSP_OFFSET) | 913 LOAD_STORE_PAIR_LIST(LSP_OFFSET) |
| 914 #undef LSP_OFFSET | 914 #undef LSP_OFFSET |
| 915 } | 915 } |
| 916 Format(instr, mnemonic, form); | 916 Format(instr, mnemonic, form); |
| 917 } | 917 } |
| 918 | 918 |
| 919 | 919 |
| 920 void Disassembler::VisitLoadStorePairNonTemporal(Instruction* instr) { | |
| 921 const char *mnemonic = "unimplemented"; | |
| 922 const char *form; | |
| 923 | |
| 924 switch (instr->Mask(LoadStorePairNonTemporalMask)) { | |
| 925 case STNP_w: mnemonic = "stnp"; form = "'Wt, 'Wt2, ['Xns'ILP4]"; break; | |
| 926 case LDNP_w: mnemonic = "ldnp"; form = "'Wt, 'Wt2, ['Xns'ILP4]"; break; | |
| 927 case STNP_x: mnemonic = "stnp"; form = "'Xt, 'Xt2, ['Xns'ILP8]"; break; | |
| 928 case LDNP_x: mnemonic = "ldnp"; form = "'Xt, 'Xt2, ['Xns'ILP8]"; break; | |
| 929 case STNP_s: mnemonic = "stnp"; form = "'St, 'St2, ['Xns'ILP4]"; break; | |
| 930 case LDNP_s: mnemonic = "ldnp"; form = "'St, 'St2, ['Xns'ILP4]"; break; | |
| 931 case STNP_d: mnemonic = "stnp"; form = "'Dt, 'Dt2, ['Xns'ILP8]"; break; | |
| 932 case LDNP_d: mnemonic = "ldnp"; form = "'Dt, 'Dt2, ['Xns'ILP8]"; break; | |
| 933 default: form = "(LoadStorePairNonTemporal)"; | |
| 934 } | |
| 935 Format(instr, mnemonic, form); | |
| 936 } | |
| 937 | |
| 938 | |
| 939 void Disassembler::VisitFPCompare(Instruction* instr) { | 920 void Disassembler::VisitFPCompare(Instruction* instr) { |
| 940 const char *mnemonic = "unimplemented"; | 921 const char *mnemonic = "unimplemented"; |
| 941 const char *form = "'Fn, 'Fm"; | 922 const char *form = "'Fn, 'Fm"; |
| 942 const char *form_zero = "'Fn, #0.0"; | 923 const char *form_zero = "'Fn, #0.0"; |
| 943 | 924 |
| 944 switch (instr->Mask(FPCompareMask)) { | 925 switch (instr->Mask(FPCompareMask)) { |
| 945 case FCMP_s_zero: | 926 case FCMP_s_zero: |
| 946 case FCMP_d_zero: form = form_zero; // Fall through. | 927 case FCMP_d_zero: form = form_zero; // Fall through. |
| 947 case FCMP_s: | 928 case FCMP_s: |
| 948 case FCMP_d: mnemonic = "fcmp"; break; | 929 case FCMP_d: mnemonic = "fcmp"; break; |
| (...skipping 878 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1827 decoder.AppendVisitor(&disasm); | 1808 decoder.AppendVisitor(&disasm); |
| 1828 | 1809 |
| 1829 for (byte* pc = start; pc < end; pc += v8::internal::kInstructionSize) { | 1810 for (byte* pc = start; pc < end; pc += v8::internal::kInstructionSize) { |
| 1830 decoder.Decode(reinterpret_cast<v8::internal::Instruction*>(pc)); | 1811 decoder.Decode(reinterpret_cast<v8::internal::Instruction*>(pc)); |
| 1831 } | 1812 } |
| 1832 } | 1813 } |
| 1833 | 1814 |
| 1834 } // namespace disasm | 1815 } // namespace disasm |
| 1835 | 1816 |
| 1836 #endif // V8_TARGET_ARCH_ARM64 | 1817 #endif // V8_TARGET_ARCH_ARM64 |
| OLD | NEW |