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

Unified Diff: src/IceTargetLowering.h

Issue 680733002: Subzero: Allow delaying Phi lowering until after register allocation. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Fix vector const undef lowering for phis. Created 6 years, 2 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/IceRegAlloc.cpp ('k') | src/IceTargetLowering.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/IceTargetLowering.h
diff --git a/src/IceTargetLowering.h b/src/IceTargetLowering.h
index e46399d311e6aa73ffc7d8e658c772df3b194b4a..7aa24832a0089fae0f6d099564388f3055395307 100644
--- a/src/IceTargetLowering.h
+++ b/src/IceTargetLowering.h
@@ -64,6 +64,7 @@ public:
Inst *getLastInserted() const;
void advanceCur() { Cur = Next; }
void advanceNext() { advanceForward(Next); }
+ void rewind();
void setInsertPoint(const InstList::iterator &Position) { Next = Position; }
private:
@@ -134,8 +135,18 @@ public:
void doAddressOpt();
// Randomly insert NOPs.
void doNopInsertion();
- // Lowers a single instruction.
+ // Lowers a single non-Phi instruction.
void lower();
+ // Does preliminary lowering of the set of Phi instructions in the
+ // current node. The main intention is to do what's needed to keep
+ // the unlowered Phi instructions consistent with the lowered
+ // non-Phi instructions, e.g. to lower 64-bit operands on a 32-bit
+ // target.
+ virtual void prelowerPhis() {}
+ // Lowers a list of "parallel" assignment instructions representing
+ // a topological sort of the Phi instructions.
+ virtual void lowerPhiAssignments(CfgNode *Node,
+ const AssignList &Assignments) = 0;
// Tries to do branch optimization on a single instruction. Returns
// true if some optimization was done.
virtual bool doBranchOpt(Inst * /*I*/, const CfgNode * /*NextNode*/) {
« no previous file with comments | « src/IceRegAlloc.cpp ('k') | src/IceTargetLowering.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698