Skip to content

Commit 7a2580a

Browse files
committed
Fix encoding for p regs. Fix regression test.
1 parent b244f02 commit 7a2580a

File tree

4 files changed

+5
-5
lines changed

4 files changed

+5
-5
lines changed

llvm/lib/MC/MCWin64EH.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ static void ARM64EmitUnwindCode(MCStreamer &streamer,
669669
assert(inst.Offset < 256);
670670
b = 0xE7;
671671
streamer.emitInt8(b);
672-
reg = inst.Register - 4;
672+
reg = inst.Register;
673673
b = ((inst.Offset & 0xC0) >> 1) | 0x10 | reg;
674674
streamer.emitInt8(b);
675675
b = 0xC0 | (inst.Offset & 0x3F);

llvm/test/MC/AArch64/seh.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
// CHECK-NEXT: ExceptionData {
5757
// CHECK-NEXT: FunctionLength: 172
5858
// CHECK: Prologue [
59-
// CHECK-NEXT: 0xe712c3 ; str p6, [sp, #3, mul vl]
59+
// CHECK-NEXT: 0xe716c3 ; str p6, [sp, #3, mul vl]
6060
// CHECK-NEXT: 0xe703c5 ; str z11, [sp, #5, mul vl]
6161
// CHECK-NEXT: 0xdf05 ; addvl sp, #-5
6262
// CHECK-NEXT: 0xe76983 ; stp q9, q10, [sp, #-64]!

llvm/test/tools/llvm-readobj/COFF/arm64-win-error1.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
// RUN: | llvm-readobj --unwind - | FileCheck %s
77

88
// CHECK: Prologue [
9-
// CHECK: 0xdf ; Bad opcode!
9+
// CHECK: 0xef ; Bad opcode!
1010
// CHECK: 0xff ; Bad opcode!
1111
// CHECK: 0xd600 ; stp x19, lr, [sp, #0]
1212
// CHECK: 0x01 ; sub sp, #16
@@ -49,6 +49,6 @@
4949
.long 0x10800012
5050
.long 0x8
5151
.long 0xe
52-
.long 0x00d6ffdf
52+
.long 0x00d6ffef
5353
.long 0xe3e3e401
5454

llvm/tools/llvm-readobj/ARMWinEHPrinter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -991,7 +991,7 @@ bool Decoder::opcode_save_zreg(const uint8_t *OC, unsigned &Offset,
991991

992992
bool Decoder::opcode_save_preg(const uint8_t *OC, unsigned &Offset,
993993
unsigned Length, bool Prologue) {
994-
uint32_t Reg = (OC[Offset + 1] & 0x0F) + 4;
994+
uint32_t Reg = (OC[Offset + 1] & 0x0F);
995995
uint32_t Off = ((OC[Offset + 1] & 0x60) << 1) | (OC[Offset + 2] & 0x3F);
996996
SW.startLine() << format(
997997
"0x%02x%02x%02x ; %s p%u, [sp, #%u, mul vl]\n", OC[Offset],

0 commit comments

Comments
 (0)