Index: src/IceInstX8632.def |
diff --git a/src/IceInstX8632.def b/src/IceInstX8632.def |
index e8ba59a5b39a5d43ea0019dbdccb959504e20aab..8e7df0552657e8b5a3a6ea392d4f9eb5ac4f15c6 100644 |
--- a/src/IceInstX8632.def |
+++ b/src/IceInstX8632.def |
@@ -44,11 +44,16 @@ |
// all of the registers are considered and have distinct numberings. |
// This is in contrast to the above, where the "encode" is based on how |
// the register numbers will be encoded in binaries and values can overlap. |
+// Note that the isI8 attributed of Reg_ah is not set. In general we |
+// don't want the register allocator choosing Reg_ah, in particular |
+// for lowering insertelement to pinsrb where internally we use an |
+// 8-bit operand but externally pinsrb uses a 32-bit register, in |
+// which Reg_ah doesn't map to eax. |
#define REGX8632_TABLE \ |
/* val, encode, name, name16, name8, scratch, preserved, stackptr, \ |
frameptr, isI8, isInt, isFP */ \ |
REGX8632_GPR_TABLE \ |
- X(Reg_ah, = Reg_eax + 4, "???", "" , "ah", 0, 0, 0, 0, 1, 0, 0) \ |
+ X(Reg_ah, = Reg_eax + 4, "???", "" , "ah", 0, 0, 0, 0, 0, 0, 0) \ |
REGX8632_XMM_TABLE |
//#define X(val, encode, name, name16, name8, scratch, preserved, stackptr, |
// frameptr, isI8, isInt, isFP) |