Skip to content

Commit bb9dced

Browse files
[lldb][AArch64][Linux] Rename Is<ext>Enabled to Is<ext>Present (#70303)
For most register sets, if it was enabled this meant you could use it, it was present in the process. There was no present but turned off state. So "enabled" made sense. Then ZA came along (and soon to be ZT0) where ZA can be present in the hardware when you have SME, but ZA itself can be made inactive. This means that "IsZAEnabled()" doesn't mean is it active, it means do you have SME. Which is very confusing when we actually want to know if ZA is active. So instead say "IsZAPresent", to make these checks more specific. For things that can't be made inactive, present will imply "active" as they're never inactive.
1 parent 8bc4462 commit bb9dced

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

lldb/source/Plugins/Process/Linux/NativeRegisterContextLinux_arm64.cpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -166,10 +166,10 @@ NativeRegisterContextLinux_arm64::NativeRegisterContextLinux_arm64(
166166
m_tls_is_valid = false;
167167

168168
// SME adds the tpidr2 register
169-
m_tls_size = GetRegisterInfo().IsSSVEEnabled() ? sizeof(m_tls_regs)
169+
m_tls_size = GetRegisterInfo().IsSSVEPresent() ? sizeof(m_tls_regs)
170170
: sizeof(m_tls_regs.tpidr_reg);
171171

172-
if (GetRegisterInfo().IsSVEEnabled() || GetRegisterInfo().IsSSVEEnabled())
172+
if (GetRegisterInfo().IsSVEPresent() || GetRegisterInfo().IsSSVEPresent())
173173
m_sve_state = SVEState::Unknown;
174174
else
175175
m_sve_state = SVEState::Disabled;
@@ -609,8 +609,7 @@ NativeRegisterContextLinux_arm64::CacheAllRegisters(uint32_t &cached_size) {
609609
if (error.Fail())
610610
return error;
611611

612-
// Here this means, does the system have ZA, not whether it is active.
613-
if (GetRegisterInfo().IsZAEnabled()) {
612+
if (GetRegisterInfo().IsZAPresent()) {
614613
error = ReadZAHeader();
615614
if (error.Fail())
616615
return error;
@@ -628,7 +627,7 @@ NativeRegisterContextLinux_arm64::CacheAllRegisters(uint32_t &cached_size) {
628627
}
629628

630629
// If SVE is enabled we need not copy FPR separately.
631-
if (GetRegisterInfo().IsSVEEnabled() || GetRegisterInfo().IsSSVEEnabled()) {
630+
if (GetRegisterInfo().IsSVEPresent() || GetRegisterInfo().IsSSVEPresent()) {
632631
// Store mode and register data.
633632
cached_size +=
634633
sizeof(RegisterSetType) + sizeof(m_sve_state) + GetSVEBufferSize();
@@ -640,7 +639,7 @@ NativeRegisterContextLinux_arm64::CacheAllRegisters(uint32_t &cached_size) {
640639
if (error.Fail())
641640
return error;
642641

643-
if (GetRegisterInfo().IsMTEEnabled()) {
642+
if (GetRegisterInfo().IsMTEPresent()) {
644643
cached_size += sizeof(RegisterSetType) + GetMTEControlSize();
645644
error = ReadMTEControl();
646645
if (error.Fail())
@@ -708,15 +707,15 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues(
708707
// constants and the functions vec_set_vector_length, sve_set_common and
709708
// za_set in the Linux Kernel.
710709

711-
if ((m_sve_state != SVEState::Streaming) && GetRegisterInfo().IsZAEnabled()) {
710+
if ((m_sve_state != SVEState::Streaming) && GetRegisterInfo().IsZAPresent()) {
712711
// Use the header size not the buffer size, as we may be using the buffer
713712
// for fake data, which we do not want to write out.
714713
assert(m_za_header.size <= GetZABufferSize());
715714
dst = AddSavedRegisters(dst, RegisterSetType::SME, GetZABuffer(),
716715
m_za_header.size);
717716
}
718717

719-
if (GetRegisterInfo().IsSVEEnabled() || GetRegisterInfo().IsSSVEEnabled()) {
718+
if (GetRegisterInfo().IsSVEPresent() || GetRegisterInfo().IsSSVEPresent()) {
720719
dst = AddRegisterSetType(dst, RegisterSetType::SVE);
721720
*(reinterpret_cast<SVEState *>(dst)) = m_sve_state;
722721
dst += sizeof(m_sve_state);
@@ -726,13 +725,13 @@ Status NativeRegisterContextLinux_arm64::ReadAllRegisterValues(
726725
GetFPRSize());
727726
}
728727

729-
if ((m_sve_state == SVEState::Streaming) && GetRegisterInfo().IsZAEnabled()) {
728+
if ((m_sve_state == SVEState::Streaming) && GetRegisterInfo().IsZAPresent()) {
730729
assert(m_za_header.size <= GetZABufferSize());
731730
dst = AddSavedRegisters(dst, RegisterSetType::SME, GetZABuffer(),
732731
m_za_header.size);
733732
}
734733

735-
if (GetRegisterInfo().IsMTEEnabled()) {
734+
if (GetRegisterInfo().IsMTEPresent()) {
736735
dst = AddSavedRegisters(dst, RegisterSetType::MTE, GetMTEControl(),
737736
GetMTEControlSize());
738737
}
@@ -1411,7 +1410,7 @@ std::vector<uint32_t> NativeRegisterContextLinux_arm64::GetExpeditedRegisters(
14111410
expedited_reg_nums.push_back(GetRegisterInfo().GetRegNumSVEVG());
14121411
// SME, streaming vector length. This is used by the ZA register which is
14131412
// present even when streaming mode is not enabled.
1414-
if (GetRegisterInfo().IsSSVEEnabled())
1413+
if (GetRegisterInfo().IsSSVEPresent())
14151414
expedited_reg_nums.push_back(GetRegisterInfo().GetRegNumSMESVG());
14161415

14171416
return expedited_reg_nums;

lldb/source/Plugins/Process/Utility/RegisterInfoPOSIX_arm64.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -120,12 +120,12 @@ class RegisterInfoPOSIX_arm64
120120
return false;
121121
}
122122

123-
bool IsSVEEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskSVE); }
124-
bool IsSSVEEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskSSVE); }
125-
bool IsZAEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskZA); }
126-
bool IsPAuthEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskPAuth); }
127-
bool IsMTEEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskMTE); }
128-
bool IsTLSEnabled() const { return m_opt_regsets.AnySet(eRegsetMaskTLS); }
123+
bool IsSVEPresent() const { return m_opt_regsets.AnySet(eRegsetMaskSVE); }
124+
bool IsSSVEPresent() const { return m_opt_regsets.AnySet(eRegsetMaskSSVE); }
125+
bool IsZAPresent() const { return m_opt_regsets.AnySet(eRegsetMaskZA); }
126+
bool IsPAuthPresent() const { return m_opt_regsets.AnySet(eRegsetMaskPAuth); }
127+
bool IsMTEPresent() const { return m_opt_regsets.AnySet(eRegsetMaskMTE); }
128+
bool IsTLSPresent() const { return m_opt_regsets.AnySet(eRegsetMaskTLS); }
129129

130130
bool IsSVEReg(unsigned reg) const;
131131
bool IsSVEZReg(unsigned reg) const;

lldb/source/Plugins/Process/elf-core/RegisterContextPOSIXCore_arm64.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,27 +75,27 @@ RegisterContextCorePOSIX_arm64::RegisterContextCorePOSIX_arm64(
7575
m_register_info_up->GetTargetArchitecture().GetTriple();
7676
m_fpr_data = getRegset(notes, target_triple, FPR_Desc);
7777

78-
if (m_register_info_up->IsSSVEEnabled()) {
78+
if (m_register_info_up->IsSSVEPresent()) {
7979
m_sve_data = getRegset(notes, target_triple, AARCH64_SSVE_Desc);
8080
lldb::offset_t flags_offset = 12;
8181
uint16_t flags = m_sve_data.GetU32(&flags_offset);
8282
if ((flags & sve::ptrace_regs_mask) == sve::ptrace_regs_sve)
8383
m_sve_state = SVEState::Streaming;
8484
}
8585

86-
if (m_sve_state != SVEState::Streaming && m_register_info_up->IsSVEEnabled())
86+
if (m_sve_state != SVEState::Streaming && m_register_info_up->IsSVEPresent())
8787
m_sve_data = getRegset(notes, target_triple, AARCH64_SVE_Desc);
8888

89-
if (m_register_info_up->IsPAuthEnabled())
89+
if (m_register_info_up->IsPAuthPresent())
9090
m_pac_data = getRegset(notes, target_triple, AARCH64_PAC_Desc);
9191

92-
if (m_register_info_up->IsTLSEnabled())
92+
if (m_register_info_up->IsTLSPresent())
9393
m_tls_data = getRegset(notes, target_triple, AARCH64_TLS_Desc);
9494

95-
if (m_register_info_up->IsZAEnabled())
95+
if (m_register_info_up->IsZAPresent())
9696
m_za_data = getRegset(notes, target_triple, AARCH64_ZA_Desc);
9797

98-
if (m_register_info_up->IsMTEEnabled())
98+
if (m_register_info_up->IsMTEPresent())
9999
m_mte_data = getRegset(notes, target_triple, AARCH64_MTE_Desc);
100100

101101
ConfigureRegisterContext();

0 commit comments

Comments
 (0)