[llvm] [GlobalISel] Add G_BITCAST to computeKnownBits (PR #216287)

Xaver Fabian via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 18 09:04:47 PDT 2026


================
@@ -1117,6 +1117,71 @@ void GISelValueTracking::computeKnownBitsImpl(Register R, KnownBits &Known,
     }
     break;
   }
+  case TargetOpcode::G_BITCAST: {
+    if (DstTy.isScalableVector())
+      break;
+    Register SrcReg = MI.getOperand(1).getReg();
+    LLT SrcTy = MRI.getType(SrcReg);
+    unsigned SrcBitWidth = SrcTy.getScalarSizeInBits();
+    unsigned NumElts = DemandedElts.getBitWidth();
+    // Ignore bitcasts from unsupported types.
+    if (!(SrcTy.isInteger() || SrcTy.isIntegerVector() ||
+          SrcTy.isFloatOrFloatVector()))
----------------
XFabian wrote:

Yes, it did exclude pointers. I changed the condition. IT now rejects only ANY_SCALAR/VECTOR_ANY, which removed the integer/float asymmetry as well. I extended the test case bitcast_address_space to showcase a ptr bitcast.

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


More information about the llvm-commits mailing list