diff options
Diffstat (limited to 'src/lj_target_x86.h')
-rw-r--r-- | src/lj_target_x86.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/lj_target_x86.h b/src/lj_target_x86.h index 3ee4fa00..2fb3c4b8 100644 --- a/src/lj_target_x86.h +++ b/src/lj_target_x86.h | |||
@@ -32,6 +32,11 @@ enum { | |||
32 | 32 | ||
33 | /* Calling conventions. */ | 33 | /* Calling conventions. */ |
34 | RID_RET = RID_EAX, | 34 | RID_RET = RID_EAX, |
35 | #if LJ_64 | ||
36 | RID_FPRET = RID_XMM0, | ||
37 | #else | ||
38 | RID_RETHI = RID_EDX, | ||
39 | #endif | ||
35 | 40 | ||
36 | /* These definitions must match with the *.dasc file(s): */ | 41 | /* These definitions must match with the *.dasc file(s): */ |
37 | RID_BASE = RID_EDX, /* Interpreter BASE. */ | 42 | RID_BASE = RID_EDX, /* Interpreter BASE. */ |
@@ -98,8 +103,8 @@ enum { | |||
98 | }; | 103 | }; |
99 | 104 | ||
100 | /* Spill slots are 32 bit wide. An even/odd pair is used for FPRs. */ | 105 | /* Spill slots are 32 bit wide. An even/odd pair is used for FPRs. */ |
101 | #define sps_scale(slot) (4 * (int32_t)(slot)) | 106 | #define sps_scale(slot) (4 * (int32_t)(slot)) |
102 | #define sps_adjust(as) (sps_scale((as->evenspill-SPS_FIXED+3)&~3)) | 107 | #define sps_adjust(slot) (sps_scale(((slot)-SPS_FIXED+3)&~3)) |
103 | 108 | ||
104 | /* -- Exit state ---------------------------------------------------------- */ | 109 | /* -- Exit state ---------------------------------------------------------- */ |
105 | 110 | ||
@@ -185,6 +190,7 @@ typedef enum { | |||
185 | XO_ARITHib = XO_(80), | 190 | XO_ARITHib = XO_(80), |
186 | XO_ARITHi = XO_(81), | 191 | XO_ARITHi = XO_(81), |
187 | XO_ARITHi8 = XO_(83), | 192 | XO_ARITHi8 = XO_(83), |
193 | XO_ARITHiw8 = XO_66(83), | ||
188 | XO_SHIFTi = XO_(c1), | 194 | XO_SHIFTi = XO_(c1), |
189 | XO_SHIFT1 = XO_(d1), | 195 | XO_SHIFT1 = XO_(d1), |
190 | XO_SHIFTcl = XO_(d3), | 196 | XO_SHIFTcl = XO_(d3), |
@@ -216,6 +222,7 @@ typedef enum { | |||
216 | XO_CVTSI2SD = XO_f20f(2a), | 222 | XO_CVTSI2SD = XO_f20f(2a), |
217 | XO_CVTSD2SI = XO_f20f(2d), | 223 | XO_CVTSD2SI = XO_f20f(2d), |
218 | XO_CVTTSD2SI= XO_f20f(2c), | 224 | XO_CVTTSD2SI= XO_f20f(2c), |
225 | XO_MOVD = XO_660f(6e), | ||
219 | XO_MOVDto = XO_660f(7e), | 226 | XO_MOVDto = XO_660f(7e), |
220 | 227 | ||
221 | XO_FLDq = XO_(dd), XOg_FLDq = 0, | 228 | XO_FLDq = XO_(dd), XOg_FLDq = 0, |