OLD | NEW |
1 //===- subzero/src/IceInst.h - High-level instructions ----------*- C++ -*-===// | 1 //===- subzero/src/IceInst.h - High-level instructions ----------*- C++ -*-===// |
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 declares the Inst class and its target-independent | 10 // This file declares the Inst class and its target-independent |
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
474 Info(Info) {} | 474 Info(Info) {} |
475 InstIntrinsicCall(const InstIntrinsicCall &) LLVM_DELETED_FUNCTION; | 475 InstIntrinsicCall(const InstIntrinsicCall &) LLVM_DELETED_FUNCTION; |
476 InstIntrinsicCall &operator=(const InstIntrinsicCall &) LLVM_DELETED_FUNCTION; | 476 InstIntrinsicCall &operator=(const InstIntrinsicCall &) LLVM_DELETED_FUNCTION; |
477 virtual ~InstIntrinsicCall() {} | 477 virtual ~InstIntrinsicCall() {} |
478 const Intrinsics::IntrinsicInfo Info; | 478 const Intrinsics::IntrinsicInfo Info; |
479 }; | 479 }; |
480 | 480 |
481 // Load instruction. The source address is captured in getSrc(0). | 481 // Load instruction. The source address is captured in getSrc(0). |
482 class InstLoad : public Inst { | 482 class InstLoad : public Inst { |
483 public: | 483 public: |
484 static InstLoad *create(Cfg *Func, Variable *Dest, Operand *SourceAddr) { | 484 static InstLoad *create(Cfg *Func, Variable *Dest, Operand *SourceAddr, |
| 485 uint32_t align = 1) { |
| 486 // TODO(kschimpf) Stop ignoring alignment specification. |
| 487 (void)align; |
485 return new (Func->allocateInst<InstLoad>()) | 488 return new (Func->allocateInst<InstLoad>()) |
486 InstLoad(Func, Dest, SourceAddr); | 489 InstLoad(Func, Dest, SourceAddr); |
487 } | 490 } |
488 Operand *getSourceAddress() const { return getSrc(0); } | 491 Operand *getSourceAddress() const { return getSrc(0); } |
489 virtual void dump(const Cfg *Func) const; | 492 virtual void dump(const Cfg *Func) const; |
490 static bool classof(const Inst *Inst) { return Inst->getKind() == Load; } | 493 static bool classof(const Inst *Inst) { return Inst->getKind() == Load; } |
491 | 494 |
492 private: | 495 private: |
493 InstLoad(Cfg *Func, Variable *Dest, Operand *SourceAddr); | 496 InstLoad(Cfg *Func, Variable *Dest, Operand *SourceAddr); |
494 InstLoad(const InstLoad &) LLVM_DELETED_FUNCTION; | 497 InstLoad(const InstLoad &) LLVM_DELETED_FUNCTION; |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
570 Operand *Source2); | 573 Operand *Source2); |
571 InstSelect(const InstSelect &) LLVM_DELETED_FUNCTION; | 574 InstSelect(const InstSelect &) LLVM_DELETED_FUNCTION; |
572 InstSelect &operator=(const InstSelect &) LLVM_DELETED_FUNCTION; | 575 InstSelect &operator=(const InstSelect &) LLVM_DELETED_FUNCTION; |
573 virtual ~InstSelect() {} | 576 virtual ~InstSelect() {} |
574 }; | 577 }; |
575 | 578 |
576 // Store instruction. The address operand is captured, along with the | 579 // Store instruction. The address operand is captured, along with the |
577 // data operand to be stored into the address. | 580 // data operand to be stored into the address. |
578 class InstStore : public Inst { | 581 class InstStore : public Inst { |
579 public: | 582 public: |
580 static InstStore *create(Cfg *Func, Operand *Data, Operand *Addr) { | 583 static InstStore *create(Cfg *Func, Operand *Data, Operand *Addr, |
| 584 uint32_t align = 1) { |
| 585 // TODO(kschimpf) Stop ignoring alignment specification. |
| 586 (void)align; |
581 return new (Func->allocateInst<InstStore>()) InstStore(Func, Data, Addr); | 587 return new (Func->allocateInst<InstStore>()) InstStore(Func, Data, Addr); |
582 } | 588 } |
583 Operand *getAddr() const { return getSrc(1); } | 589 Operand *getAddr() const { return getSrc(1); } |
584 Operand *getData() const { return getSrc(0); } | 590 Operand *getData() const { return getSrc(0); } |
585 virtual void dump(const Cfg *Func) const; | 591 virtual void dump(const Cfg *Func) const; |
586 static bool classof(const Inst *Inst) { return Inst->getKind() == Store; } | 592 static bool classof(const Inst *Inst) { return Inst->getKind() == Store; } |
587 | 593 |
588 private: | 594 private: |
589 InstStore(Cfg *Func, Operand *Data, Operand *Addr); | 595 InstStore(Cfg *Func, Operand *Data, Operand *Addr); |
590 InstStore(const InstStore &) LLVM_DELETED_FUNCTION; | 596 InstStore(const InstStore &) LLVM_DELETED_FUNCTION; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
749 assert(Kind >= Target); | 755 assert(Kind >= Target); |
750 } | 756 } |
751 InstTarget(const InstTarget &) LLVM_DELETED_FUNCTION; | 757 InstTarget(const InstTarget &) LLVM_DELETED_FUNCTION; |
752 InstTarget &operator=(const InstTarget &) LLVM_DELETED_FUNCTION; | 758 InstTarget &operator=(const InstTarget &) LLVM_DELETED_FUNCTION; |
753 virtual ~InstTarget() {} | 759 virtual ~InstTarget() {} |
754 }; | 760 }; |
755 | 761 |
756 } // end of namespace Ice | 762 } // end of namespace Ice |
757 | 763 |
758 #endif // SUBZERO_SRC_ICEINST_H | 764 #endif // SUBZERO_SRC_ICEINST_H |
OLD | NEW |