@@ -4853,22 +4853,24 @@ static SDValue getBitwiseToSrcModifierOp(SDValue N,
4853
4853
EVT VT = RHS.getValueType ();
4854
4854
EVT FVT = getFloatVT (VT);
4855
4855
SDLoc SL = SDLoc (N);
4856
- SDValue BC = DAG.getNode (ISD::BITCAST, SL, FVT, LHS);
4857
4856
4858
4857
switch (Opc) {
4859
4858
case ISD::XOR:
4860
4859
if (CRHS->getAPIntValue ().isSignMask ())
4861
- return DAG.getNode (ISD::FNEG, SL, FVT, BC);
4860
+ return DAG.getNode (ISD::FNEG, SL, FVT,
4861
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4862
4862
break ;
4863
4863
case ISD::OR:
4864
4864
if (CRHS->getAPIntValue ().isSignMask ()) {
4865
- SDValue Abs = DAG.getNode (ISD::FABS, SL, FVT, BC);
4865
+ SDValue Abs = DAG.getNode (ISD::FABS, SL, FVT,
4866
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4866
4867
return DAG.getNode (ISD::FNEG, SL, FVT, Abs);
4867
4868
}
4868
4869
break ;
4869
4870
case ISD::AND:
4870
4871
if (CRHS->getAPIntValue ().isMaxSignedValue ())
4871
- return DAG.getNode (ISD::FABS, SL, FVT, BC);
4872
+ return DAG.getNode (ISD::FABS, SL, FVT,
4873
+ DAG.getNode (ISD::BITCAST, SL, FVT, LHS));
4872
4874
break ;
4873
4875
default :
4874
4876
return SDValue ();
0 commit comments