(a & (-b)) & b is often lowered as:
%sub = sub i32 0, %b %and0 = and i32 %sub, %a %and1 = and i32 %and0, %b
Which won't get detected by the BLSI pattern as b & -b are never in
the same SDNode.
This patch will do a small search through associative operators and try
and place BMI patterns in the same node so they will hit the pattern.