forked from OSchip/llvm-project
				
			GlobalISel: Add TargetLowering member to LegalizerHelper
This commit is contained in:
		
							parent
							
								
									e5d08fcbac
								
							
						
					
					
						commit
						adbcc8e733
					
				| 
						 | 
					@ -32,6 +32,7 @@ class LegalizerInfo;
 | 
				
			||||||
class Legalizer;
 | 
					class Legalizer;
 | 
				
			||||||
class MachineRegisterInfo;
 | 
					class MachineRegisterInfo;
 | 
				
			||||||
class GISelChangeObserver;
 | 
					class GISelChangeObserver;
 | 
				
			||||||
 | 
					class TargetLowering;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class LegalizerHelper {
 | 
					class LegalizerHelper {
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
| 
						 | 
					@ -45,6 +46,7 @@ public:
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
  MachineRegisterInfo &MRI;
 | 
					  MachineRegisterInfo &MRI;
 | 
				
			||||||
  const LegalizerInfo &LI;
 | 
					  const LegalizerInfo &LI;
 | 
				
			||||||
 | 
					  const TargetLowering &TLI;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public:
 | 
					public:
 | 
				
			||||||
  enum LegalizeResult {
 | 
					  enum LegalizeResult {
 | 
				
			||||||
| 
						 | 
					@ -62,6 +64,7 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  /// Expose LegalizerInfo so the clients can re-use.
 | 
					  /// Expose LegalizerInfo so the clients can re-use.
 | 
				
			||||||
  const LegalizerInfo &getLegalizerInfo() const { return LI; }
 | 
					  const LegalizerInfo &getLegalizerInfo() const { return LI; }
 | 
				
			||||||
 | 
					  const TargetLowering &getTargetLowering() const { return TLI; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  LegalizerHelper(MachineFunction &MF, GISelChangeObserver &Observer,
 | 
					  LegalizerHelper(MachineFunction &MF, GISelChangeObserver &Observer,
 | 
				
			||||||
                  MachineIRBuilder &B);
 | 
					                  MachineIRBuilder &B);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -90,14 +90,16 @@ LegalizerHelper::LegalizerHelper(MachineFunction &MF,
 | 
				
			||||||
                                 GISelChangeObserver &Observer,
 | 
					                                 GISelChangeObserver &Observer,
 | 
				
			||||||
                                 MachineIRBuilder &Builder)
 | 
					                                 MachineIRBuilder &Builder)
 | 
				
			||||||
    : MIRBuilder(Builder), Observer(Observer), MRI(MF.getRegInfo()),
 | 
					    : MIRBuilder(Builder), Observer(Observer), MRI(MF.getRegInfo()),
 | 
				
			||||||
      LI(*MF.getSubtarget().getLegalizerInfo()) {
 | 
					      LI(*MF.getSubtarget().getLegalizerInfo()),
 | 
				
			||||||
 | 
					      TLI(*MF.getSubtarget().getTargetLowering()) {
 | 
				
			||||||
  MIRBuilder.setChangeObserver(Observer);
 | 
					  MIRBuilder.setChangeObserver(Observer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
LegalizerHelper::LegalizerHelper(MachineFunction &MF, const LegalizerInfo &LI,
 | 
					LegalizerHelper::LegalizerHelper(MachineFunction &MF, const LegalizerInfo &LI,
 | 
				
			||||||
                                 GISelChangeObserver &Observer,
 | 
					                                 GISelChangeObserver &Observer,
 | 
				
			||||||
                                 MachineIRBuilder &B)
 | 
					                                 MachineIRBuilder &B)
 | 
				
			||||||
    : MIRBuilder(B), Observer(Observer), MRI(MF.getRegInfo()), LI(LI) {
 | 
					  : MIRBuilder(B), Observer(Observer), MRI(MF.getRegInfo()), LI(LI),
 | 
				
			||||||
 | 
					    TLI(*MF.getSubtarget().getTargetLowering()) {
 | 
				
			||||||
  MIRBuilder.setChangeObserver(Observer);
 | 
					  MIRBuilder.setChangeObserver(Observer);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
LegalizerHelper::LegalizeResult
 | 
					LegalizerHelper::LegalizeResult
 | 
				
			||||||
| 
						 | 
					@ -5714,7 +5716,6 @@ LegalizerHelper::lowerDynStackAlloc(MachineInstr &MI) {
 | 
				
			||||||
  LLT PtrTy = MRI.getType(Dst);
 | 
					  LLT PtrTy = MRI.getType(Dst);
 | 
				
			||||||
  LLT IntPtrTy = LLT::scalar(PtrTy.getSizeInBits());
 | 
					  LLT IntPtrTy = LLT::scalar(PtrTy.getSizeInBits());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const auto &TLI = *MF.getSubtarget().getTargetLowering();
 | 
					 | 
				
			||||||
  Register SPReg = TLI.getStackPointerRegisterToSaveRestore();
 | 
					  Register SPReg = TLI.getStackPointerRegisterToSaveRestore();
 | 
				
			||||||
  auto SPTmp = MIRBuilder.buildCopy(PtrTy, SPReg);
 | 
					  auto SPTmp = MIRBuilder.buildCopy(PtrTy, SPReg);
 | 
				
			||||||
  SPTmp = MIRBuilder.buildCast(IntPtrTy, SPTmp);
 | 
					  SPTmp = MIRBuilder.buildCast(IntPtrTy, SPTmp);
 | 
				
			||||||
| 
						 | 
					@ -6118,8 +6119,6 @@ LegalizerHelper::lowerBitreverse(MachineInstr &MI) {
 | 
				
			||||||
LegalizerHelper::LegalizeResult
 | 
					LegalizerHelper::LegalizeResult
 | 
				
			||||||
LegalizerHelper::lowerReadWriteRegister(MachineInstr &MI) {
 | 
					LegalizerHelper::lowerReadWriteRegister(MachineInstr &MI) {
 | 
				
			||||||
  MachineFunction &MF = MIRBuilder.getMF();
 | 
					  MachineFunction &MF = MIRBuilder.getMF();
 | 
				
			||||||
  const TargetSubtargetInfo &STI = MF.getSubtarget();
 | 
					 | 
				
			||||||
  const TargetLowering *TLI = STI.getTargetLowering();
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  bool IsRead = MI.getOpcode() == TargetOpcode::G_READ_REGISTER;
 | 
					  bool IsRead = MI.getOpcode() == TargetOpcode::G_READ_REGISTER;
 | 
				
			||||||
  int NameOpIdx = IsRead ? 1 : 0;
 | 
					  int NameOpIdx = IsRead ? 1 : 0;
 | 
				
			||||||
| 
						 | 
					@ -6130,7 +6129,7 @@ LegalizerHelper::lowerReadWriteRegister(MachineInstr &MI) {
 | 
				
			||||||
  const MDString *RegStr = cast<MDString>(
 | 
					  const MDString *RegStr = cast<MDString>(
 | 
				
			||||||
    cast<MDNode>(MI.getOperand(NameOpIdx).getMetadata())->getOperand(0));
 | 
					    cast<MDNode>(MI.getOperand(NameOpIdx).getMetadata())->getOperand(0));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  Register PhysReg = TLI->getRegisterByName(RegStr->getString().data(), Ty, MF);
 | 
					  Register PhysReg = TLI.getRegisterByName(RegStr->getString().data(), Ty, MF);
 | 
				
			||||||
  if (!PhysReg.isValid())
 | 
					  if (!PhysReg.isValid())
 | 
				
			||||||
    return UnableToLegalize;
 | 
					    return UnableToLegalize;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue