Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(788)

Side by Side Diff: src/arm64/disasm-arm64.cc

Issue 2760963002: [arm64] Use acquire/release memory accesses for atomics (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #if V8_TARGET_ARCH_ARM64 10 #if V8_TARGET_ARCH_ARM64
(...skipping 898 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 #define LSP_OFFSET(A, B, C, D) \ 909 #define LSP_OFFSET(A, B, C, D) \
910 case A##_off: mnemonic = B; form = C ", ['Xns'ILP" D "]"; break; 910 case A##_off: mnemonic = B; form = C ", ['Xns'ILP" D "]"; break;
911 LOAD_STORE_PAIR_LIST(LSP_OFFSET) 911 LOAD_STORE_PAIR_LIST(LSP_OFFSET)
912 #undef LSP_OFFSET 912 #undef LSP_OFFSET
913 } 913 }
914 Format(instr, mnemonic, form); 914 Format(instr, mnemonic, form);
915 } 915 }
916 916
917 void DisassemblingDecoder::VisitLoadStoreAcquireRelease(Instruction *instr) { 917 void DisassemblingDecoder::VisitLoadStoreAcquireRelease(Instruction *instr) {
918 const char *mnemonic = "unimplemented"; 918 const char *mnemonic = "unimplemented";
919 const char *form = "'Wt, ['Xn]"; 919 const char* form = "'Wt, ['Xns]";
920 const char *form_x = "'Xt, ['Xn]"; 920 const char* form_x = "'Xt, ['Xns]";
921 const char *form_stlx = "'Ws, 'Wt, ['Xn]"; 921 const char* form_stlx = "'Ws, 'Wt, ['Xns]";
922 const char *form_stlx_x = "'Ws, 'Xt, ['Xn]"; 922 const char* form_stlx_x = "'Ws, 'Xt, ['Xns]";
923 923
924 switch (instr->Mask(LoadStoreAcquireReleaseMask)) { 924 switch (instr->Mask(LoadStoreAcquireReleaseMask)) {
925 case LDAXR_b: mnemonic = "ldaxrb"; break; 925 case LDAXR_b: mnemonic = "ldaxrb"; break;
926 case STLR_b: mnemonic = "stlrb"; break; 926 case STLR_b: mnemonic = "stlrb"; break;
927 case LDAR_b: mnemonic = "ldarb"; break; 927 case LDAR_b: mnemonic = "ldarb"; break;
928 case LDAXR_h: mnemonic = "ldaxrh"; break; 928 case LDAXR_h: mnemonic = "ldaxrh"; break;
929 case STLR_h: mnemonic = "stlrh"; break; 929 case STLR_h: mnemonic = "stlrh"; break;
930 case LDAR_h: mnemonic = "ldarh"; break; 930 case LDAR_h: mnemonic = "ldarh"; break;
931 case LDAXR_w: mnemonic = "ldaxr"; break; 931 case LDAXR_w: mnemonic = "ldaxr"; break;
932 case STLR_w: mnemonic = "stlr"; break; 932 case STLR_w: mnemonic = "stlr"; break;
933 case LDAR_w: mnemonic = "ldar"; break; 933 case LDAR_w: mnemonic = "ldar"; break;
934 case LDAXR_x: mnemonic = "ldaxr"; form = form_x; break; 934 case LDAXR_x: mnemonic = "ldaxr"; form = form_x; break;
935 case STLR_x: mnemonic = "stlr"; form = form_x; break; 935 case STLR_x: mnemonic = "stlr"; form = form_x; break;
936 case LDAR_x: mnemonic = "ldar"; form = form_x; break; 936 case LDAR_x: mnemonic = "ldar"; form = form_x; break;
937 case STLXR_h: mnemonic = "stlxrh"; form = form_stlx; break; 937 case STLXR_h: mnemonic = "stlxrh"; form = form_stlx; break;
938 case STLXR_b: mnemonic = "stlxrb"; form = form_stlx; break; 938 case STLXR_b: mnemonic = "stlxrb"; form = form_stlx; break;
939 case STLXR_w: mnemonic = "stlxr"; form = form_stlx; break; 939 case STLXR_w: mnemonic = "stlxr"; form = form_stlx; break;
940 case STLXR_x: mnemonic = "stlxr"; form = form_stlx_x; break; 940 case STLXR_x: mnemonic = "stlxr"; form = form_stlx_x; break;
941 default: form = "(LoadStoreAcquireReleaseMask)"; 941 default:
942 form = "(LoadStoreAcquireRelease)";
942 } 943 }
943 Format(instr, mnemonic, form); 944 Format(instr, mnemonic, form);
944 } 945 }
945 946
946 void DisassemblingDecoder::VisitFPCompare(Instruction* instr) { 947 void DisassemblingDecoder::VisitFPCompare(Instruction* instr) {
947 const char *mnemonic = "unimplemented"; 948 const char *mnemonic = "unimplemented";
948 const char *form = "'Fn, 'Fm"; 949 const char *form = "'Fn, 'Fm";
949 const char *form_zero = "'Fn, #0.0"; 950 const char *form_zero = "'Fn, #0.0";
950 951
951 switch (instr->Mask(FPCompareMask)) { 952 switch (instr->Mask(FPCompareMask)) {
(...skipping 888 matching lines...) Expand 10 before | Expand all | Expand 10 after
1840 decoder.AppendVisitor(&disasm); 1841 decoder.AppendVisitor(&disasm);
1841 1842
1842 for (byte* pc = start; pc < end; pc += v8::internal::kInstructionSize) { 1843 for (byte* pc = start; pc < end; pc += v8::internal::kInstructionSize) {
1843 decoder.Decode(reinterpret_cast<v8::internal::Instruction*>(pc)); 1844 decoder.Decode(reinterpret_cast<v8::internal::Instruction*>(pc));
1844 } 1845 }
1845 } 1846 }
1846 1847
1847 } // namespace disasm 1848 } // namespace disasm
1848 1849
1849 #endif // V8_TARGET_ARCH_ARM64 1850 #endif // V8_TARGET_ARCH_ARM64
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698