Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: src/IceTargetLoweringX86Base.h

Issue 1319203005: Subzero. Changes the Register Allocator so that it is aware of register (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Addresses comments. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/IceTargetLoweringX8664Traits.h ('k') | src/IceTargetLoweringX86BaseImpl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceTargetLoweringX86Base.h
diff --git a/src/IceTargetLoweringX86Base.h b/src/IceTargetLoweringX86Base.h
index 8c0f29854cddfdaa0879c3b21180cef40b8a513b..90effed1edc069aa87a961fb35eb4e950ca25014 100644
--- a/src/IceTargetLoweringX86Base.h
+++ b/src/IceTargetLoweringX86Base.h
@@ -23,6 +23,7 @@
#include "IceTargetLowering.h"
#include "IceUtils.h"
+#include <array>
#include <type_traits>
#include <utility>
@@ -75,6 +76,12 @@ public:
const llvm::SmallBitVector &getRegisterSetForType(Type Ty) const override {
return TypeToRegisterSet[Ty];
}
+
+ const llvm::SmallBitVector &getAliasesForRegister(SizeT Reg) const override {
+ assert(Reg < Traits::RegisterSet::Reg_NUM);
+ return RegisterAliases[Reg];
+ }
+
bool hasFramePointer() const override { return IsEbpBasedFrame; }
SizeT getFrameOrStackReg() const override {
return IsEbpBasedFrame ? Traits::RegisterSet::Reg_ebp
@@ -680,10 +687,12 @@ protected:
bool IsEbpBasedFrame = false;
bool NeedsStackAlignment = false;
size_t SpillAreaSizeBytes = 0;
- llvm::SmallBitVector TypeToRegisterSet[IceType_NUM];
+ std::array<llvm::SmallBitVector, IceType_NUM> TypeToRegisterSet;
+ std::array<llvm::SmallBitVector, Traits::RegisterSet::Reg_NUM>
+ RegisterAliases;
llvm::SmallBitVector ScratchRegs;
llvm::SmallBitVector RegsUsed;
- VarList PhysicalRegisters[IceType_NUM];
+ std::array<VarList, IceType_NUM> PhysicalRegisters;
/// Randomize a given immediate operand
Operand *randomizeOrPoolImmediate(Constant *Immediate,
« no previous file with comments | « src/IceTargetLoweringX8664Traits.h ('k') | src/IceTargetLoweringX86BaseImpl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698