Chromium Code Reviews

Side by Side Diff: src/IceCfgNode.cpp

Issue 476323004: Start adding an integrated assembler. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: make fixups part of address Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « src/IceCfg.cpp ('k') | src/IceClFlags.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 //===- subzero/src/IceCfgNode.cpp - Basic block (node) implementation -----===// 1 //===- subzero/src/IceCfgNode.cpp - Basic block (node) 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 // This file implements the CfgNode class, including the complexities 10 // This file implements the CfgNode class, including the complexities
(...skipping 464 matching lines...)
475 } 475 }
476 for (InstList::const_iterator I = Insts.begin(), E = Insts.end(); I != E; 476 for (InstList::const_iterator I = Insts.begin(), E = Insts.end(); I != E;
477 ++I) { 477 ++I) {
478 Inst *Inst = *I; 478 Inst *Inst = *I;
479 if (Inst->isDeleted()) 479 if (Inst->isDeleted())
480 continue; 480 continue;
481 // Here we detect redundant assignments like "mov eax, eax" and 481 // Here we detect redundant assignments like "mov eax, eax" and
482 // suppress them. 482 // suppress them.
483 if (Inst->isRedundantAssign()) 483 if (Inst->isRedundantAssign())
484 continue; 484 continue;
485 (*I)->emit(Func); 485 if (Func->UseIntegratedAssembler()) {
486 (*I)->emitIAS(Func);
487 } else {
488 (*I)->emit(Func);
489 }
486 } 490 }
487 } 491 }
488 492
489 void CfgNode::dump(Cfg *Func) const { 493 void CfgNode::dump(Cfg *Func) const {
490 Func->setCurrentNode(this); 494 Func->setCurrentNode(this);
491 Ostream &Str = Func->getContext()->getStrDump(); 495 Ostream &Str = Func->getContext()->getStrDump();
492 Liveness *Liveness = Func->getLiveness(); 496 Liveness *Liveness = Func->getLiveness();
493 if (Func->getContext()->isVerbose(IceV_Instructions)) { 497 if (Func->getContext()->isVerbose(IceV_Instructions)) {
494 Str << getName() << ":\n"; 498 Str << getName() << ":\n";
495 } 499 }
(...skipping 54 matching lines...)
550 I != E; ++I) { 554 I != E; ++I) {
551 if (I != OutEdges.begin()) 555 if (I != OutEdges.begin())
552 Str << ", "; 556 Str << ", ";
553 Str << "%" << (*I)->getName(); 557 Str << "%" << (*I)->getName();
554 } 558 }
555 Str << "\n"; 559 Str << "\n";
556 } 560 }
557 } 561 }
558 562
559 } // end of namespace Ice 563 } // end of namespace Ice
OLDNEW
« no previous file with comments | « src/IceCfg.cpp ('k') | src/IceClFlags.h » ('j') | no next file with comments »

Powered by Google App Engine