@@ -4857,8 +4857,8 @@ static SDValue BitwiseToSrcModifierOp(SDValue N,
4857
4857
return SDValue ();
4858
4858
4859
4859
SelectionDAG &DAG = DCI.DAG ;
4860
- SDValue LHS = N. getNode () ->getOperand (0 );
4861
- SDValue RHS = N. getNode () ->getOperand (1 );
4860
+ SDValue LHS = N->getOperand (0 );
4861
+ SDValue RHS = N->getOperand (1 );
4862
4862
ConstantSDNode *CRHS = isConstOrConstSplat (RHS);
4863
4863
4864
4864
if (!CRHS)
@@ -4869,31 +4869,25 @@ static SDValue BitwiseToSrcModifierOp(SDValue N,
4869
4869
assert ((VT == MVT::i32 || VT == MVT::v2i32 || VT == MVT::i64 ) &&
4870
4870
" Expected i32, v2i32 or i64 value type." );
4871
4871
4872
- uint64_t Mask = 0 ;
4873
- if (VT.isVector ()) {
4874
- SDValue Splat = DAG.getSplatValue (RHS);
4875
- const ConstantSDNode *C = dyn_cast<ConstantSDNode>(Splat);
4876
- Mask = C->getZExtValue ();
4877
- } else
4878
- Mask = CRHS->getZExtValue ();
4879
-
4872
+ uint64_t Mask = CRHS->getZExtValue ();
4880
4873
EVT FVT = IntToFloatVT (VT);
4881
- SDValue BC = DAG.getNode (ISD::BITCAST, SDLoc (N), FVT, LHS);
4874
+ SDLoc SL = SDLoc (N);
4875
+ SDValue BC = DAG.getNode (ISD::BITCAST, SL, FVT, LHS);
4882
4876
4883
4877
switch (Opc) {
4884
4878
case ISD::XOR:
4885
4879
if (Mask == 0x80000000u || Mask == 0x8000000000000000u )
4886
- return DAG.getNode (ISD::FNEG, SDLoc (N) , FVT, BC);
4880
+ return DAG.getNode (ISD::FNEG, SL , FVT, BC);
4887
4881
break ;
4888
4882
case ISD::OR:
4889
4883
if (Mask == 0x80000000u || Mask == 0x8000000000000000u ) {
4890
4884
SDValue Neg = DAG.getNode (ISD::FNEG, SDLoc (N), FVT, BC);
4891
- return DAG.getNode (ISD::FABS, SDLoc (N) , FVT, Neg);
4885
+ return DAG.getNode (ISD::FABS, SL , FVT, Neg);
4892
4886
}
4893
4887
break ;
4894
4888
case ISD::AND:
4895
4889
if (Mask == 0x7fffffffu || Mask == 0x7fffffffffffffffu )
4896
- return DAG.getNode (ISD::FABS, SDLoc (N) , FVT, BC);
4890
+ return DAG.getNode (ISD::FABS, SL , FVT, BC);
4897
4891
break ;
4898
4892
default :
4899
4893
return SDValue ();
@@ -4945,12 +4939,10 @@ SDValue AMDGPUTargetLowering::performSelectCombine(SDNode *N,
4945
4939
// Support source modifiers as integer.
4946
4940
// (select c, (xor/or/and x, c), y) -> (bitcast (select c)))
4947
4941
if (VT == MVT::i32 || VT == MVT::v2i32 || VT == MVT::i64 ) {
4948
- SDLoc SL (N);
4949
- SDValue LHS = N->getOperand (1 );
4950
- SDValue RHS = N->getOperand (2 );
4951
- if (SDValue SrcMod = BitwiseToSrcModifierOp (LHS, DCI)) {
4942
+ if (SDValue SrcMod = BitwiseToSrcModifierOp (True, DCI)) {
4943
+ SDLoc SL (N);
4952
4944
EVT FVT = IntToFloatVT (VT);
4953
- SDValue FRHS = DAG.getNode (ISD::BITCAST, SL, FVT, RHS );
4945
+ SDValue FRHS = DAG.getNode (ISD::BITCAST, SL, FVT, False );
4954
4946
SDValue FSelect = DAG.getNode (ISD::SELECT, SL, FVT, Cond, SrcMod, FRHS);
4955
4947
SDValue BC = DAG.getNode (ISD::BITCAST, SL, VT, FSelect);
4956
4948
return BC;
0 commit comments