Index: src/IceRegistersX8632.h |
diff --git a/src/IceRegistersX8632.h b/src/IceRegistersX8632.h |
index 851908c3af7525b13764bcbdc845436cd761d4b7..86ace82533abdd46c013f7c8c214f584862084b5 100644 |
--- a/src/IceRegistersX8632.h |
+++ b/src/IceRegistersX8632.h |
@@ -36,7 +36,7 @@ enum AllRegisters { |
#undef X |
}; |
-// An enum of GPR Registers. The enum value does match encoding used |
+// An enum of GPR Registers. The enum value does match the encoding used |
// to binary encode register operands in instructions. |
enum GPRRegister { |
#define X(val, encode, name, name16, name8, scratch, preserved, stackptr, \ |
@@ -47,7 +47,7 @@ enum GPRRegister { |
Encoded_Not_GPR = -1 |
}; |
-// An enum of XMM Registers. The enum value does match encoding used |
+// An enum of XMM Registers. The enum value does match the encoding used |
// to binary encode register operands in instructions. |
enum XmmRegister { |
#define X(val, encode, name, name16, name8, scratch, preserved, stackptr, \ |
@@ -58,7 +58,7 @@ enum XmmRegister { |
Encoded_Not_Xmm = -1 |
}; |
-// An enum of Byte Registers. The enum value does match encoding used |
+// An enum of Byte Registers. The enum value does match the encoding used |
// to binary encode register operands in instructions. |
enum ByteRegister { |
#define X(val, encode) Encoded_##val encode, |
@@ -67,6 +67,15 @@ enum ByteRegister { |
Encoded_Not_ByteReg = -1 |
}; |
+// An enum of X87 Stack Registers. The enum value does match the encoding used |
+// to binary encode register operands in instructions. |
+enum X87STRegister { |
+#define X(val, encode, name) Encoded_##val encode, |
+ X87ST_REGX8632_TABLE |
+#undef X |
+ Encoded_Not_X87STReg = -1 |
+}; |
+ |
static inline GPRRegister getEncodedGPR(int32_t RegNum) { |
assert(Reg_GPR_First <= RegNum && RegNum <= Reg_GPR_Last); |
return GPRRegister(RegNum - Reg_GPR_First); |
@@ -91,6 +100,11 @@ static inline GPRRegister getEncodedByteRegOrGPR(Type Ty, int32_t RegNum) { |
return getEncodedGPR(RegNum); |
} |
+static inline X87STRegister getEncodedSTReg(int32_t RegNum) { |
+ assert(Encoded_X87ST_First <= RegNum && RegNum <= Encoded_X87ST_Last); |
+ return X87STRegister(RegNum); |
+} |
+ |
} // end of namespace RegX8632 |
} // end of namespace Ice |