OLD | NEW |
1 //===- subzero/src/IceRegistersMIPS32.h - Register information --*- C++ -*-===// | 1 //===- subzero/src/IceRegistersMIPS32.h - Register information --*- 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 | 89 |
90 const char *getRegName(RegNumT RegNum); | 90 const char *getRegName(RegNumT RegNum); |
91 | 91 |
92 static inline RegNumT get64PairFirstRegNum(RegNumT RegNum) { | 92 static inline RegNumT get64PairFirstRegNum(RegNumT RegNum) { |
93 assert(unsigned(RegNum) >= Reg_I64PAIR_First); | 93 assert(unsigned(RegNum) >= Reg_I64PAIR_First); |
94 assert(unsigned(RegNum) <= Reg_F64PAIR_Last); | 94 assert(unsigned(RegNum) <= Reg_F64PAIR_Last); |
95 if (unsigned(RegNum) >= Reg_F64PAIR_First && | 95 if (unsigned(RegNum) >= Reg_F64PAIR_First && |
96 unsigned(RegNum) <= Reg_F64PAIR_Last) | 96 unsigned(RegNum) <= Reg_F64PAIR_Last) |
97 return RegNumT::fixme(((RegNum - Reg_F64PAIR_First) * 2) + | 97 return RegNumT::fixme(((RegNum - Reg_F64PAIR_First) * 2) + |
98 unsigned(Reg_FPR_First)); | 98 unsigned(Reg_FPR_First)); |
99 if (unsigned(RegNum) >= Reg_I64PAIR_First && | 99 if (unsigned(RegNum) >= Reg_I64PAIR_First && unsigned(RegNum) <= Reg_T8T9) |
100 unsigned(RegNum) <= Reg_T8T9) | |
101 return RegNumT::fixme(((RegNum - Reg_I64PAIR_First) * 2) + | 100 return RegNumT::fixme(((RegNum - Reg_I64PAIR_First) * 2) + |
102 unsigned(Reg_V0)); | 101 unsigned(Reg_V0)); |
103 return RegMIPS32::Reg_LO; | 102 return RegMIPS32::Reg_LO; |
104 } | 103 } |
105 | 104 |
106 static inline RegNumT get64PairSecondRegNum(RegNumT RegNum) { | 105 static inline RegNumT get64PairSecondRegNum(RegNumT RegNum) { |
107 assert(unsigned(RegNum) >= Reg_I64PAIR_First); | 106 assert(unsigned(RegNum) >= Reg_I64PAIR_First); |
108 assert(unsigned(RegNum) <= Reg_F64PAIR_Last); | 107 assert(unsigned(RegNum) <= Reg_F64PAIR_Last); |
109 if (unsigned(RegNum) >= Reg_F64PAIR_First && | 108 if (unsigned(RegNum) >= Reg_F64PAIR_First && |
110 unsigned(RegNum) <= Reg_F64PAIR_Last) | 109 unsigned(RegNum) <= Reg_F64PAIR_Last) |
111 return RegNumT::fixme(((RegNum - Reg_F64PAIR_First) * 2) + | 110 return RegNumT::fixme(((RegNum - Reg_F64PAIR_First) * 2) + |
112 unsigned(Reg_FPR_First) + 1); | 111 unsigned(Reg_FPR_First) + 1); |
113 if (unsigned(RegNum) >= Reg_I64PAIR_First && | 112 if (unsigned(RegNum) >= Reg_I64PAIR_First && unsigned(RegNum) <= Reg_T8T9) |
114 unsigned(RegNum) <= Reg_T8T9) | |
115 return RegNumT::fixme(((RegNum - Reg_I64PAIR_First) * 2) + | 113 return RegNumT::fixme(((RegNum - Reg_I64PAIR_First) * 2) + |
116 unsigned(Reg_V1)); | 114 unsigned(Reg_V1)); |
117 return RegMIPS32::Reg_HI; | 115 return RegMIPS32::Reg_HI; |
118 } | 116 } |
119 | 117 |
120 } // end of namespace RegMIPS32 | 118 } // end of namespace RegMIPS32 |
121 | 119 |
122 // Extend enum RegClass with MIPS32-specific register classes (if any). | 120 // Extend enum RegClass with MIPS32-specific register classes (if any). |
123 enum RegClassMIPS32 : uint8_t { RCMIPS32_NUM = RC_Target }; | 121 enum RegClassMIPS32 : uint8_t { RCMIPS32_NUM = RC_Target }; |
124 | 122 |
125 } // end of namespace MIPS32 | 123 } // end of namespace MIPS32 |
126 } // end of namespace Ice | 124 } // end of namespace Ice |
127 | 125 |
128 #endif // SUBZERO_SRC_ICEREGISTERSMIPS32_H | 126 #endif // SUBZERO_SRC_ICEREGISTERSMIPS32_H |
OLD | NEW |