mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	RegisterPressure: ArrayRefize some functions for better readability. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@155795 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -59,28 +59,34 @@ void RegisterPressure::decrease(const TargetRegisterClass *RC, | |||||||
|   decreaseSetPressure(MaxSetPressure, RC, TRI); |   decreaseSetPressure(MaxSetPressure, RC, TRI); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Increase the current pressure as impacted by this physical register and bump | /// Increase the current pressure as impacted by these physical registers and | ||||||
| /// the high water mark if needed. | /// bump the high water mark if needed. | ||||||
| void RegPressureTracker::increasePhysRegPressure(unsigned Reg) { | void RegPressureTracker::increasePhysRegPressure(ArrayRef<unsigned> Regs) { | ||||||
|  |   for (unsigned I = 0, E = Regs.size(); I != E; ++I) | ||||||
|     increaseSetPressure(CurrSetPressure, P.MaxSetPressure, |     increaseSetPressure(CurrSetPressure, P.MaxSetPressure, | ||||||
|                       TRI->getMinimalPhysRegClass(Reg), TRI); |                         TRI->getMinimalPhysRegClass(Regs[I]), TRI); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Simply decrease the current pressure as impacted by this physcial register. | /// Simply decrease the current pressure as impacted by these physcial | ||||||
| void RegPressureTracker::decreasePhysRegPressure(unsigned Reg) { | /// registers. | ||||||
|   decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Reg), TRI); | void RegPressureTracker::decreasePhysRegPressure(ArrayRef<unsigned> Regs) { | ||||||
|  |   for (unsigned I = 0, E = Regs.size(); I != E; ++I) | ||||||
|  |     decreaseSetPressure(CurrSetPressure, TRI->getMinimalPhysRegClass(Regs[I]), | ||||||
|  |                         TRI); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Increase the current pressure as impacted by this virtual register and bump | /// Increase the current pressure as impacted by these virtual registers and | ||||||
| /// the high water mark if needed. | /// bump the high water mark if needed. | ||||||
| void RegPressureTracker::increaseVirtRegPressure(unsigned Reg) { | void RegPressureTracker::increaseVirtRegPressure(ArrayRef<unsigned> Regs) { | ||||||
|  |   for (unsigned I = 0, E = Regs.size(); I != E; ++I) | ||||||
|     increaseSetPressure(CurrSetPressure, P.MaxSetPressure, |     increaseSetPressure(CurrSetPressure, P.MaxSetPressure, | ||||||
|                       MRI->getRegClass(Reg), TRI); |                         MRI->getRegClass(Regs[I]), TRI); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Simply decrease the current pressure as impacted by this virtual register. | /// Simply decrease the current pressure as impacted by these virtual registers. | ||||||
| void RegPressureTracker::decreaseVirtRegPressure(unsigned Reg) { | void RegPressureTracker::decreaseVirtRegPressure(ArrayRef<unsigned> Regs) { | ||||||
|   decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Reg), TRI); |   for (unsigned I = 0, E = Regs.size(); I != E; ++I) | ||||||
|  |     decreaseSetPressure(CurrSetPressure, MRI->getRegClass(Regs[I]), TRI); | ||||||
| } | } | ||||||
|  |  | ||||||
| /// Clear the result so it can be used for another round of pressure tracking. | /// Clear the result so it can be used for another round of pressure tracking. | ||||||
| @@ -390,7 +396,9 @@ bool RegPressureTracker::recede() { | |||||||
|     static_cast<RegionPressure&>(P).openTop(CurrPos); |     static_cast<RegionPressure&>(P).openTop(CurrPos); | ||||||
|  |  | ||||||
|   // Find the previous instruction. |   // Find the previous instruction. | ||||||
|   while (--CurrPos != MBB->begin() && CurrPos->isDebugValue()); |   do | ||||||
|  |     --CurrPos; | ||||||
|  |   while (CurrPos != MBB->begin() && CurrPos->isDebugValue()); | ||||||
|  |  | ||||||
|   if (CurrPos->isDebugValue()) { |   if (CurrPos->isDebugValue()) { | ||||||
|     closeRegion(); |     closeRegion(); | ||||||
| @@ -409,14 +417,10 @@ bool RegPressureTracker::recede() { | |||||||
|   collectOperands(CurrPos, PhysRegOpers, VirtRegOpers, TRI, RCI); |   collectOperands(CurrPos, PhysRegOpers, VirtRegOpers, TRI, RCI); | ||||||
|  |  | ||||||
|   // Boost pressure for all dead defs together. |   // Boost pressure for all dead defs together. | ||||||
|   for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) |   increasePhysRegPressure(PhysRegOpers.DeadDefs); | ||||||
|       increasePhysRegPressure(PhysRegOpers.DeadDefs[i]); |   increaseVirtRegPressure(VirtRegOpers.DeadDefs); | ||||||
|   for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) |   decreasePhysRegPressure(PhysRegOpers.DeadDefs); | ||||||
|       increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); |   decreaseVirtRegPressure(VirtRegOpers.DeadDefs); | ||||||
|   for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) |  | ||||||
|       decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]); |  | ||||||
|   for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) |  | ||||||
|       decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); |  | ||||||
|  |  | ||||||
|   // Kill liveness at live defs. |   // Kill liveness at live defs. | ||||||
|   // TODO: consider earlyclobbers? |   // TODO: consider earlyclobbers? | ||||||
| @@ -528,16 +532,14 @@ bool RegPressureTracker::advance() { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   // Boost pressure for all dead defs together. |   // Boost pressure for all dead defs together. | ||||||
|   for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) |   increasePhysRegPressure(PhysRegOpers.DeadDefs); | ||||||
|       increasePhysRegPressure(PhysRegOpers.DeadDefs[i]); |   increaseVirtRegPressure(VirtRegOpers.DeadDefs); | ||||||
|   for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) |   decreasePhysRegPressure(PhysRegOpers.DeadDefs); | ||||||
|       increaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); |   decreaseVirtRegPressure(VirtRegOpers.DeadDefs); | ||||||
|   for (unsigned i = 0; i < PhysRegOpers.DeadDefs.size(); ++i) |  | ||||||
|       decreasePhysRegPressure(PhysRegOpers.DeadDefs[i]); |  | ||||||
|   for (unsigned i = 0; i < VirtRegOpers.DeadDefs.size(); ++i) |  | ||||||
|       decreaseVirtRegPressure(VirtRegOpers.DeadDefs[i]); |  | ||||||
|  |  | ||||||
|   // Find the next instruction. |   // Find the next instruction. | ||||||
|   while (++CurrPos != MBB->end() && CurrPos->isDebugValue()); |   do | ||||||
|  |     ++CurrPos; | ||||||
|  |   while (CurrPos != MBB->end() && CurrPos->isDebugValue()); | ||||||
|   return true; |   return true; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -158,11 +158,11 @@ protected: | |||||||
|   void closeTop(); |   void closeTop(); | ||||||
|   void closeBottom(); |   void closeBottom(); | ||||||
|  |  | ||||||
|   void increasePhysRegPressure(unsigned Reg); |   void increasePhysRegPressure(ArrayRef<unsigned> Regs); | ||||||
|   void decreasePhysRegPressure(unsigned Reg); |   void decreasePhysRegPressure(ArrayRef<unsigned> Regs); | ||||||
|  |  | ||||||
|   void increaseVirtRegPressure(unsigned Reg); |   void increaseVirtRegPressure(ArrayRef<unsigned> Regs); | ||||||
|   void decreaseVirtRegPressure(unsigned Reg); |   void decreaseVirtRegPressure(ArrayRef<unsigned> Regs); | ||||||
|  |  | ||||||
|   void discoverPhysLiveIn(unsigned Reg); |   void discoverPhysLiveIn(unsigned Reg); | ||||||
|   void discoverPhysLiveOut(unsigned Reg); |   void discoverPhysLiveOut(unsigned Reg); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user