================ @@ -100,6 +100,25 @@ bool ArchitectureAArch64::ReconfigureRegisterInfo(DynamicRegisterInfo ®_info, if (reg_value != fail_value && reg_value <= 32) svg_reg_value = reg_value; } + if (!svg_reg_value) { + const RegisterInfo *darwin_svg_reg_info = reg_info.GetRegisterInfo("svl"); + if (darwin_svg_reg_info) { + uint32_t svg_reg_num = darwin_svg_reg_info->kinds[eRegisterKindLLDB]; + uint64_t reg_value = + reg_context.ReadRegisterAsUnsigned(svg_reg_num, fail_value); + // UpdateARM64SVERegistersInfos and UpdateARM64SMERegistersInfos + // expect the number of 8-byte granules; darwin provides number of + // bytes. + if (reg_value != fail_value && reg_value <= 256) { + svg_reg_value = reg_value / 8; + // Apple hardware only implements Streaming SVE mode, so + // the non-streaming Vector Length is not reported by the + // kernel. Set both svg and vg to this svl value. + if (!vg_reg_value) + vg_reg_value = reg_value / 8; ---------------- JDevlieghere wrote:
Nit: lots of magic values here but in all fairness that's consistent with the surrounding code. The comment covers the 8 byte granule so I'm not too concerned, though some constants might make this easier to read. https://github.com/llvm/llvm-project/pull/119171 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits