@@ -4865,22 +4865,24 @@ static SDValue getBitwiseToSrcModifierOp(SDValue N,
4865
4865
EVT VT = RHS.getValueType ();
4866
4866
EVT FVT = getFloatVT (VT);
4867
4867
SDLoc SL = SDLoc (N);
4868
- SDValue BC = DAG.getNode (ISD::BITCAST, SL, FVT, LHS);
4869
4868
4870
4869
switch (Opc) {
4871
4870
case ISD::XOR:
4872
4871
if (CRHS->getAPIntValue ().isSignMask ())
4873
- return DAG.getNode (ISD::FNEG, SL, FVT, BC);
4872
+ return DAG.getNode (ISD::FNEG, SL, FVT,
4873
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4874
4874
break ;
4875
4875
case ISD::OR:
4876
4876
if (CRHS->getAPIntValue ().isSignMask ()) {
4877
- SDValue Abs = DAG.getNode (ISD::FABS, SL, FVT, BC);
4877
+ SDValue Abs = DAG.getNode (ISD::FABS, SL, FVT,
4878
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4878
4879
return DAG.getNode (ISD::FNEG, SL, FVT, Abs);
4879
4880
}
4880
4881
break ;
4881
4882
case ISD::AND:
4882
4883
if (CRHS->getAPIntValue ().isMaxSignedValue ())
4883
- return DAG.getNode (ISD::FABS, SL, FVT, BC);
4884
+ return DAG.getNode (ISD::FABS, SL, FVT,
4885
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4884
4886
break ;
4885
4887
default :
4886
4888
return SDValue ();
0 commit comments