Skip to content

Commit

Permalink
Fix disassembler fails to mention sign extend for loads on arm64.
Browse files Browse the repository at this point in the history
R=vegorov@google.com

Change-Id: I817c16f220c94827b81510895c9dbf69e2327a27
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153580
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
  • Loading branch information
linzj authored and commit-bot@chromium.org committed Jul 8, 2020
1 parent bfd1582 commit db5cda8
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions runtime/vm/compiler/assembler/disassembler_arm64.cc
Original file line number Diff line number Diff line change
Expand Up @@ -622,15 +622,25 @@ int ARM64Decoder::FormatOption(Instr* instr, const char* format) {
ASSERT(STRING_STARTS_WITH(format, "sz"));
const int sz = instr->SzField();
char const* sz_str;
bool signed_extend_required = instr->Bits(23, 1) == 1;
switch (sz) {
case 0:
sz_str = "b";
if (signed_extend_required)
sz_str = "sb";
else
sz_str = "b";
break;
case 1:
sz_str = "h";
if (signed_extend_required)
sz_str = "sh";
else
sz_str = "h";
break;
case 2:
sz_str = "w";
if (signed_extend_required)
sz_str = "sw";
else
sz_str = "w";
break;
case 3:
sz_str = "x";
Expand Down

0 comments on commit db5cda8

Please sign in to comment.