[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