Subzero. Performance tweaks.
Introduces Ice::SmallBitVector.
Modifies ConstantRelocatables so that known offsets (i.e.,
not offsets to the code stream) do no require GlobalContext
allocations.
Modifies Cfg-local containers to use the CfgLocalAllocator.
BUG=
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/1738443002 .
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index 36e945f..86721a2 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -23,8 +23,9 @@
#ifndef SUBZERO_SRC_ICETARGETLOWERING_H
#define SUBZERO_SRC_ICETARGETLOWERING_H
-#include "IceCfgNode.h"
#include "IceDefs.h"
+#include "IceBitVector.h"
+#include "IceCfgNode.h"
#include "IceInst.h" // for the names of the Inst subtypes
#include "IceOperand.h"
#include "IceTypes.h"
@@ -273,24 +274,24 @@
};
using RegSetMask = uint32_t;
- virtual llvm::SmallBitVector getRegisterSet(RegSetMask Include,
- RegSetMask Exclude) const = 0;
+ virtual SmallBitVector getRegisterSet(RegSetMask Include,
+ RegSetMask Exclude) const = 0;
/// Get the set of physical registers available for the specified Variable's
/// register class, applying register restrictions from the command line.
- virtual const llvm::SmallBitVector &
+ virtual const SmallBitVector &
getRegistersForVariable(const Variable *Var) const = 0;
/// Get the set of *all* physical registers available for the specified
/// Variable's register class, *not* applying register restrictions from the
/// command line.
- virtual const llvm::SmallBitVector &
+ virtual const SmallBitVector &
getAllRegistersForVariable(const Variable *Var) const = 0;
- virtual const llvm::SmallBitVector &getAliasesForRegister(RegNumT) const = 0;
+ virtual const SmallBitVector &getAliasesForRegister(RegNumT) const = 0;
void regAlloc(RegAllocKind Kind);
virtual void
makeRandomRegisterPermutation(llvm::SmallVectorImpl<RegNumT> &Permutation,
- const llvm::SmallBitVector &ExcludeRegisters,
+ const SmallBitVector &ExcludeRegisters,
uint64_t Salt) const = 0;
/// Get the minimum number of clusters required for a jump table to be
@@ -365,7 +366,7 @@
// Applies command line filters to TypeToRegisterSet array.
static void
filterTypeToRegisterSet(GlobalContext *Ctx, int32_t NumRegs,
- llvm::SmallBitVector TypeToRegisterSet[],
+ SmallBitVector TypeToRegisterSet[],
size_t TypeToRegisterSetSize,
std::function<IceString(RegNumT)> getRegName,
std::function<IceString(RegClass)> getRegClassName);
@@ -429,8 +430,8 @@
/// TargetVarHook. If the TargetVarHook returns true, then the variable is
/// skipped and not considered with the rest of the spilled variables.
void getVarStackSlotParams(VarList &SortedSpilledVariables,
- llvm::SmallBitVector &RegsUsed,
- size_t *GlobalsSize, size_t *SpillAreaSizeBytes,
+ SmallBitVector &RegsUsed, size_t *GlobalsSize,
+ size_t *SpillAreaSizeBytes,
uint32_t *SpillAreaAlignmentBytes,
uint32_t *LocalsSlotsAlignmentBytes,
std::function<bool(Variable *)> TargetVarHook);