[llvm] [GlobalISel] Add a GISelValueTracker printing pass (PR #139687)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue May 13 01:24:14 PDT 2025
================
@@ -875,20 +875,50 @@ unsigned GISelValueTracking::computeNumSignBits(Register R, unsigned Depth) {
return computeNumSignBits(R, DemandedElts, Depth);
}
-void GISelValueTrackingAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {
+void GISelValueTrackingAnalysisLegacy::getAnalysisUsage(
+ AnalysisUsage &AU) const {
AU.setPreservesAll();
MachineFunctionPass::getAnalysisUsage(AU);
}
-bool GISelValueTrackingAnalysis::runOnMachineFunction(MachineFunction &MF) {
+bool GISelValueTrackingAnalysisLegacy::runOnMachineFunction(
+ MachineFunction &MF) {
return false;
}
-GISelValueTracking &GISelValueTrackingAnalysis::get(MachineFunction &MF) {
+GISelValueTracking &GISelValueTrackingAnalysisLegacy::get(MachineFunction &MF) {
if (!Info) {
unsigned MaxDepth =
MF.getTarget().getOptLevel() == CodeGenOptLevel::None ? 2 : 6;
Info = std::make_unique<GISelValueTracking>(MF, MaxDepth);
}
return *Info;
}
+
+AnalysisKey GISelValueTrackingAnalysis::Key;
+
+GISelValueTracking
+GISelValueTrackingAnalysis::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM) {
+ return Result(MF);
+}
+
+PreservedAnalyses
+GISelValueTrackingPrinterPass::run(MachineFunction &MF,
+ MachineFunctionAnalysisManager &MFAM) {
+ auto &VTA = MFAM.getResult<GISelValueTrackingAnalysis>(MF);
+ OS << "name: " << MF.getName() << "\n";
+ for (MachineBasicBlock &BB : MF) {
+ for (MachineInstr &MI : BB) {
+ for (MachineOperand &MO : MI.defs()) {
+ if (!MO.isReg() || MO.getReg().isPhysical())
+ continue;
+ KnownBits Known = VTA.getKnownBits(MO.getReg());
+ unsigned SignedBits = VTA.computeNumSignBits(MO.getReg());
+ OS << "KnownBits:" << Known << " SignBits:" << SignedBits << " for "
+ << MO << "\n";
----------------
arsenm wrote:
```suggestion
<< MO << '\n';
```
https://github.com/llvm/llvm-project/pull/139687
More information about the llvm-commits
mailing list