@@ -5876,36 +5876,21 @@ SDValue SITargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
58765876 }
58775877 case Intrinsic::amdgcn_fdiv_fast:
58785878 return lowerFDIV_FAST (Op, DAG);
5879- case Intrinsic::amdgcn_interp_mov: {
5880- SDValue ToM0 = DAG.getCopyToReg (DAG.getEntryNode (), DL, AMDGPU::M0,
5881- Op.getOperand (4 ), SDValue ());
5882- return DAG.getNode (AMDGPUISD::INTERP_MOV, DL, MVT::f32 , Op.getOperand (1 ),
5883- Op.getOperand (2 ), Op.getOperand (3 ), ToM0.getValue (1 ));
5884- }
5885- case Intrinsic::amdgcn_interp_p1: {
5886- SDValue ToM0 = DAG.getCopyToReg (DAG.getEntryNode (), DL, AMDGPU::M0,
5887- Op.getOperand (4 ), SDValue ());
5888- return DAG.getNode (AMDGPUISD::INTERP_P1, DL, MVT::f32 , Op.getOperand (1 ),
5889- Op.getOperand (2 ), Op.getOperand (3 ), ToM0.getValue (1 ));
5890- }
5891- case Intrinsic::amdgcn_interp_p2: {
5892- SDValue ToM0 = DAG.getCopyToReg (DAG.getEntryNode (), DL, AMDGPU::M0,
5893- Op.getOperand (5 ), SDValue ());
5894- return DAG.getNode (AMDGPUISD::INTERP_P2, DL, MVT::f32 , Op.getOperand (1 ),
5895- Op.getOperand (2 ), Op.getOperand (3 ), Op.getOperand (4 ),
5896- ToM0.getValue (1 ));
5897- }
58985879 case Intrinsic::amdgcn_interp_p1_f16: {
58995880 SDValue ToM0 = DAG.getCopyToReg (DAG.getEntryNode (), DL, AMDGPU::M0,
59005881 Op.getOperand (5 ), SDValue ());
5901-
59025882 if (getSubtarget ()->getLDSBankCount () == 16 ) {
59035883 // 16 bank LDS
5904- SDValue S = DAG.getNode (AMDGPUISD::INTERP_MOV, DL, MVT::f32 ,
5905- DAG.getConstant (2 , DL, MVT::i32 ), // P0
5906- Op.getOperand (2 ), // Attrchan
5907- Op.getOperand (3 ), // Attr
5908- ToM0.getValue (1 ));
5884+
5885+ // FIXME: This implicitly will insert a second CopyToReg to M0.
5886+ SDValue S = DAG.getNode (
5887+ ISD::INTRINSIC_WO_CHAIN, DL, MVT::f32 ,
5888+ DAG.getTargetConstant (Intrinsic::amdgcn_interp_mov, DL, MVT::i32 ),
5889+ DAG.getConstant (2 , DL, MVT::i32 ), // P0
5890+ Op.getOperand (2 ), // Attrchan
5891+ Op.getOperand (3 ), // Attr
5892+ Op.getOperand (5 )); // m0
5893+
59095894 SDValue Ops[] = {
59105895 Op.getOperand (1 ), // Src0
59115896 Op.getOperand (2 ), // Attrchan
@@ -10895,12 +10880,6 @@ bool SITargetLowering::isSDNodeSourceOfDivergence(const SDNode * N,
1089510880 case ISD::INTRINSIC_W_CHAIN:
1089610881 return AMDGPU::isIntrinsicSourceOfDivergence (
1089710882 cast<ConstantSDNode>(N->getOperand (1 ))->getZExtValue ());
10898- // In some cases intrinsics that are a source of divergence have been
10899- // lowered to AMDGPUISD so we also need to check those too.
10900- case AMDGPUISD::INTERP_MOV:
10901- case AMDGPUISD::INTERP_P1:
10902- case AMDGPUISD::INTERP_P2:
10903- return true ;
1090410883 }
1090510884 return false ;
1090610885}
0 commit comments