As detailed on Issue #58624, we fail to make use of assume calls when attempting to determine if two values haveNoCommonBitsSet
I've added a basic iterator across the assumption cache, looking for 'no common bits' comparisons - both the basic (lhs & rhs) == 0 and a boolean variant !(lhs & rhs) as comparisons of booleans will get folded.
I had hoped to support vectors as well but it looks like we'd have problems with poison if we try to match through reduction intrinsics: https://alive2.llvm.org/ce/z/Hn3Tnn
If people are happy with this approach, I'll get the test coverage pre-committed to simplify the patch
Shouldn't we be lookup up the assumptions for either LHS or RHS here, rather than all of them?