[Lldb-commits] [lldb] [lldb][test] Unify and extend test infrastructure for checking CPU features (PR #153914)
Julian Lettner via lldb-commits
lldb-commits at lists.llvm.org
Fri Sep 19 17:47:46 PDT 2025
================
@@ -0,0 +1,58 @@
+"""
+Platform-agnostic helper to query for CPU features.
+"""
+
+import re
+
+
+class CPUFeature:
+ def __init__(self, linux_cpu_info_flag: str, darwin_sysctl_key: str):
+ self.cpu_info_flag = linux_cpu_info_flag
+ self.sysctl_key = darwin_sysctl_key
+
+ def __str__(self):
+ return self.cpu_info_flag
+
+ def is_supported(self, triple, cmd_runner):
+ if re.match(".*-.*-linux", triple):
+ err_msg, res = self._is_supported_linux(cmd_runner)
+ elif re.match(".*-apple-.*", triple):
+ err_msg, res = self._is_supported_darwin(cmd_runner)
+ else:
+ err_msg, res = None, False
+
+ if err_msg:
+ print(f"CPU feature check failed: {err_msg}")
+
+ return res
+
+ def _is_supported_linux(self, cmd_runner):
+ cmd = "cat /proc/cpuinfo"
+ err, retcode, output = cmd_runner(cmd)
+ if err.Fail() or retcode != 0:
+ err_msg = f"cat /proc/cpuinfo failed: {output}"
+ return err_msg, False
+
+ return None, (self.cpu_info_flag in output)
+
+ def _is_supported_darwin(self, cmd_runner):
+ cmd = f"sysctl -n {self.sysctl_key}"
+ err, retcode, output = cmd_runner(cmd)
+ if err.Fail() or retcode != 0:
+ return output, False
+
+ return None, (output.strip() == "1")
+
+
+# List of CPU features
+FPMR = CPUFeature("fpmr", "???")
----------------
yln wrote:
I meant `???` as a placeholder here. Most of the Linux `cpuinfo` flags should have a `sysctl` analog and I wanted to make it obvious for there person who wrote the first, e.g., FPMR Linux-Darwin compatible test that they still have to fill in the `fpmr` sysctl key analog.
I will change this to use `None` as you suggested. It should still be simple enough to figure out why tests aren't running on Darwin.
https://github.com/llvm/llvm-project/pull/153914
More information about the lldb-commits
mailing list