Skip to content

Commit db5cda8

Browse files
linzjcommit-bot@chromium.org
linzj
authored andcommitted
Fix disassembler fails to mention sign extend for loads on arm64.
[email protected] Change-Id: I817c16f220c94827b81510895c9dbf69e2327a27 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153580 Reviewed-by: Martin Kustermann <[email protected]> Commit-Queue: Martin Kustermann <[email protected]>
1 parent bfd1582 commit db5cda8

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

runtime/vm/compiler/assembler/disassembler_arm64.cc

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -622,15 +622,25 @@ int ARM64Decoder::FormatOption(Instr* instr, const char* format) {
622622
ASSERT(STRING_STARTS_WITH(format, "sz"));
623623
const int sz = instr->SzField();
624624
char const* sz_str;
625+
bool signed_extend_required = instr->Bits(23, 1) == 1;
625626
switch (sz) {
626627
case 0:
627-
sz_str = "b";
628+
if (signed_extend_required)
629+
sz_str = "sb";
630+
else
631+
sz_str = "b";
628632
break;
629633
case 1:
630-
sz_str = "h";
634+
if (signed_extend_required)
635+
sz_str = "sh";
636+
else
637+
sz_str = "h";
631638
break;
632639
case 2:
633-
sz_str = "w";
640+
if (signed_extend_required)
641+
sz_str = "sw";
642+
else
643+
sz_str = "w";
634644
break;
635645
case 3:
636646
sz_str = "x";

0 commit comments

Comments
 (0)