Currently combineLogicBlendIntoPBLENDV can only match ASHR to detect sign splatting of a bit mask, this patch generalises this to use computeNumSignBits instead.
This is a first step in several things we can do to improve PBLENDV support:
- Better matching of X86ISD::ANDNP patterns.
- Handle floating point cases.
- Better vector and bitcast support in computeNumSignBits.
- Recognise that PBLENDV only uses the sign bit of the mask, we should be able strip away sign splats (ASHR, PCMPGT isNeg tests etc.).
Why VT should be v2i64 of v4i64? Isn't the same transformation profitable for other integer types?