[llvm] [GlobalISel] Port computeNumSignBits for G_MUL (PR #167311)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 10 19:58:39 PST 2025


================
@@ -2084,6 +2085,41 @@ unsigned GISelValueTracking::computeNumSignBits(Register R,
     FirstAnswer = std::min(Src1NumSignBits, Src2NumSignBits) - 1;
     break;
   }
+  case TargetOpcode::G_MUL: {
+    Register Src1 = MI.getOperand(1).getReg();
+    Register Src2 = MI.getOperand(2).getReg();
+
+    KnownBits Known1 = getKnownBits(Src1, DemandedElts, Depth + 1);
+    KnownBits Known2 = getKnownBits(Src2, DemandedElts, Depth + 1);
+
+    if (Known1.isZero() || Known2.isZero())
+      return TyBits;
----------------
arsenm wrote:

I don't think you need to call getKnownBits at all here. The DAG version doesn't. 0 also shouldn't need a special case 

https://github.com/llvm/llvm-project/pull/167311


More information about the llvm-commits mailing list