OLD | NEW |
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 // This file implements the Inst class, primarily the various | 10 // This file implements the Inst class, primarily the various |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 if (TargetTrue) | 260 if (TargetTrue) |
261 OutEdges.push_back(TargetTrue); | 261 OutEdges.push_back(TargetTrue); |
262 return OutEdges; | 262 return OutEdges; |
263 } | 263 } |
264 | 264 |
265 InstCast::InstCast(Cfg *Func, OpKind CastKind, Variable *Dest, Operand *Source) | 265 InstCast::InstCast(Cfg *Func, OpKind CastKind, Variable *Dest, Operand *Source) |
266 : Inst(Func, Inst::Cast, 1, Dest), CastKind(CastKind) { | 266 : Inst(Func, Inst::Cast, 1, Dest), CastKind(CastKind) { |
267 addSource(Source); | 267 addSource(Source); |
268 } | 268 } |
269 | 269 |
| 270 InstExtractElement::InstExtractElement(Cfg *Func, Variable *Dest, |
| 271 Operand *Source1, Operand *Source2) |
| 272 : Inst(Func, Inst::ExtractElement, 2, Dest) { |
| 273 addSource(Source1); |
| 274 addSource(Source2); |
| 275 } |
| 276 |
270 InstFcmp::InstFcmp(Cfg *Func, FCond Condition, Variable *Dest, Operand *Source1, | 277 InstFcmp::InstFcmp(Cfg *Func, FCond Condition, Variable *Dest, Operand *Source1, |
271 Operand *Source2) | 278 Operand *Source2) |
272 : Inst(Func, Inst::Fcmp, 2, Dest), Condition(Condition) { | 279 : Inst(Func, Inst::Fcmp, 2, Dest), Condition(Condition) { |
273 addSource(Source1); | 280 addSource(Source1); |
274 addSource(Source2); | 281 addSource(Source2); |
275 } | 282 } |
276 | 283 |
277 InstIcmp::InstIcmp(Cfg *Func, ICond Condition, Variable *Dest, Operand *Source1, | 284 InstIcmp::InstIcmp(Cfg *Func, ICond Condition, Variable *Dest, Operand *Source1, |
278 Operand *Source2) | 285 Operand *Source2) |
279 : Inst(Func, Inst::Icmp, 2, Dest), Condition(Condition) { | 286 : Inst(Func, Inst::Icmp, 2, Dest), Condition(Condition) { |
280 addSource(Source1); | 287 addSource(Source1); |
281 addSource(Source2); | 288 addSource(Source2); |
282 } | 289 } |
283 | 290 |
| 291 InstInsertElement::InstInsertElement(Cfg *Func, Variable *Dest, |
| 292 Operand *Source1, Operand *Source2, |
| 293 Operand *Source3) |
| 294 : Inst(Func, Inst::InsertElement, 3, Dest) { |
| 295 addSource(Source1); |
| 296 addSource(Source2); |
| 297 addSource(Source3); |
| 298 } |
| 299 |
284 InstLoad::InstLoad(Cfg *Func, Variable *Dest, Operand *SourceAddr) | 300 InstLoad::InstLoad(Cfg *Func, Variable *Dest, Operand *SourceAddr) |
285 : Inst(Func, Inst::Load, 1, Dest) { | 301 : Inst(Func, Inst::Load, 1, Dest) { |
286 addSource(SourceAddr); | 302 addSource(SourceAddr); |
287 } | 303 } |
288 | 304 |
289 InstPhi::InstPhi(Cfg *Func, SizeT MaxSrcs, Variable *Dest) | 305 InstPhi::InstPhi(Cfg *Func, SizeT MaxSrcs, Variable *Dest) |
290 : Inst(Func, Phi, MaxSrcs, Dest) { | 306 : Inst(Func, Phi, MaxSrcs, Dest) { |
291 Labels = Func->allocateArrayOf<CfgNode *>(MaxSrcs); | 307 Labels = Func->allocateArrayOf<CfgNode *>(MaxSrcs); |
292 } | 308 } |
293 | 309 |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 } | 595 } |
580 | 596 |
581 void InstIcmp::dump(const Cfg *Func) const { | 597 void InstIcmp::dump(const Cfg *Func) const { |
582 Ostream &Str = Func->getContext()->getStrDump(); | 598 Ostream &Str = Func->getContext()->getStrDump(); |
583 dumpDest(Func); | 599 dumpDest(Func); |
584 Str << " = icmp " << InstIcmpAttributes[getCondition()].DisplayString << " " | 600 Str << " = icmp " << InstIcmpAttributes[getCondition()].DisplayString << " " |
585 << getSrc(0)->getType() << " "; | 601 << getSrc(0)->getType() << " "; |
586 dumpSources(Func); | 602 dumpSources(Func); |
587 } | 603 } |
588 | 604 |
| 605 void InstExtractElement::dump(const Cfg *Func) const { |
| 606 Ostream &Str = Func->getContext()->getStrDump(); |
| 607 dumpDest(Func); |
| 608 Str << " = extractelement "; |
| 609 Str << getSrc(0)->getType() << " "; |
| 610 getSrc(0)->dump(Func); |
| 611 Str << ", "; |
| 612 Str << getSrc(1)->getType() << " "; |
| 613 getSrc(1)->dump(Func); |
| 614 }; |
| 615 |
| 616 void InstInsertElement::dump(const Cfg *Func) const { |
| 617 Ostream &Str = Func->getContext()->getStrDump(); |
| 618 dumpDest(Func); |
| 619 Str << " = insertelement "; |
| 620 Str << getSrc(0)->getType() << " "; |
| 621 getSrc(0)->dump(Func); |
| 622 Str << ", "; |
| 623 Str << getSrc(1)->getType() << " "; |
| 624 getSrc(1)->dump(Func); |
| 625 Str << ", "; |
| 626 Str << getSrc(2)->getType() << " "; |
| 627 getSrc(2)->dump(Func); |
| 628 }; |
| 629 |
589 void InstFcmp::dump(const Cfg *Func) const { | 630 void InstFcmp::dump(const Cfg *Func) const { |
590 Ostream &Str = Func->getContext()->getStrDump(); | 631 Ostream &Str = Func->getContext()->getStrDump(); |
591 dumpDest(Func); | 632 dumpDest(Func); |
592 Str << " = fcmp " << InstFcmpAttributes[getCondition()].DisplayString << " " | 633 Str << " = fcmp " << InstFcmpAttributes[getCondition()].DisplayString << " " |
593 << getSrc(0)->getType() << " "; | 634 << getSrc(0)->getType() << " "; |
594 dumpSources(Func); | 635 dumpSources(Func); |
595 } | 636 } |
596 | 637 |
597 void InstLoad::dump(const Cfg *Func) const { | 638 void InstLoad::dump(const Cfg *Func) const { |
598 Ostream &Str = Func->getContext()->getStrDump(); | 639 Ostream &Str = Func->getContext()->getStrDump(); |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
718 | 759 |
719 void InstTarget::dump(const Cfg *Func) const { | 760 void InstTarget::dump(const Cfg *Func) const { |
720 Ostream &Str = Func->getContext()->getStrDump(); | 761 Ostream &Str = Func->getContext()->getStrDump(); |
721 Str << "[TARGET] "; | 762 Str << "[TARGET] "; |
722 Inst::dump(Func); | 763 Inst::dump(Func); |
723 } | 764 } |
724 | 765 |
725 void InstTarget::dumpExtras(const Cfg *Func) const { Inst::dumpExtras(Func); } | 766 void InstTarget::dumpExtras(const Cfg *Func) const { Inst::dumpExtras(Func); } |
726 | 767 |
727 } // end of namespace Ice | 768 } // end of namespace Ice |
OLD | NEW |