[lldb][AArch64] Remove bool return from UpdateARM64SVERegistersInfos

This always succeeds. While I'm here, document why we check the size
of p0 against the value of VG.

Reviewed By: omjavaid

Differential Revision: https://reviews.llvm.org/D157845
This commit is contained in:
David Spickett
2023-08-10 09:46:36 +01:00
parent a13f036949
commit f6b6234d14
2 changed files with 17 additions and 17 deletions

View File

@@ -772,27 +772,28 @@ bool GDBRemoteRegisterContext::AArch64SVEReconfigure() {
uint32_t vg_reg_num = reg_info->kinds[eRegisterKindLLDB];
uint64_t vg_reg_value = ReadRegisterAsUnsigned(vg_reg_num, fail_value);
if (vg_reg_value != fail_value && vg_reg_value <= 32) {
const RegisterInfo *reg_info = m_reg_info_sp->GetRegisterInfo("p0");
if (!reg_info || vg_reg_value == reg_info->byte_size)
return false;
if (vg_reg_value == fail_value || vg_reg_value > 32)
return false;
if (m_reg_info_sp->UpdateARM64SVERegistersInfos(vg_reg_value)) {
// Make a heap based buffer that is big enough to store all registers
m_reg_data.SetData(std::make_shared<DataBufferHeap>(
m_reg_info_sp->GetRegisterDataByteSize(), 0));
m_reg_data.SetByteOrder(GetByteOrder());
reg_info = m_reg_info_sp->GetRegisterInfo("p0");
// Predicate registers have 1 bit per byte in the vector so their size is
// VL / 8. VG is in units of 8 bytes already, so if the size of p0 == VG
// already, we do not have to reconfigure.
if (!reg_info || vg_reg_value == reg_info->byte_size)
return false;
InvalidateAllRegisters();
m_reg_info_sp->UpdateARM64SVERegistersInfos(vg_reg_value);
// Make a heap based buffer that is big enough to store all registers
m_reg_data.SetData(std::make_shared<DataBufferHeap>(
m_reg_info_sp->GetRegisterDataByteSize(), 0));
m_reg_data.SetByteOrder(GetByteOrder());
return true;
}
}
InvalidateAllRegisters();
return false;
return true;
}
bool GDBRemoteDynamicRegisterInfo::UpdateARM64SVERegistersInfos(uint64_t vg) {
void GDBRemoteDynamicRegisterInfo::UpdateARM64SVERegistersInfos(uint64_t vg) {
// SVE Z register size is vg x 8 bytes.
uint32_t z_reg_byte_size = vg * 8;
@@ -813,5 +814,4 @@ bool GDBRemoteDynamicRegisterInfo::UpdateARM64SVERegistersInfos(uint64_t vg) {
// Re-calculate register offsets
ConfigureOffsets();
return true;
}

View File

@@ -38,7 +38,7 @@ public:
~GDBRemoteDynamicRegisterInfo() override = default;
bool UpdateARM64SVERegistersInfos(uint64_t vg);
void UpdateARM64SVERegistersInfos(uint64_t vg);
};
class GDBRemoteRegisterContext : public RegisterContext {