@@ -40906,6 +40906,28 @@ bool X86TargetLowering::SimplifyDemandedBitsForTargetNode(
4090640906 Known.One.setHighBits(ShAmt);
4090740907 return false;
4090840908 }
40909+ case X86ISD::BLENDV: {
40910+ SDValue Sel = Op.getOperand(0);
40911+ SDValue LHS = Op.getOperand(1);
40912+ SDValue RHS = Op.getOperand(2);
40913+
40914+ APInt SignMask = APInt::getSignMask(BitWidth);
40915+ SDValue NewSel = SimplifyMultipleUseDemandedBits(
40916+ Sel, SignMask, OriginalDemandedElts, TLO.DAG, Depth + 1);
40917+ SDValue NewLHS = SimplifyMultipleUseDemandedBits(
40918+ LHS, OriginalDemandedBits, OriginalDemandedElts, TLO.DAG, Depth + 1);
40919+ SDValue NewRHS = SimplifyMultipleUseDemandedBits(
40920+ RHS, OriginalDemandedBits, OriginalDemandedElts, TLO.DAG, Depth + 1);
40921+
40922+ if (NewSel || NewLHS || NewRHS) {
40923+ NewSel = NewSel ? NewSel : Sel;
40924+ NewLHS = NewLHS ? NewLHS : LHS;
40925+ NewRHS = NewRHS ? NewRHS : RHS;
40926+ return TLO.CombineTo(Op, TLO.DAG.getNode(X86ISD::BLENDV, SDLoc(Op), VT,
40927+ NewSel, NewLHS, NewRHS));
40928+ }
40929+ break;
40930+ }
4090940931 case X86ISD::PEXTRB:
4091040932 case X86ISD::PEXTRW: {
4091140933 SDValue Vec = Op.getOperand(0);
0 commit comments