aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormmc28a <78873583+mmc28a@users.noreply.github.com>2023-01-17 15:53:00 +0000
committerGitHub <noreply@github.com>2023-01-17 15:53:00 +0000
commit9128d58004e8948586d6663f692f786f6319eadb (patch)
treeb3085314b3d91bc0d41c12ba3b5bdad6823267d9
parent8ab3dd5bebb81d2b0debdb7f00d19c48e5b62c38 (diff)
Fix register trace involving sp and xzr (#59)
Tracing register updates for ldp instructions that use both xzr and sp would not print the updated stack address. This was visible when popping from the stack into xzr, to discard an entry. Fix this and update the trace tests.
-rw-r--r--src/aarch64/decoder-visitor-map-aarch64.h16
-rw-r--r--src/aarch64/simulator-aarch64.cc16
-rw-r--r--test/aarch64/test-trace-aarch64.cc10
-rw-r--r--test/test-trace-reference/log-all29
-rw-r--r--test/test-trace-reference/log-all-colour29
-rw-r--r--test/test-trace-reference/log-branch5
-rw-r--r--test/test-trace-reference/log-branch-colour5
-rw-r--r--test/test-trace-reference/log-cpufeatures8
-rw-r--r--test/test-trace-reference/log-cpufeatures-colour8
-rw-r--r--test/test-trace-reference/log-cpufeatures-custom8
-rw-r--r--test/test-trace-reference/log-disasm8
-rw-r--r--test/test-trace-reference/log-disasm-colour8
-rw-r--r--test/test-trace-reference/log-regs16
-rw-r--r--test/test-trace-reference/log-regs-colour16
-rw-r--r--test/test-trace-reference/log-state16
-rw-r--r--test/test-trace-reference/log-state-colour16
-rw-r--r--test/test-trace-reference/log-write5
-rw-r--r--test/test-trace-reference/log-write-colour5
-rw-r--r--tools/code_coverage.log1
19 files changed, 213 insertions, 12 deletions
diff --git a/src/aarch64/decoder-visitor-map-aarch64.h b/src/aarch64/decoder-visitor-map-aarch64.h
index 58ab3163..8ae438c1 100644
--- a/src/aarch64/decoder-visitor-map-aarch64.h
+++ b/src/aarch64/decoder-visitor-map-aarch64.h
@@ -2643,7 +2643,7 @@
{"bfdot_asimdelem_e"_h, &VISITORCLASS::VisitUnimplemented}, \
{"bfdot_asimdsame2_d"_h, &VISITORCLASS::VisitUnimplemented}, \
{"bfmlal_asimdelem_f"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmlal_asimdsame2_f"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmlal_asimdsame2_f"_h, &VISITORCLASS::VisitUnimplemented}, \
{"bfmmla_asimdsame2_e"_h, &VISITORCLASS::VisitUnimplemented}, \
{"dsb_bon_barriers"_h, &VISITORCLASS::VisitUnimplemented}, \
{"eor3_vvv16_crypto4"_h, &VISITORCLASS::VisitUnimplemented}, \
@@ -2689,13 +2689,13 @@
{"xar_vvv2_crypto3_imm6"_h, &VISITORCLASS::VisitUnimplemented}, \
{"bfcvt_z_p_z_s2bf"_h, &VISITORCLASS::VisitUnimplemented}, \
{"bfcvtnt_z_p_z_s2bf"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfdot_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfdot_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmlalb_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmlalb_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmlalt_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmlalt_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
- {"bfmmla_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, { \
+ {"bfdot_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfdot_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmlalb_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmlalb_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmlalt_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmlalt_z_zzzi"_h, &VISITORCLASS::VisitUnimplemented}, \
+ {"bfmmla_z_zzz"_h, &VISITORCLASS::VisitUnimplemented}, { \
"unallocated"_h, &VISITORCLASS::VisitUnallocated \
}
diff --git a/src/aarch64/simulator-aarch64.cc b/src/aarch64/simulator-aarch64.cc
index 0a7f008d..1830eb4a 100644
--- a/src/aarch64/simulator-aarch64.cc
+++ b/src/aarch64/simulator-aarch64.cc
@@ -1753,7 +1753,9 @@ void Simulator::PrintAccess(int code,
VIXL_ASSERT(GetPrintRegLaneCount(format) == 1);
VIXL_ASSERT((strcmp(op, "->") == 0) || (strcmp(op, "<-") == 0));
if ((format & kPrintRegPartial) == 0) {
- registers_[code].NotifyRegisterLogged();
+ if (code != kZeroRegCode) {
+ registers_[code].NotifyRegisterLogged();
+ }
}
// Scalar-format accesses use a simple format:
// "# {reg}: 0x{value} -> {address}"
@@ -1985,7 +1987,9 @@ void Simulator::PrintRead(int rt_code,
PrintRegisterFormat format,
uintptr_t address) {
VIXL_ASSERT(GetPrintRegLaneCount(format) == 1);
- registers_[rt_code].NotifyRegisterLogged();
+ if (rt_code != kZeroRegCode) {
+ registers_[rt_code].NotifyRegisterLogged();
+ }
PrintAccess(rt_code, format, "<-", address);
}
@@ -2004,7 +2008,9 @@ void Simulator::PrintExtendingRead(int rt_code,
// For sign- and zero-extension, make it clear that the resulting register
// value is different from what is loaded from memory.
VIXL_ASSERT(GetPrintRegLaneCount(format) == 1);
- registers_[rt_code].NotifyRegisterLogged();
+ if (rt_code != kZeroRegCode) {
+ registers_[rt_code].NotifyRegisterLogged();
+ }
PrintRegister(rt_code, format);
PrintPartialAccess(1,
0,
@@ -2030,7 +2036,9 @@ void Simulator::PrintWrite(int rt_code,
// value, only print the relevant part of the value.
format = GetPrintRegPartial(format);
VIXL_ASSERT(GetPrintRegLaneCount(format) == 1);
- registers_[rt_code].NotifyRegisterLogged();
+ if (rt_code != kZeroRegCode) {
+ registers_[rt_code].NotifyRegisterLogged();
+ }
PrintAccess(rt_code, format, "->", address);
}
diff --git a/test/aarch64/test-trace-aarch64.cc b/test/aarch64/test-trace-aarch64.cc
index 27e71d57..1eb70100 100644
--- a/test/aarch64/test-trace-aarch64.cc
+++ b/test/aarch64/test-trace-aarch64.cc
@@ -371,6 +371,16 @@ static void GenerateTestSequenceBase(MacroAssembler* masm) {
__ uxtw(w8, w9);
__ uxtw(x10, x11);
+ // Regression tests.
+ __ stp(x10, xzr, MemOperand(sp, -16, PreIndex));
+ __ ldp(x10, xzr, MemOperand(sp, 16, PostIndex));
+ __ str(xzr, MemOperand(sp, -16, PreIndex));
+ __ ldrsb(xzr, MemOperand(sp, 16, PostIndex));
+ __ str(xzr, MemOperand(sp, -16, PreIndex));
+ __ ldrsh(xzr, MemOperand(sp, 16, PostIndex));
+ __ str(xzr, MemOperand(sp, -16, PreIndex));
+ __ ldrsw(xzr, MemOperand(sp, 16, PostIndex));
+
// Branch tests.
{
Label end;
diff --git a/test/test-trace-reference/log-all b/test/test-trace-reference/log-all
index 9e9904ab..948a13f1 100644
--- a/test/test-trace-reference/log-all
+++ b/test/test-trace-reference/log-all
@@ -1034,6 +1034,35 @@
# w8: 0x00000001
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
# x10: 0x0000000000000000
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+# sp: 0x~~~~~~~~~~~~~~~~
+# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+# xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+# xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
+# xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
# Branch to 0x~~~~~~~~~~~~~~~~.
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
diff --git a/test/test-trace-reference/log-all-colour b/test/test-trace-reference/log-all-colour
index bf5ec20f..31a0790b 100644
--- a/test/test-trace-reference/log-all-colour
+++ b/test/test-trace-reference/log-all-colour
@@ -1034,6 +1034,35 @@
#  w8:  0x00000001
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
#  x10: 0x0000000000000000
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+#  x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+#  xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+#  xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
+#  xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
# Branch to 0x~~~~~~~~~~~~~~~~.
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
diff --git a/test/test-trace-reference/log-branch b/test/test-trace-reference/log-branch
index 0491d505..f1096e6a 100644
--- a/test/test-trace-reference/log-branch
+++ b/test/test-trace-reference/log-branch
@@ -44,6 +44,11 @@
# x3<7:0>: 0xff -> 0x~~~~~~~~~~~~~~~~
# x4<15:0>: 0x0001 -> 0x~~~~~~~~~~~~~~~~
# x5<15:0>: 0x8500 -> 0x~~~~~~~~~~~~~~~~
+# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
# v21<127:0>: 0x000000000000000000000000ffff8007
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~
diff --git a/test/test-trace-reference/log-branch-colour b/test/test-trace-reference/log-branch-colour
index 7caf1a45..8a438448 100644
--- a/test/test-trace-reference/log-branch-colour
+++ b/test/test-trace-reference/log-branch-colour
@@ -44,6 +44,11 @@
#  x3<7:0>:  0xff -> 0x~~~~~~~~~~~~~~~~
#  x4<15:0>:  0x0001 -> 0x~~~~~~~~~~~~~~~~
#  x5<15:0>:  0x8500 -> 0x~~~~~~~~~~~~~~~~
+#  x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
#  v21<127:0>: 0x000000000000000000000000ffff8007
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~
diff --git a/test/test-trace-reference/log-cpufeatures b/test/test-trace-reference/log-cpufeatures
index 795d3580..0b24590f 100644
--- a/test/test-trace-reference/log-cpufeatures
+++ b/test/test-trace-reference/log-cpufeatures
@@ -314,6 +314,14 @@
0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7
0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~)
diff --git a/test/test-trace-reference/log-cpufeatures-colour b/test/test-trace-reference/log-cpufeatures-colour
index 170f34d5..dcbe4d81 100644
--- a/test/test-trace-reference/log-cpufeatures-colour
+++ b/test/test-trace-reference/log-cpufeatures-colour
@@ -314,6 +314,14 @@
0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7
0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~)
diff --git a/test/test-trace-reference/log-cpufeatures-custom b/test/test-trace-reference/log-cpufeatures-custom
index 3975ec9d..e64e6f72 100644
--- a/test/test-trace-reference/log-cpufeatures-custom
+++ b/test/test-trace-reference/log-cpufeatures-custom
@@ -314,6 +314,14 @@
0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7
0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~)
diff --git a/test/test-trace-reference/log-disasm b/test/test-trace-reference/log-disasm
index 53f8f010..7705af15 100644
--- a/test/test-trace-reference/log-disasm
+++ b/test/test-trace-reference/log-disasm
@@ -314,6 +314,14 @@
0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7
0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~)
diff --git a/test/test-trace-reference/log-disasm-colour b/test/test-trace-reference/log-disasm-colour
index 53f8f010..7705af15 100644
--- a/test/test-trace-reference/log-disasm-colour
+++ b/test/test-trace-reference/log-disasm-colour
@@ -314,6 +314,14 @@
0x~~~~~~~~~~~~~~~~ d3403ce6 uxth x6, w7
0x~~~~~~~~~~~~~~~~ 53007d28 lsr w8, w9, #0
0x~~~~~~~~~~~~~~~~ d3407d6a ubfx x10, x11, #0, #32
+0x~~~~~~~~~~~~~~~~ a9bf7fea stp x10, xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ a8c17fea ldp x10, xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 388107ff ldrsb xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ 788107ff ldrsh xzr, [sp], #16
+0x~~~~~~~~~~~~~~~~ f81f0fff str xzr, [sp, #-16]!
+0x~~~~~~~~~~~~~~~~ b88107ff ldrsw xzr, [sp], #16
0x~~~~~~~~~~~~~~~~ 14000001 b #+0x4 (addr 0x~~~~~~~~~~~~~~~~)
0x~~~~~~~~~~~~~~~~ eb030063 subs x3, x3, x3
0x~~~~~~~~~~~~~~~~ 54000061 b.ne #+0xc (addr 0x~~~~~~~~~~~~~~~~)
diff --git a/test/test-trace-reference/log-regs b/test/test-trace-reference/log-regs
index c350f523..10c44027 100644
--- a/test/test-trace-reference/log-regs
+++ b/test/test-trace-reference/log-regs
@@ -393,6 +393,22 @@
# x6: 0x000000000000ffff
# w8: 0x00000001
# x10: 0x0000000000000000
+# sp: 0x~~~~~~~~~~~~~~~~
+# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
# x3: 0x0000000000000000
# w18: 0x00000000
# w29: 0x00000000
diff --git a/test/test-trace-reference/log-regs-colour b/test/test-trace-reference/log-regs-colour
index 55839980..4e877d74 100644
--- a/test/test-trace-reference/log-regs-colour
+++ b/test/test-trace-reference/log-regs-colour
@@ -393,6 +393,22 @@
#  x6: 0x000000000000ffff
#  w8:  0x00000001
#  x10: 0x0000000000000000
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
#  x3: 0x0000000000000000
#  w18:  0x00000000
#  w29:  0x00000000
diff --git a/test/test-trace-reference/log-state b/test/test-trace-reference/log-state
index 0b5069dc..419e4796 100644
--- a/test/test-trace-reference/log-state
+++ b/test/test-trace-reference/log-state
@@ -672,6 +672,22 @@
# x6: 0x000000000000ffff
# w8: 0x00000001
# x10: 0x0000000000000000
+# sp: 0x~~~~~~~~~~~~~~~~
+# x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
+# xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+# sp: 0x~~~~~~~~~~~~~~~~
# NZCV: N:0 Z:1 C:1 V:0
# x3: 0x0000000000000000
# NZCV: N:1 Z:0 C:0 V:0
diff --git a/test/test-trace-reference/log-state-colour b/test/test-trace-reference/log-state-colour
index 3234c7a8..85acd79c 100644
--- a/test/test-trace-reference/log-state-colour
+++ b/test/test-trace-reference/log-state-colour
@@ -672,6 +672,22 @@
#  x6: 0x000000000000ffff
#  w8:  0x00000001
#  x10: 0x0000000000000000
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  x10: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x00 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x0000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
+#  xzr: 0x0000000000000000
+# ╙─ 0x00000000 <- 0x~~~~~~~~~~~~~~~~
+#  sp: 0x~~~~~~~~~~~~~~~~
# NZCV: N:0 Z:1 C:1 V:0
#  x3: 0x0000000000000000
# NZCV: N:1 Z:0 C:0 V:0
diff --git a/test/test-trace-reference/log-write b/test/test-trace-reference/log-write
index 0491d505..f1096e6a 100644
--- a/test/test-trace-reference/log-write
+++ b/test/test-trace-reference/log-write
@@ -44,6 +44,11 @@
# x3<7:0>: 0xff -> 0x~~~~~~~~~~~~~~~~
# x4<15:0>: 0x0001 -> 0x~~~~~~~~~~~~~~~~
# x5<15:0>: 0x8500 -> 0x~~~~~~~~~~~~~~~~
+# x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+# xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
# v21<127:0>: 0x000000000000000000000000ffff8007
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~
diff --git a/test/test-trace-reference/log-write-colour b/test/test-trace-reference/log-write-colour
index 7caf1a45..8a438448 100644
--- a/test/test-trace-reference/log-write-colour
+++ b/test/test-trace-reference/log-write-colour
@@ -44,6 +44,11 @@
#  x3<7:0>:  0xff -> 0x~~~~~~~~~~~~~~~~
#  x4<15:0>:  0x0001 -> 0x~~~~~~~~~~~~~~~~
#  x5<15:0>:  0x8500 -> 0x~~~~~~~~~~~~~~~~
+#  x10<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
+#  xzr<63:0>: 0x0000000000000000 -> 0x~~~~~~~~~~~~~~~~
#  v21<127:0>: 0x000000000000000000000000ffff8007
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─ 0x07 -> 0x~~~~~~~~~~~~~~~~
# ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ║ ╙─── 0x80 -> 0x~~~~~~~~~~~~~~~~
diff --git a/tools/code_coverage.log b/tools/code_coverage.log
index e76eb8d2..d7c551d8 100644
--- a/tools/code_coverage.log
+++ b/tools/code_coverage.log
@@ -14,3 +14,4 @@
1660224011 82.79% 97.51% 95.50%
1663161852 82.79% 97.51% 95.50%
1666104118 82.79% 97.51% 95.50%
+1673432155 82.79% 97.51% 95.51%