[Lldb-commits] [lldb] [lldb][AArch64][Linux] Add support for SME only systems (PR #165413)

David Spickett via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 28 08:19:52 PDT 2025


================
@@ -544,9 +597,49 @@ Status NativeRegisterContextLinux_arm64::WriteRegister(
       return WriteAllSVE();
     }
   } else if (IsSVE(reg)) {
-    if (m_sve_state == SVEState::Disabled || m_sve_state == SVEState::Unknown)
+    if (m_sve_state == SVEState::Disabled || m_sve_state == SVEState::Unknown) {
       return Status::FromErrorString("SVE disabled or not supported");
-    else {
+    } else if (m_sve_state == SVEState::StreamingFPSIMD) {
+      // When a target has SVE (in any state), the client is told that it has
+      // real SVE registers and that the FP registers are just subregisters
+      // of those SVE registers. This means that any FP write will be converted
+      // into an SVE write.
+      //
+      // If we get here, it did that, but we are outside of streaming mode
+      // on an SME only system. Meaning there's no way at all to write to actual
+      // SVE registers.
+      //
+      // Instead we will have to extract the bottom 128 bits of the register,
+      // write that via the standard FP route and then return the fake SVE
+      // values as usual.
+      //
+      // We can only do this for Z registers of course, P, FFR, or VG.
----------------
DavidSpickett wrote:

Should be "not P, ...".

https://github.com/llvm/llvm-project/pull/165413


More information about the lldb-commits mailing list