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

Unified Diff: runtime/vm/disassembler_arm.cc

Issue 12390039: Adds vstm, vldm to ARM simulator, assembler, disassembler (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/constants_arm.h ('k') | runtime/vm/simulator_arm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/disassembler_arm.cc
===================================================================
--- runtime/vm/disassembler_arm.cc (revision 19401)
+++ runtime/vm/disassembler_arm.cc (working copy)
@@ -296,6 +296,19 @@
PrintSRegister(reg);
return 2;
}
+ } else if (format[1] == 'l') {
+ ASSERT(STRING_STARTS_WITH(format, "slist"));
+ int reg_count = instr->Bits(0, 8);
+ int start = instr->Bit(22) | (instr->Bits(12, 4) << 1);
+ Print("{");
+ for (int i = start; i < start + reg_count; i++) {
+ PrintSRegister(i);
+ if (i != start + reg_count - 1) {
+ Print(", ");
+ }
+ }
+ Print("}");
+ return 5;
}
UNREACHABLE();
return -1;
@@ -316,6 +329,19 @@
int reg = instr->DmField();
PrintDRegister(reg);
return 2;
+ } else if (format[1] == 'l') {
+ ASSERT(STRING_STARTS_WITH(format, "dlist"));
+ int reg_count = instr->Bits(0, 8) >> 1;
+ int start = (instr->Bit(22) << 4) | instr->Bits(12, 4);
+ Print("{");
+ for (int i = start; i < start + reg_count; i++) {
+ PrintDRegister(i);
+ if (i != start + reg_count - 1) {
+ Print(", ");
+ }
+ }
+ Print("}");
+ return 5;
}
UNREACHABLE();
return -1;
@@ -920,6 +946,20 @@
}
}
}
+ } else if (instr->IsVFPMultipleLoadStore()) {
+ if (instr->HasL()) { // vldm
+ if (instr->Bit(8)) { // vldmd
+ Format(instr, "vldmd'cond'pu 'rn'w, 'dlist");
+ } else { // vldms
+ Format(instr, "vldms'cond'pu 'rn'w, 'slist");
+ }
+ } else { // vstm
+ if (instr->Bit(8)) { // vstmd
+ Format(instr, "vstmd'cond'pu 'rn'w, 'dlist");
+ } else { // vstms
+ Format(instr, "vstms'cond'pu 'rn'w, 'slist");
+ }
+ }
} else {
Unknown(instr);
}
« no previous file with comments | « runtime/vm/constants_arm.h ('k') | runtime/vm/simulator_arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698