[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