| OLD | NEW |
| 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- C++ -*-===// | 1 //===- subzero/src/IceTargetLowering.h - Lowering interface -----*- 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 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 314 virtual void emit(const ConstantUndef *C) const = 0; | 314 virtual void emit(const ConstantUndef *C) const = 0; |
| 315 virtual void emit(const ConstantRelocatable *CR) const = 0; | 315 virtual void emit(const ConstantRelocatable *CR) const = 0; |
| 316 | 316 |
| 317 /// Performs target-specific argument lowering. | 317 /// Performs target-specific argument lowering. |
| 318 virtual void lowerArguments() = 0; | 318 virtual void lowerArguments() = 0; |
| 319 | 319 |
| 320 virtual void initNodeForLowering(CfgNode *) {} | 320 virtual void initNodeForLowering(CfgNode *) {} |
| 321 virtual void addProlog(CfgNode *Node) = 0; | 321 virtual void addProlog(CfgNode *Node) = 0; |
| 322 virtual void addEpilog(CfgNode *Node) = 0; | 322 virtual void addEpilog(CfgNode *Node) = 0; |
| 323 | 323 |
| 324 /// Create a properly-typed "mov" instruction. This is primarily for local |
| 325 /// variable splitting. |
| 326 virtual Inst *createLoweredMove(Variable *Dest, Variable *SrcVar) { |
| 327 // TODO(stichnot): make pure virtual by implementing for all targets |
| 328 (void)Dest; |
| 329 (void)SrcVar; |
| 330 llvm::report_fatal_error("createLoweredMove() unimplemented"); |
| 331 return nullptr; |
| 332 } |
| 333 |
| 324 virtual ~TargetLowering() = default; | 334 virtual ~TargetLowering() = default; |
| 325 | 335 |
| 326 private: | 336 private: |
| 327 // This control variable is used by AutoBundle (RAII-style bundle | 337 // This control variable is used by AutoBundle (RAII-style bundle |
| 328 // locking/unlocking) to prevent nested bundles. | 338 // locking/unlocking) to prevent nested bundles. |
| 329 bool AutoBundling = false; | 339 bool AutoBundling = false; |
| 330 | 340 |
| 331 /// This indicates whether we are in the genTargetHelperCalls phase, and | 341 /// This indicates whether we are in the genTargetHelperCalls phase, and |
| 332 /// therefore can do things like scalarization. | 342 /// therefore can do things like scalarization. |
| 333 bool GeneratingTargetHelpers = false; | 343 bool GeneratingTargetHelpers = false; |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 virtual void lower() {} | 631 virtual void lower() {} |
| 622 | 632 |
| 623 protected: | 633 protected: |
| 624 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {} | 634 explicit TargetHeaderLowering(GlobalContext *Ctx) : Ctx(Ctx) {} |
| 625 GlobalContext *Ctx; | 635 GlobalContext *Ctx; |
| 626 }; | 636 }; |
| 627 | 637 |
| 628 } // end of namespace Ice | 638 } // end of namespace Ice |
| 629 | 639 |
| 630 #endif // SUBZERO_SRC_ICETARGETLOWERING_H | 640 #endif // SUBZERO_SRC_ICETARGETLOWERING_H |
| OLD | NEW |