OLD | NEW |
1 //===- subzero/src/IceInstX86Base.h - Generic x86 instructions -*- C++ -*--===// | 1 //===- subzero/src/IceInstX86Base.h - Generic x86 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 /// \file | 10 /// \file |
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 InstX86Label(const InstX86Label &) = delete; | 330 InstX86Label(const InstX86Label &) = delete; |
331 InstX86Label &operator=(const InstX86Label &) = delete; | 331 InstX86Label &operator=(const InstX86Label &) = delete; |
332 | 332 |
333 public: | 333 public: |
334 static InstX86Label *create(Cfg *Func, TargetLowering *Target) { | 334 static InstX86Label *create(Cfg *Func, TargetLowering *Target) { |
335 return new (Func->allocate<InstX86Label>()) InstX86Label(Func, Target); | 335 return new (Func->allocate<InstX86Label>()) InstX86Label(Func, Target); |
336 } | 336 } |
337 uint32_t getEmitInstCount() const override { return 0; } | 337 uint32_t getEmitInstCount() const override { return 0; } |
338 GlobalString getLabelName() const { return Name; } | 338 GlobalString getLabelName() const { return Name; } |
339 SizeT getLabelNumber() const { return LabelNumber; } | 339 SizeT getLabelNumber() const { return LabelNumber; } |
| 340 bool isLabel() const override { return true; } |
340 void emit(const Cfg *Func) const override; | 341 void emit(const Cfg *Func) const override; |
341 void emitIAS(const Cfg *Func) const override; | 342 void emitIAS(const Cfg *Func) const override; |
342 void dump(const Cfg *Func) const override; | 343 void dump(const Cfg *Func) const override; |
343 void setRelocOffset(RelocOffset *Value) { OffsetReloc = Value; } | 344 void setRelocOffset(RelocOffset *Value) { OffsetReloc = Value; } |
344 | 345 |
345 private: | 346 private: |
346 InstX86Label(Cfg *Func, TargetLowering *Target); | 347 InstX86Label(Cfg *Func, TargetLowering *Target); |
347 | 348 |
348 SizeT LabelNumber; // used for unique label generation. | 349 SizeT LabelNumber; // used for unique label generation. |
349 RelocOffset *OffsetReloc = nullptr; | 350 RelocOffset *OffsetReloc = nullptr; |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 ++Sum; | 406 ++Sum; |
406 if (getTargetTrue()) | 407 if (getTargetTrue()) |
407 ++Sum; | 408 ++Sum; |
408 if (getTargetFalse()) | 409 if (getTargetFalse()) |
409 ++Sum; | 410 ++Sum; |
410 return Sum; | 411 return Sum; |
411 } | 412 } |
412 bool isUnconditionalBranch() const override { | 413 bool isUnconditionalBranch() const override { |
413 return !Label && Condition == Cond::Br_None; | 414 return !Label && Condition == Cond::Br_None; |
414 } | 415 } |
| 416 const Inst *getIntraBlockBranchTarget() const override { return Label; } |
415 bool repointEdges(CfgNode *OldNode, CfgNode *NewNode) override; | 417 bool repointEdges(CfgNode *OldNode, CfgNode *NewNode) override; |
416 void emit(const Cfg *Func) const override; | 418 void emit(const Cfg *Func) const override; |
417 void emitIAS(const Cfg *Func) const override; | 419 void emitIAS(const Cfg *Func) const override; |
418 void dump(const Cfg *Func) const override; | 420 void dump(const Cfg *Func) const override; |
419 static bool classof(const Inst *Instr) { | 421 static bool classof(const Inst *Instr) { |
420 return InstX86Base::isClassof(Instr, InstX86Base::Br); | 422 return InstX86Base::isClassof(Instr, InstX86Base::Br); |
421 } | 423 } |
422 | 424 |
423 private: | 425 private: |
424 InstX86Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse, | 426 InstX86Br(Cfg *Func, const CfgNode *TargetTrue, const CfgNode *TargetFalse, |
(...skipping 3186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3611 &InstImpl<TraitsType>::Assembler::punpckldq}; \ | 3613 &InstImpl<TraitsType>::Assembler::punpckldq}; \ |
3612 } \ | 3614 } \ |
3613 } | 3615 } |
3614 | 3616 |
3615 } // end of namespace X86NAMESPACE | 3617 } // end of namespace X86NAMESPACE |
3616 } // end of namespace Ice | 3618 } // end of namespace Ice |
3617 | 3619 |
3618 #include "IceInstX86BaseImpl.h" | 3620 #include "IceInstX86BaseImpl.h" |
3619 | 3621 |
3620 #endif // SUBZERO_SRC_ICEINSTX86BASE_H | 3622 #endif // SUBZERO_SRC_ICEINSTX86BASE_H |
OLD | NEW |