@@ -4876,17 +4876,20 @@ static SDValue getBitwiseToSrcModifierOp(SDValue N,
4876
4876
4877
4877
switch (Opc) {
4878
4878
case ISD::XOR:
4879
- if (Mask == 0x80000000u || Mask == 0x8000000000000000u )
4879
+ if ((Mask == 0x80000000u && VT.getFixedSizeInBits () == 32 ) ||
4880
+ (Mask == 0x8000000000000000u && VT.getFixedSizeInBits () == 64 ))
4880
4881
return DAG.getNode (ISD::FNEG, SL, FVT, BC);
4881
4882
break ;
4882
4883
case ISD::OR:
4883
- if (Mask == 0x80000000u || Mask == 0x8000000000000000u ) {
4884
- SDValue Neg = DAG.getNode (ISD::FNEG, SDLoc (N), FVT, BC);
4885
- return DAG.getNode (ISD::FABS, SL, FVT, Neg);
4884
+ if ((Mask == 0x80000000u && VT.getFixedSizeInBits () == 32 ) ||
4885
+ (Mask == 0x8000000000000000u && VT.getFixedSizeInBits () == 64 )) {
4886
+ SDValue Abs = DAG.getNode (ISD::ABS, SDLoc (N), FVT, BC);
4887
+ return DAG.getNode (ISD::FNEG, SL, FVT, Abs);
4886
4888
}
4887
4889
break ;
4888
4890
case ISD::AND:
4889
- if (Mask == 0x7fffffffu || Mask == 0x7fffffffffffffffu )
4891
+ if ((Mask == 0x7fffffffu && VT.getFixedSizeInBits () == 32 ) ||
4892
+ (Mask == 0x7fffffffffffffffu && VT.getFixedSizeInBits () == 64 ))
4890
4893
return DAG.getNode (ISD::FABS, SL, FVT, BC);
4891
4894
break ;
4892
4895
default :
0 commit comments