OLD | NEW |
---|---|
1 //===- subzero/src/IceOperand.h - High-level operands -----------*- C++ -*-===// | 1 //===- subzero/src/IceOperand.h - High-level operands -----------*- 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 /// \file | 10 /// \file |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
505 | 505 |
506 void setMustHaveReg() { RegRequirement = RR_MustHaveRegister; } | 506 void setMustHaveReg() { RegRequirement = RR_MustHaveRegister; } |
507 bool mustHaveReg() const { return RegRequirement == RR_MustHaveRegister; } | 507 bool mustHaveReg() const { return RegRequirement == RR_MustHaveRegister; } |
508 void setMustNotHaveReg() { RegRequirement = RR_MustNotHaveRegister; } | 508 void setMustNotHaveReg() { RegRequirement = RR_MustNotHaveRegister; } |
509 bool mustNotHaveReg() const { | 509 bool mustNotHaveReg() const { |
510 return RegRequirement == RR_MustNotHaveRegister; | 510 return RegRequirement == RR_MustNotHaveRegister; |
511 } | 511 } |
512 | 512 |
513 void setRegClass(uint8_t RC) { RegisterClass = static_cast<RegClass>(RC); } | 513 void setRegClass(uint8_t RC) { RegisterClass = static_cast<RegClass>(RC); } |
514 RegClass getRegClass() const { return RegisterClass; } | 514 RegClass getRegClass() const { return RegisterClass; } |
515 void setRematerializable(int32_t NewRegNum, int32_t NewOffset) { | |
Jim Stichnoth
2015/11/11 17:39:45
I would group these methods with the RegRequiremen
sehr
2015/11/11 22:14:10
Done.
| |
516 IsRematerializable = true; | |
517 setRegNum(NewRegNum); | |
518 setStackOffset(NewOffset); | |
519 setMustHaveReg(); | |
520 } | |
521 bool isRematerializable() const { return IsRematerializable; } | |
515 | 522 |
516 LiveRange &getLiveRange() { return Live; } | 523 LiveRange &getLiveRange() { return Live; } |
517 const LiveRange &getLiveRange() const { return Live; } | 524 const LiveRange &getLiveRange() const { return Live; } |
518 void setLiveRange(const LiveRange &Range) { Live = Range; } | 525 void setLiveRange(const LiveRange &Range) { Live = Range; } |
519 void resetLiveRange() { Live.reset(); } | 526 void resetLiveRange() { Live.reset(); } |
520 void addLiveRange(InstNumberT Start, InstNumberT End) { | 527 void addLiveRange(InstNumberT Start, InstNumberT End) { |
521 assert(!getIgnoreLiveness()); | 528 assert(!getIgnoreLiveness()); |
522 Live.addSegment(Start, End); | 529 Live.addSegment(Start, End); |
523 } | 530 } |
524 void trimLiveRange(InstNumberT Start) { Live.trim(Start); } | 531 void trimLiveRange(InstNumberT Start) { Live.trim(Start); } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
566 /// Number is unique across all variables, and is used as a (bit)vector index | 573 /// Number is unique across all variables, and is used as a (bit)vector index |
567 /// for liveness analysis. | 574 /// for liveness analysis. |
568 const SizeT Number; | 575 const SizeT Number; |
569 Cfg::IdentifierIndexType NameIndex = Cfg::IdentifierIndexInvalid; | 576 Cfg::IdentifierIndexType NameIndex = Cfg::IdentifierIndexInvalid; |
570 bool IsArgument = false; | 577 bool IsArgument = false; |
571 bool IsImplicitArgument = false; | 578 bool IsImplicitArgument = false; |
572 /// IgnoreLiveness means that the variable should be ignored when constructing | 579 /// IgnoreLiveness means that the variable should be ignored when constructing |
573 /// and validating live ranges. This is usually reserved for the stack | 580 /// and validating live ranges. This is usually reserved for the stack |
574 /// pointer and other physical registers specifically referenced by name. | 581 /// pointer and other physical registers specifically referenced by name. |
575 bool IgnoreLiveness = false; | 582 bool IgnoreLiveness = false; |
583 // If IsRematerializable, RegNum keeps track of which register (stack or frame | |
584 // pointer), plus and StackOffset is the known offset from that register. | |
Jim Stichnoth
2015/11/11 17:39:45
s/plus and/and/
sehr
2015/11/11 22:14:10
Done.
| |
585 bool IsRematerializable = false; | |
576 RegRequirement RegRequirement = RR_MayHaveRegister; | 586 RegRequirement RegRequirement = RR_MayHaveRegister; |
577 RegClass RegisterClass; | 587 RegClass RegisterClass; |
578 /// RegNum is the allocated register, or NoRegister if it isn't | 588 /// RegNum is the allocated register, or NoRegister if it isn't |
579 /// register-allocated. | 589 /// register-allocated. |
580 int32_t RegNum = NoRegister; | 590 int32_t RegNum = NoRegister; |
581 /// RegNumTmp is the tentative assignment during register allocation. | 591 /// RegNumTmp is the tentative assignment during register allocation. |
582 int32_t RegNumTmp = NoRegister; | 592 int32_t RegNumTmp = NoRegister; |
583 /// StackOffset is the canonical location on stack (only if | 593 /// StackOffset is the canonical location on stack (only if |
584 /// RegNum==NoRegister || IsArgument). | 594 /// RegNum==NoRegister || IsArgument). |
585 int32_t StackOffset = 0; | 595 int32_t StackOffset = 0; |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
757 private: | 767 private: |
758 const Cfg *Func; | 768 const Cfg *Func; |
759 MetadataKind Kind; | 769 MetadataKind Kind; |
760 CfgVector<VariableTracking> Metadata; | 770 CfgVector<VariableTracking> Metadata; |
761 const static InstDefList NoDefinitions; | 771 const static InstDefList NoDefinitions; |
762 }; | 772 }; |
763 | 773 |
764 } // end of namespace Ice | 774 } // end of namespace Ice |
765 | 775 |
766 #endif // SUBZERO_SRC_ICEOPERAND_H | 776 #endif // SUBZERO_SRC_ICEOPERAND_H |
OLD | NEW |