@@ -11634,29 +11634,6 @@ SDValue PPCTargetLowering::LowerINTRINSIC_WO_CHAIN(SDValue Op,
1163411634 return Flags;
1163511635}
1163611636
11637- SDValue PPCTargetLowering::LowerINTRINSIC_W_CHAIN(SDValue Op,
11638- SelectionDAG &DAG) const {
11639- unsigned IntrinsicID = Op.getConstantOperandVal(1);
11640-
11641- SDLoc dl(Op);
11642- switch (IntrinsicID) {
11643- case Intrinsic::ppc_amo_lwat:
11644- case Intrinsic::ppc_amo_ldat:
11645- SDValue Ptr = Op.getOperand(2);
11646- SDValue Val1 = Op.getOperand(3);
11647- SDValue FC = Op.getOperand(4);
11648- SDValue Ops[] = {Ptr, Val1, FC};
11649- bool IsLwat = IntrinsicID == Intrinsic::ppc_amo_lwat;
11650- unsigned Opcode = IsLwat ? PPC::LWAT_PSEUDO : PPC::LDAT_PSEUDO;
11651- MachineSDNode *MNode = DAG.getMachineNode(
11652- Opcode, dl, {IsLwat ? MVT::i32 : MVT::i64, MVT::Other}, Ops);
11653- SDValue Result = SDValue(MNode, 0);
11654- SDValue OutChain = SDValue(MNode, 1);
11655- return DAG.getMergeValues({Result, OutChain}, dl);
11656- }
11657- return SDValue();
11658- }
11659-
1166011637SDValue PPCTargetLowering::LowerINTRINSIC_VOID(SDValue Op,
1166111638 SelectionDAG &DAG) const {
1166211639 // SelectionDAGBuilder::visitTargetIntrinsic may insert one extra chain to
@@ -12827,9 +12804,9 @@ SDValue PPCTargetLowering::LowerOperation(SDValue Op, SelectionDAG &DAG) const {
1282712804 return LowerFP_ROUND(Op, DAG);
1282812805 case ISD::ROTL: return LowerROTL(Op, DAG);
1282912806
12830- // For counter-based loop handling, and amo load .
12807+ // For counter-based loop handling.
1283112808 case ISD::INTRINSIC_W_CHAIN:
12832- return LowerINTRINSIC_W_CHAIN(Op, DAG );
12809+ return SDValue( );
1283312810
1283412811 case ISD::BITCAST: return LowerBITCAST(Op, DAG);
1283512812
@@ -14756,16 +14733,19 @@ PPCTargetLowering::EmitInstrWithCustomInserter(MachineInstr &MI,
1475614733 .addImm(PPC::sub_32);
1475714734 else
1475814735 Val64 = ValReg;
14759- Register Pair = MRI.createVirtualRegister(&PPC::G8pRCRegClass);
14760- BuildMI(*BB, MI, DL, TII->get(TargetOpcode::IMPLICIT_DEF), Pair);
14761- Register PairWithVal = MRI.createVirtualRegister(&PPC::G8pRCRegClass);
14762- BuildMI(*BB, MI, DL, TII->get(TargetOpcode::INSERT_SUBREG), PairWithVal)
14763- .addReg(Pair)
14736+
14737+ Register G8rPair = MRI.createVirtualRegister(&PPC::G8pRCRegClass);
14738+ Register UndefG8r = MRI.createVirtualRegister(&PPC::G8RCRegClass);
14739+ BuildMI(*BB, MI, DL, TII->get(TargetOpcode::IMPLICIT_DEF), UndefG8r);
14740+ BuildMI(*BB, MI, DL, TII->get(PPC::REG_SEQUENCE), G8rPair)
14741+ .addReg(UndefG8r)
14742+ .addImm(PPC::sub_gp8_x0)
1476414743 .addReg(Val64)
1476514744 .addImm(PPC::sub_gp8_x1);
14745+
1476614746 Register PairResult = MRI.createVirtualRegister(&PPC::G8pRCRegClass);
1476714747 BuildMI(*BB, MI, DL, TII->get(IsLwat ? PPC::LWAT : PPC::LDAT), PairResult)
14768- .addReg(PairWithVal )
14748+ .addReg(G8rPair )
1476914749 .addReg(PtrReg)
1477014750 .addImm(FC);
1477114751 Register Result64 = MRI.createVirtualRegister(&PPC::G8RCRegClass);
0 commit comments