[TargetRegisterInfo] Speed up getAllocatableSet. NFCI.
authorJay Foad <jay.foad@amd.com>
Tue, 11 May 2021 14:14:04 +0000 (15:14 +0100)
committerJay Foad <jay.foad@amd.com>
Wed, 12 May 2021 13:09:05 +0000 (14:09 +0100)
MachineRegisterInfo caches the reserved register set that is computed by
by TargetRegisterInfo::getReservedRegs, so call into MRI to get the
reserved regs to avoid recomputing them.

In particular this speeds up AMDGPU's SIFormMemoryClauses pass because
AMDGPU has a particularly complicated reserved set that is expensive to
compute.

Differential Revision: https://reviews.llvm.org/D102318

llvm/lib/CodeGen/TargetRegisterInfo.cpp

index e95e089..f4bb715 100644 (file)
@@ -267,8 +267,9 @@ BitVector TargetRegisterInfo::getAllocatableSet(const MachineFunction &MF,
   }
 
   // Mask out the reserved registers
-  BitVector Reserved = getReservedRegs(MF);
-  Allocatable &= Reserved.flip();
+  const MachineRegisterInfo &MRI = MF.getRegInfo();
+  const BitVector &Reserved = MRI.getReservedRegs();
+  Allocatable.reset(Reserved);
 
   return Allocatable;
 }