[InstSimplify] fold extracting from std::pair (2/2)


[InstSimplify] fold extracting from std::pair (2/2)

This is the second patch of the series which intends to enable jump threading for an inlined method whose return type is std::pair<int, bool> or std::pair<bool, int>.
The first patch is https://reviews.llvm.org/rL338485.

This patch handles code sequences that merges two values using shl and or, then extracts one value using and.

Differential Revision: https://reviews.llvm.org/D49981