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

Side by Side Diff: src/IceInst.cpp

Issue 1392383003: Subzero: Consider all instruction variables for register preference. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Created 5 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 unified diff | Download patch
OLDNEW
1 //===- subzero/src/IceInst.cpp - High-level instruction implementation ----===// 1 //===- subzero/src/IceInst.cpp - High-level instruction implementation ----===//
2 // 2 //
3 // The Subzero Code Generator 3 // The Subzero Code Generator
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 /// 9 ///
10 /// \file 10 /// \file
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 242
243 bool InstArithmetic::isCommutative() const { 243 bool InstArithmetic::isCommutative() const {
244 return InstArithmeticAttributes[getOp()].IsCommutative; 244 return InstArithmeticAttributes[getOp()].IsCommutative;
245 } 245 }
246 246
247 InstAssign::InstAssign(Cfg *Func, Variable *Dest, Operand *Source) 247 InstAssign::InstAssign(Cfg *Func, Variable *Dest, Operand *Source)
248 : InstHighLevel(Func, Inst::Assign, 1, Dest) { 248 : InstHighLevel(Func, Inst::Assign, 1, Dest) {
249 addSource(Source); 249 addSource(Source);
250 } 250 }
251 251
252 bool InstAssign::isVarAssign() const { return llvm::isa<Variable>(getSrc(0)); }
253
252 // If TargetTrue==TargetFalse, we turn it into an unconditional branch. This 254 // If TargetTrue==TargetFalse, we turn it into an unconditional branch. This
253 // ensures that, along with the 'switch' instruction semantics, there is at 255 // ensures that, along with the 'switch' instruction semantics, there is at
254 // most one edge from one node to another. 256 // most one edge from one node to another.
255 InstBr::InstBr(Cfg *Func, Operand *Source, CfgNode *TargetTrue_, 257 InstBr::InstBr(Cfg *Func, Operand *Source, CfgNode *TargetTrue_,
256 CfgNode *TargetFalse_) 258 CfgNode *TargetFalse_)
257 : InstHighLevel(Func, Inst::Br, 1, nullptr), TargetFalse(TargetFalse_), 259 : InstHighLevel(Func, Inst::Br, 1, nullptr), TargetFalse(TargetFalse_),
258 TargetTrue(TargetTrue_) { 260 TargetTrue(TargetTrue_) {
259 if (TargetTrue == TargetFalse) { 261 if (TargetTrue == TargetFalse) {
260 TargetTrue = nullptr; // turn into unconditional version 262 TargetTrue = nullptr; // turn into unconditional version
261 } else { 263 } else {
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after
953 // upper 32 bits of rax. We need to recognize and preserve these. 955 // upper 32 bits of rax. We need to recognize and preserve these.
954 return true; 956 return true;
955 } 957 }
956 if (!Dest->hasReg() && !SrcVar->hasReg() && 958 if (!Dest->hasReg() && !SrcVar->hasReg() &&
957 Dest->getStackOffset() == SrcVar->getStackOffset()) 959 Dest->getStackOffset() == SrcVar->getStackOffset())
958 return true; 960 return true;
959 return false; 961 return false;
960 } 962 }
961 963
962 } // end of namespace Ice 964 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceInst.h ('k') | src/IceInstARM32.h » ('j') | src/IceInstARM32.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698