@@ -4864,17 +4864,20 @@ static SDValue getBitwiseToSrcModifierOp(SDValue N,
4864
4864
4865
4865
switch (Opc) {
4866
4866
case ISD::XOR:
4867
- if (Mask == 0x80000000u || Mask == 0x8000000000000000u )
4867
+ if ((Mask == 0x80000000u && VT.getFixedSizeInBits () == 32 ) ||
4868
+ (Mask == 0x8000000000000000u && VT.getFixedSizeInBits () == 64 ))
4868
4869
return DAG.getNode (ISD::FNEG, SL, FVT, BC);
4869
4870
break ;
4870
4871
case ISD::OR:
4871
- if (Mask == 0x80000000u || Mask == 0x8000000000000000u ) {
4872
- SDValue Neg = DAG.getNode (ISD::FNEG, SDLoc (N), FVT, BC);
4873
- return DAG.getNode (ISD::FABS, SL, FVT, Neg);
4872
+ if ((Mask == 0x80000000u && VT.getFixedSizeInBits () == 32 ) ||
4873
+ (Mask == 0x8000000000000000u && VT.getFixedSizeInBits () == 64 )) {
4874
+ SDValue Abs = DAG.getNode (ISD::ABS, SDLoc (N), FVT, BC);
4875
+ return DAG.getNode (ISD::FNEG, SL, FVT, Abs);
4874
4876
}
4875
4877
break ;
4876
4878
case ISD::AND:
4877
- if (Mask == 0x7fffffffu || Mask == 0x7fffffffffffffffu )
4879
+ if ((Mask == 0x7fffffffu && VT.getFixedSizeInBits () == 32 ) ||
4880
+ (Mask == 0x7fffffffffffffffu && VT.getFixedSizeInBits () == 64 ))
4878
4881
return DAG.getNode (ISD::FABS, SL, FVT, BC);
4879
4882
break ;
4880
4883
default :
0 commit comments