@@ -11945,36 +11945,33 @@ SDValue PPCTargetLowering::LowerDMFVectorLoad(SDValue Op,
1194511945 SDValue Value =
1194611946 SDValue(DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v1024i1, Ops), 0);
1194711947
11948- SDValue DmrPValue;
11949- if (IsV2048i1) {
11950- // This corresponds to v2048i1 which represents a dmr pair.
11951- SDValue Dmr1Lo(DAG.getMachineNode(PPC::DMXXINSTDMR512, dl, MVT::v512i1,
11952- Loads[4], Loads[5]),
11953- 0);
11954- SDValue Dmr1Hi(DAG.getMachineNode(PPC::DMXXINSTDMR512_HI, dl, MVT::v512i1,
11955- Loads[6], Loads[7]),
11956- 0);
11957- const SDValue Dmr1Ops[] = {RC, Dmr1Lo, LoSub, Dmr1Hi, HiSub};
11958- SDValue Dmr1Value = SDValue(
11959- DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v1024i1, Dmr1Ops), 0);
11948+ if (IsV1024i1) {
11949+ SDValue RetOps[] = {Value, TF};
11950+ return DAG.getMergeValues(RetOps, dl);
11951+ }
1196011952
11961- SDValue Dmr0Sub = DAG.getTargetConstant(PPC::sub_dmr0, dl, MVT::i32);
11962- SDValue Dmr1Sub = DAG.getTargetConstant(PPC::sub_dmr1, dl, MVT::i32);
11953+ // Handle Loads for V2048i1 which represents a dmr pair.
11954+ SDValue DmrPValue;
11955+ SDValue Dmr1Lo(DAG.getMachineNode(PPC::DMXXINSTDMR512, dl, MVT::v512i1,
11956+ Loads[4], Loads[5]),
11957+ 0);
11958+ SDValue Dmr1Hi(DAG.getMachineNode(PPC::DMXXINSTDMR512_HI, dl, MVT::v512i1,
11959+ Loads[6], Loads[7]),
11960+ 0);
11961+ const SDValue Dmr1Ops[] = {RC, Dmr1Lo, LoSub, Dmr1Hi, HiSub};
11962+ SDValue Dmr1Value = SDValue(
11963+ DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v1024i1, Dmr1Ops), 0);
1196311964
11964- SDValue DmrPRC = DAG.getTargetConstant(PPC::DMRpRCRegClassID , dl, MVT::i32);
11965- const SDValue DmrPOps[] = {DmrPRC, Value, Dmr0Sub, Dmr1Value, Dmr1Sub} ;
11965+ SDValue Dmr0Sub = DAG.getTargetConstant(PPC::sub_dmr0 , dl, MVT::i32);
11966+ SDValue Dmr1Sub = DAG.getTargetConstant(PPC::sub_dmr1, dl, MVT::i32) ;
1196611967
11967- DmrPValue = SDValue(
11968- DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v2048i1, DmrPOps), 0);
11969- }
11968+ SDValue DmrPRC = DAG.getTargetConstant(PPC::DMRpRCRegClassID, dl, MVT::i32);
11969+ const SDValue DmrPOps[] = {DmrPRC, Value, Dmr0Sub, Dmr1Value, Dmr1Sub};
1197011970
11971- SDValue RetOps[2];
11972- if (IsV1024i1)
11973- RetOps[0] = Value;
11974- else
11975- RetOps[0] = DmrPValue;
11976- RetOps[1] = TF;
11971+ DmrPValue = SDValue(
11972+ DAG.getMachineNode(PPC::REG_SEQUENCE, dl, MVT::v2048i1, DmrPOps), 0);
1197711973
11974+ SDValue RetOps[] = {DmrPValue, TF};
1197811975 return DAG.getMergeValues(RetOps, dl);
1197911976}
1198011977
0 commit comments