@@ -845,19 +845,12 @@ void CodeGen::genSaveCalleeSavedRegisterGroup(regMaskTP regsMask, int spDelta, i
845
845
846
846
for (int i = 0 ; i < regStack.Height (); ++i)
847
847
{
848
- RegPair regPair = genReverseAndPairCalleeSavedRegisters ? regStack. Top (i) : regStack.Bottom (i);
848
+ RegPair regPair = regStack.Bottom (i);
849
849
if (regPair.reg2 != REG_NA)
850
850
{
851
851
// We can use a STP instruction.
852
- if (genReverseAndPairCalleeSavedRegisters)
853
- {
854
- genPrologSaveRegPair (regPair.reg2 , regPair.reg1 , spOffset, spDelta, false , REG_IP0, nullptr );
855
- }
856
- else
857
- {
858
- genPrologSaveRegPair (regPair.reg1 , regPair.reg2 , spOffset, spDelta, regPair.useSaveNextPair , REG_IP0,
859
- nullptr );
860
- }
852
+ genPrologSaveRegPair (regPair.reg1 , regPair.reg2 , spOffset, spDelta, regPair.useSaveNextPair , REG_IP0,
853
+ nullptr );
861
854
862
855
spOffset += 2 * slotSize;
863
856
}
@@ -933,9 +926,8 @@ void CodeGen::genSaveCalleeSavedRegistersHelp(regMaskTP regsToSaveMask, int lowe
933
926
934
927
// Save integer registers at higher addresses than floating-point registers.
935
928
936
- regMaskTP maskSaveRegsFrame = regsToSaveMask & (RBM_FP | RBM_LR);
937
929
regMaskTP maskSaveRegsFloat = regsToSaveMask & RBM_ALLFLOAT;
938
- regMaskTP maskSaveRegsInt = regsToSaveMask & ~maskSaveRegsFloat & ~maskSaveRegsFrame ;
930
+ regMaskTP maskSaveRegsInt = regsToSaveMask & ~maskSaveRegsFloat;
939
931
940
932
if (maskSaveRegsFloat != RBM_NONE)
941
933
{
@@ -947,13 +939,6 @@ void CodeGen::genSaveCalleeSavedRegistersHelp(regMaskTP regsToSaveMask, int lowe
947
939
if (maskSaveRegsInt != RBM_NONE)
948
940
{
949
941
genSaveCalleeSavedRegisterGroup (maskSaveRegsInt, spDelta, lowestCalleeSavedOffset);
950
- spDelta = 0 ;
951
- lowestCalleeSavedOffset += genCountBits (maskSaveRegsInt) * FPSAVE_REGSIZE_BYTES;
952
- }
953
-
954
- if (maskSaveRegsFrame != RBM_NONE)
955
- {
956
- genPrologSaveRegPair (REG_FP, REG_LR, lowestCalleeSavedOffset, spDelta, false , REG_IP0, nullptr );
957
942
// No need to update spDelta, lowestCalleeSavedOffset since they're not used after this.
958
943
}
959
944
}
@@ -985,20 +970,13 @@ void CodeGen::genRestoreCalleeSavedRegisterGroup(regMaskTP regsMask, int spDelta
985
970
stackDelta = spDelta;
986
971
}
987
972
988
- RegPair regPair = genReverseAndPairCalleeSavedRegisters ? regStack. Bottom (i) : regStack.Top (i);
973
+ RegPair regPair = regStack.Top (i);
989
974
if (regPair.reg2 != REG_NA)
990
975
{
991
976
spOffset -= 2 * slotSize;
992
977
993
- if (genReverseAndPairCalleeSavedRegisters)
994
- {
995
- genEpilogRestoreRegPair (regPair.reg2 , regPair.reg1 , spOffset, stackDelta, false , REG_IP1, nullptr );
996
- }
997
- else
998
- {
999
- genEpilogRestoreRegPair (regPair.reg1 , regPair.reg2 , spOffset, stackDelta, regPair.useSaveNextPair ,
1000
- REG_IP1, nullptr );
1001
- }
978
+ genEpilogRestoreRegPair (regPair.reg1 , regPair.reg2 , spOffset, stackDelta, regPair.useSaveNextPair , REG_IP1,
979
+ nullptr );
1002
980
}
1003
981
else
1004
982
{
@@ -1065,19 +1043,11 @@ void CodeGen::genRestoreCalleeSavedRegistersHelp(regMaskTP regsToRestoreMask, in
1065
1043
1066
1044
// Save integer registers at higher addresses than floating-point registers.
1067
1045
1068
- regMaskTP maskRestoreRegsFrame = regsToRestoreMask & (RBM_FP | RBM_LR);
1069
1046
regMaskTP maskRestoreRegsFloat = regsToRestoreMask & RBM_ALLFLOAT;
1070
- regMaskTP maskRestoreRegsInt = regsToRestoreMask & ~maskRestoreRegsFloat & ~maskRestoreRegsFrame ;
1047
+ regMaskTP maskRestoreRegsInt = regsToRestoreMask & ~maskRestoreRegsFloat;
1071
1048
1072
1049
// Restore in the opposite order of saving.
1073
1050
1074
- if (maskRestoreRegsFrame != RBM_NONE)
1075
- {
1076
- int spFrameDelta = (maskRestoreRegsFloat != RBM_NONE || maskRestoreRegsInt != RBM_NONE) ? 0 : spDelta;
1077
- spOffset -= 2 * REGSIZE_BYTES;
1078
- genEpilogRestoreRegPair (REG_FP, REG_LR, spOffset, spFrameDelta, false , REG_IP1, nullptr );
1079
- }
1080
-
1081
1051
if (maskRestoreRegsInt != RBM_NONE)
1082
1052
{
1083
1053
int spIntDelta = (maskRestoreRegsFloat != RBM_NONE) ? 0 : spDelta; // should we delay the SP adjustment?
0 commit comments