forked from OSchip/llvm-project
[tablegen] Improve performance on *GenRegisterInfo.inc by replacing SparseVector with BitVector. NFC
Summary: Generating X86GenRegisterInfo.inc and AArch64GenRegisterInfo.inc is 8-9% faster on my build. Reviewers: bogner, javed.absar Reviewed By: bogner Subscribers: llvm-commits, kristof.beyls Differential Revision: https://reviews.llvm.org/D47907 llvm-svn: 334337
This commit is contained in:
parent
6500c693a5
commit
646d06fce0
|
@ -21,7 +21,6 @@
|
|||
#include "llvm/ADT/SetVector.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/SmallVector.h"
|
||||
#include "llvm/ADT/SparseBitVector.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
|
@ -1635,9 +1634,10 @@ static void computeUberWeights(std::vector<UberRegSet> &UberSets,
|
|||
static bool normalizeWeight(CodeGenRegister *Reg,
|
||||
std::vector<UberRegSet> &UberSets,
|
||||
std::vector<UberRegSet*> &RegSets,
|
||||
SparseBitVector<> &NormalRegs,
|
||||
BitVector &NormalRegs,
|
||||
CodeGenRegister::RegUnitList &NormalUnits,
|
||||
CodeGenRegBank &RegBank) {
|
||||
NormalRegs.resize(std::max(Reg->EnumValue + 1, NormalRegs.size()));
|
||||
if (NormalRegs.test(Reg->EnumValue))
|
||||
return false;
|
||||
NormalRegs.set(Reg->EnumValue);
|
||||
|
@ -1711,7 +1711,7 @@ void CodeGenRegBank::computeRegUnitWeights() {
|
|||
Changed = false;
|
||||
for (auto &Reg : Registers) {
|
||||
CodeGenRegister::RegUnitList NormalUnits;
|
||||
SparseBitVector<> NormalRegs;
|
||||
BitVector NormalRegs;
|
||||
Changed |= normalizeWeight(&Reg, UberSets, RegSets, NormalRegs,
|
||||
NormalUnits, *this);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue