OLD | NEW |
1 //===- subzero/src/IceInstMIPS32.h - MIPS32 machine instrs --*- C++ -*-=== // | 1 //===- subzero/src/IceInstMIPS32.h - MIPS32 machine instrs --*- 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 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
507 private: | 507 private: |
508 InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src); | 508 InstMIPS32Mov(Cfg *Func, Variable *Dest, Operand *Src); |
509 | 509 |
510 void emitMultiDestSingleSource(const Cfg *Func) const; | 510 void emitMultiDestSingleSource(const Cfg *Func) const; |
511 void emitSingleDestMultiSource(const Cfg *Func) const; | 511 void emitSingleDestMultiSource(const Cfg *Func) const; |
512 void emitSingleDestSingleSource(const Cfg *Func) const; | 512 void emitSingleDestSingleSource(const Cfg *Func) const; |
513 | 513 |
514 Variable *DestHi = nullptr; | 514 Variable *DestHi = nullptr; |
515 }; | 515 }; |
516 | 516 |
| 517 // Declare partial template specializations of emit() methods that already have |
| 518 // default implementations. Without this, there is the possibility of ODR |
| 519 // violations and link errors. |
| 520 |
| 521 template <> void InstMIPS32Mflo::emit(const Cfg *Func) const; |
| 522 template <> void InstMIPS32Mfhi::emit(const Cfg *Func) const; |
| 523 template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const; |
| 524 template <> void InstMIPS32Mthi::emit(const Cfg *Func) const; |
| 525 template <> void InstMIPS32Mult::emit(const Cfg *Func) const; |
| 526 template <> void InstMIPS32Multu::emit(const Cfg *Func) const; |
| 527 |
517 } // end of namespace MIPS32 | 528 } // end of namespace MIPS32 |
518 } // end of namespace Ice | 529 } // end of namespace Ice |
519 | 530 |
520 #endif // SUBZERO_SRC_ICEINSTMIPS32_H | 531 #endif // SUBZERO_SRC_ICEINSTMIPS32_H |
OLD | NEW |