@@ -3503,10 +3503,6 @@ LegalizerHelper::lower(MachineInstr &MI, unsigned TypeIdx, LLT LowerHintTy) {
35033503 return lowerShuffleVector (MI);
35043504 case G_DYN_STACKALLOC:
35053505 return lowerDynStackAlloc (MI);
3506- case G_STACKSAVE:
3507- return lowerStackSave (MI);
3508- case G_STACKRESTORE:
3509- return lowerStackRestore (MI);
35103506 case G_EXTRACT:
35113507 return lowerExtract (MI);
35123508 case G_INSERT:
@@ -6777,12 +6773,21 @@ LegalizerHelper::lowerShuffleVector(MachineInstr &MI) {
67776773 return Legalized;
67786774}
67796775
6780- Register LegalizerHelper::getDynStackAllocTargetPtr (Register SPReg,
6781- Register AllocSize,
6782- Align Alignment,
6783- LLT PtrTy) {
6776+ LegalizerHelper::LegalizeResult
6777+ LegalizerHelper::lowerDynStackAlloc (MachineInstr &MI) {
6778+ const auto &MF = *MI.getMF ();
6779+ const auto &TFI = *MF.getSubtarget ().getFrameLowering ();
6780+ if (TFI.getStackGrowthDirection () == TargetFrameLowering::StackGrowsUp)
6781+ return UnableToLegalize;
6782+
6783+ Register Dst = MI.getOperand (0 ).getReg ();
6784+ Register AllocSize = MI.getOperand (1 ).getReg ();
6785+ Align Alignment = assumeAligned (MI.getOperand (2 ).getImm ());
6786+
6787+ LLT PtrTy = MRI.getType (Dst);
67846788 LLT IntPtrTy = LLT::scalar (PtrTy.getSizeInBits ());
67856789
6790+ Register SPReg = TLI.getStackPointerRegisterToSaveRestore ();
67866791 auto SPTmp = MIRBuilder.buildCopy (PtrTy, SPReg);
67876792 SPTmp = MIRBuilder.buildCast (IntPtrTy, SPTmp);
67886793
@@ -6797,54 +6802,14 @@ Register LegalizerHelper::getDynStackAllocTargetPtr(Register SPReg,
67976802 Alloc = MIRBuilder.buildAnd (IntPtrTy, Alloc, AlignCst);
67986803 }
67996804
6800- return MIRBuilder.buildCast (PtrTy, Alloc).getReg (0 );
6801- }
6802-
6803- LegalizerHelper::LegalizeResult
6804- LegalizerHelper::lowerDynStackAlloc (MachineInstr &MI) {
6805- const auto &MF = *MI.getMF ();
6806- const auto &TFI = *MF.getSubtarget ().getFrameLowering ();
6807- if (TFI.getStackGrowthDirection () == TargetFrameLowering::StackGrowsUp)
6808- return UnableToLegalize;
6809-
6810- Register Dst = MI.getOperand (0 ).getReg ();
6811- Register AllocSize = MI.getOperand (1 ).getReg ();
6812- Align Alignment = assumeAligned (MI.getOperand (2 ).getImm ());
6813-
6814- LLT PtrTy = MRI.getType (Dst);
6815- Register SPReg = TLI.getStackPointerRegisterToSaveRestore ();
6816- Register SPTmp =
6817- getDynStackAllocTargetPtr (SPReg, AllocSize, Alignment, PtrTy);
6818-
6805+ SPTmp = MIRBuilder.buildCast (PtrTy, Alloc);
68196806 MIRBuilder.buildCopy (SPReg, SPTmp);
68206807 MIRBuilder.buildCopy (Dst, SPTmp);
68216808
68226809 MI.eraseFromParent ();
68236810 return Legalized;
68246811}
68256812
6826- LegalizerHelper::LegalizeResult
6827- LegalizerHelper::lowerStackSave (MachineInstr &MI) {
6828- Register StackPtr = TLI.getStackPointerRegisterToSaveRestore ();
6829- if (!StackPtr)
6830- return UnableToLegalize;
6831-
6832- MIRBuilder.buildCopy (MI.getOperand (0 ), StackPtr);
6833- MI.eraseFromParent ();
6834- return Legalized;
6835- }
6836-
6837- LegalizerHelper::LegalizeResult
6838- LegalizerHelper::lowerStackRestore (MachineInstr &MI) {
6839- Register StackPtr = TLI.getStackPointerRegisterToSaveRestore ();
6840- if (!StackPtr)
6841- return UnableToLegalize;
6842-
6843- MIRBuilder.buildCopy (StackPtr, MI.getOperand (0 ));
6844- MI.eraseFromParent ();
6845- return Legalized;
6846- }
6847-
68486813LegalizerHelper::LegalizeResult
68496814LegalizerHelper::lowerExtract (MachineInstr &MI) {
68506815 auto [DstReg, DstTy, SrcReg, SrcTy] = MI.getFirst2RegLLTs ();
0 commit comments