OLD | NEW |
1 //===- subzero/src/IceRegistersX8632.h - Register information ---*- C++ -*-===// | 1 //===- subzero/src/IceRegistersX8632.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 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 /// An enum of X87 Stack Registers. The enum value does match the encoding | 71 /// An enum of X87 Stack Registers. The enum value does match the encoding |
72 /// used to binary encode register operands in instructions. | 72 /// used to binary encode register operands in instructions. |
73 enum X87STRegister { | 73 enum X87STRegister { |
74 #define X(val, encode, name) Encoded_##val encode, | 74 #define X(val, encode, name) Encoded_##val encode, |
75 X87ST_REGX8632_TABLE | 75 X87ST_REGX8632_TABLE |
76 #undef X | 76 #undef X |
77 Encoded_Not_X87STReg = -1 | 77 Encoded_Not_X87STReg = -1 |
78 }; | 78 }; |
79 | 79 |
80 static inline GPRRegister getEncodedGPR(int32_t RegNum) { | 80 static inline GPRRegister getEncodedGPR(int32_t RegNum) { |
81 assert(Reg_GPR_First <= RegNum && RegNum <= Reg_GPR_Last); | 81 assert(Reg_GPR_First <= RegNum); |
| 82 assert(RegNum <= Reg_GPR_Last); |
82 return GPRRegister(RegNum - Reg_GPR_First); | 83 return GPRRegister(RegNum - Reg_GPR_First); |
83 } | 84 } |
84 | 85 |
85 static inline XmmRegister getEncodedXmm(int32_t RegNum) { | 86 static inline XmmRegister getEncodedXmm(int32_t RegNum) { |
86 assert(Reg_XMM_First <= RegNum && RegNum <= Reg_XMM_Last); | 87 assert(Reg_XMM_First <= RegNum); |
| 88 assert(RegNum <= Reg_XMM_Last); |
87 return XmmRegister(RegNum - Reg_XMM_First); | 89 return XmmRegister(RegNum - Reg_XMM_First); |
88 } | 90 } |
89 | 91 |
90 static inline ByteRegister getEncodedByteReg(int32_t RegNum) { | 92 static inline ByteRegister getEncodedByteReg(int32_t RegNum) { |
91 assert(RegNum == Reg_ah || (Reg_GPR_First <= RegNum && RegNum <= Reg_ebx)); | 93 assert(Reg_GPR_First <= RegNum); |
92 if (RegNum == Reg_ah) | 94 assert(RegNum <= Reg_ebx); |
93 return Encoded_Reg_ah; | |
94 return ByteRegister(RegNum - Reg_GPR_First); | 95 return ByteRegister(RegNum - Reg_GPR_First); |
95 } | 96 } |
96 | 97 |
97 static inline GPRRegister getEncodedByteRegOrGPR(Type Ty, int32_t RegNum) { | 98 static inline GPRRegister getEncodedByteRegOrGPR(Type Ty, int32_t RegNum) { |
98 if (isByteSizedType(Ty)) | 99 if (isByteSizedType(Ty)) |
99 return GPRRegister(getEncodedByteReg(RegNum)); | 100 return GPRRegister(getEncodedByteReg(RegNum)); |
100 else | 101 else |
101 return getEncodedGPR(RegNum); | 102 return getEncodedGPR(RegNum); |
102 } | 103 } |
103 | 104 |
104 static inline X87STRegister getEncodedSTReg(int32_t RegNum) { | 105 static inline X87STRegister getEncodedSTReg(int32_t RegNum) { |
105 assert(Encoded_X87ST_First <= RegNum && RegNum <= Encoded_X87ST_Last); | 106 assert(Encoded_X87ST_First <= RegNum); |
| 107 assert(RegNum <= Encoded_X87ST_Last); |
106 return X87STRegister(RegNum); | 108 return X87STRegister(RegNum); |
107 } | 109 } |
108 }; | 110 }; |
109 | 111 |
110 } // end of namespace Ice | 112 } // end of namespace Ice |
111 | 113 |
112 #endif // SUBZERO_SRC_ICEREGISTERSX8632_H | 114 #endif // SUBZERO_SRC_ICEREGISTERSX8632_H |
OLD | NEW |