@@ -825,7 +825,7 @@ unsigned ARMBaseInstrInfo::getInstBundleLength(const MachineInstr &MI) const {
825825
826826void ARMBaseInstrInfo::copyFromCPSR (MachineBasicBlock &MBB,
827827 MachineBasicBlock::iterator I,
828- unsigned DestReg, bool KillSrc,
828+ MCRegister DestReg, bool KillSrc,
829829 const ARMSubtarget &Subtarget) const {
830830 unsigned Opc = Subtarget.isThumb ()
831831 ? (Subtarget.isMClass () ? ARM::t2MRS_M : ARM::t2MRS_AR)
@@ -845,7 +845,7 @@ void ARMBaseInstrInfo::copyFromCPSR(MachineBasicBlock &MBB,
845845
846846void ARMBaseInstrInfo::copyToCPSR (MachineBasicBlock &MBB,
847847 MachineBasicBlock::iterator I,
848- unsigned SrcReg, bool KillSrc,
848+ MCRegister SrcReg, bool KillSrc,
849849 const ARMSubtarget &Subtarget) const {
850850 unsigned Opc = Subtarget.isThumb ()
851851 ? (Subtarget.isMClass () ? ARM::t2MSR_M : ARM::t2MSR_AR)
@@ -1727,10 +1727,10 @@ bool ARMBaseInstrInfo::expandPostRAPseudo(MachineInstr &MI) const {
17271727 return false ;
17281728
17291729 const TargetRegisterInfo *TRI = &getRegisterInfo ();
1730- unsigned DstRegD = TRI-> getMatchingSuperReg (DstRegS, ARM::ssub_0,
1731- &ARM::DPRRegClass);
1732- unsigned SrcRegD = TRI-> getMatchingSuperReg (SrcRegS, ARM::ssub_0,
1733- &ARM::DPRRegClass);
1730+ MCRegister DstRegD =
1731+ TRI-> getMatchingSuperReg (DstRegS, ARM::ssub_0, &ARM::DPRRegClass);
1732+ MCRegister SrcRegD =
1733+ TRI-> getMatchingSuperReg (SrcRegS, ARM::ssub_0, &ARM::DPRRegClass);
17341734 if (!DstRegD || !SrcRegD)
17351735 return false ;
17361736
@@ -2594,7 +2594,7 @@ bool llvm::tryFoldSPUpdateIntoPushPop(const ARMSubtarget &Subtarget,
25942594 // Now try to find enough space in the reglist to allocate NumBytes.
25952595 for (int CurRegEnc = FirstRegEnc - 1 ; CurRegEnc >= 0 && RegsNeeded;
25962596 --CurRegEnc) {
2597- unsigned CurReg = RegClass->getRegister (CurRegEnc);
2597+ MCRegister CurReg = RegClass->getRegister (CurRegEnc);
25982598 if (IsT1PushPop && CurRegEnc > TRI->getEncodingValue (ARM::R7))
25992599 continue ;
26002600 if (!IsPop) {
@@ -5089,13 +5089,14 @@ ARMBaseInstrInfo::getExecutionDomain(const MachineInstr &MI) const {
50895089 return std::make_pair (ExeGeneric, 0 );
50905090}
50915091
5092- static unsigned getCorrespondingDRegAndLane (const TargetRegisterInfo *TRI,
5093- unsigned SReg, unsigned &Lane) {
5094- unsigned DReg = TRI->getMatchingSuperReg (SReg, ARM::ssub_0, &ARM::DPRRegClass);
5092+ static MCRegister getCorrespondingDRegAndLane (const TargetRegisterInfo *TRI,
5093+ unsigned SReg, unsigned &Lane) {
5094+ MCRegister DReg =
5095+ TRI->getMatchingSuperReg (SReg, ARM::ssub_0, &ARM::DPRRegClass);
50955096 Lane = 0 ;
50965097
5097- if (DReg != ARM::NoRegister )
5098- return DReg;
5098+ if (DReg)
5099+ return DReg;
50995100
51005101 Lane = 1 ;
51015102 DReg = TRI->getMatchingSuperReg (SReg, ARM::ssub_1, &ARM::DPRRegClass);
@@ -5120,12 +5121,13 @@ static unsigned getCorrespondingDRegAndLane(const TargetRegisterInfo *TRI,
51205121// / (including the case where the DPR itself is defined), it should not.
51215122// /
51225123static bool getImplicitSPRUseForDPRUse (const TargetRegisterInfo *TRI,
5123- MachineInstr &MI, unsigned DReg,
5124- unsigned Lane, unsigned &ImplicitSReg) {
5124+ MachineInstr &MI, MCRegister DReg,
5125+ unsigned Lane,
5126+ MCRegister &ImplicitSReg) {
51255127 // If the DPR is defined or used already, the other SPR lane will be chained
51265128 // correctly, so there is nothing to be done.
51275129 if (MI.definesRegister (DReg, TRI) || MI.readsRegister (DReg, TRI)) {
5128- ImplicitSReg = 0 ;
5130+ ImplicitSReg = MCRegister () ;
51295131 return true ;
51305132 }
51315133
@@ -5142,13 +5144,14 @@ static bool getImplicitSPRUseForDPRUse(const TargetRegisterInfo *TRI,
51425144
51435145 // If the register is known not to be live, there is no need to add an
51445146 // implicit-use.
5145- ImplicitSReg = 0 ;
5147+ ImplicitSReg = MCRegister () ;
51465148 return true ;
51475149}
51485150
51495151void ARMBaseInstrInfo::setExecutionDomain (MachineInstr &MI,
51505152 unsigned Domain) const {
5151- unsigned DstReg, SrcReg, DReg;
5153+ unsigned DstReg, SrcReg;
5154+ MCRegister DReg;
51525155 unsigned Lane;
51535156 MachineInstrBuilder MIB (*MI.getParent ()->getParent (), MI);
51545157 const TargetRegisterInfo *TRI = &getRegisterInfo ();
@@ -5218,7 +5221,7 @@ void ARMBaseInstrInfo::setExecutionDomain(MachineInstr &MI,
52185221
52195222 DReg = getCorrespondingDRegAndLane (TRI, DstReg, Lane);
52205223
5221- unsigned ImplicitSReg;
5224+ MCRegister ImplicitSReg;
52225225 if (!getImplicitSPRUseForDPRUse (TRI, MI, DReg, Lane, ImplicitSReg))
52235226 break ;
52245227
@@ -5237,7 +5240,7 @@ void ARMBaseInstrInfo::setExecutionDomain(MachineInstr &MI,
52375240 // The narrower destination must be marked as set to keep previous chains
52385241 // in place.
52395242 MIB.addReg (DstReg, RegState::Define | RegState::Implicit);
5240- if (ImplicitSReg != 0 )
5243+ if (ImplicitSReg)
52415244 MIB.addReg (ImplicitSReg, RegState::Implicit);
52425245 break ;
52435246 }
@@ -5249,11 +5252,12 @@ void ARMBaseInstrInfo::setExecutionDomain(MachineInstr &MI,
52495252 DstReg = MI.getOperand (0 ).getReg ();
52505253 SrcReg = MI.getOperand (1 ).getReg ();
52515254
5252- unsigned DstLane = 0 , SrcLane = 0 , DDst, DSrc;
5255+ unsigned DstLane = 0 , SrcLane = 0 ;
5256+ MCRegister DDst, DSrc;
52535257 DDst = getCorrespondingDRegAndLane (TRI, DstReg, DstLane);
52545258 DSrc = getCorrespondingDRegAndLane (TRI, SrcReg, SrcLane);
52555259
5256- unsigned ImplicitSReg;
5260+ MCRegister ImplicitSReg;
52575261 if (!getImplicitSPRUseForDPRUse (TRI, MI, DSrc, SrcLane, ImplicitSReg))
52585262 break ;
52595263
@@ -5273,7 +5277,7 @@ void ARMBaseInstrInfo::setExecutionDomain(MachineInstr &MI,
52735277 // more, so add them in manually.
52745278 MIB.addReg (DstReg, RegState::Implicit | RegState::Define);
52755279 MIB.addReg (SrcReg, RegState::Implicit);
5276- if (ImplicitSReg != 0 )
5280+ if (ImplicitSReg)
52775281 MIB.addReg (ImplicitSReg, RegState::Implicit);
52785282 break ;
52795283 }
@@ -5297,7 +5301,7 @@ void ARMBaseInstrInfo::setExecutionDomain(MachineInstr &MI,
52975301 // On the first instruction, both DSrc and DDst may be undef if present.
52985302 // Specifically when the original instruction didn't have them as an
52995303 // <imp-use>.
5300- unsigned CurReg = SrcLane == 1 && DstLane == 1 ? DSrc : DDst;
5304+ MCRegister CurReg = SrcLane == 1 && DstLane == 1 ? DSrc : DDst;
53015305 bool CurUndef = !MI.readsRegister (CurReg, TRI);
53025306 NewMIB.addReg (CurReg, getUndefRegState (CurUndef));
53035307
@@ -5402,8 +5406,8 @@ unsigned ARMBaseInstrInfo::getPartialRegUpdateClearance(
54025406 return 0 ;
54035407 } else if (ARM::SPRRegClass.contains (Reg)) {
54045408 // Physical register: MI must define the full D-reg.
5405- unsigned DReg = TRI-> getMatchingSuperReg (Reg, ARM::ssub_0,
5406- &ARM::DPRRegClass);
5409+ MCRegister DReg =
5410+ TRI-> getMatchingSuperReg (Reg, ARM::ssub_0, &ARM::DPRRegClass);
54075411 if (!DReg || !MI.definesRegister (DReg, TRI))
54085412 return 0 ;
54095413 }
0 commit comments