aboutsummaryrefslogtreecommitdiff
path: root/src/lj_obj.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lj_obj.h')
-rw-r--r--src/lj_obj.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/lj_obj.h b/src/lj_obj.h
index 96dc1e0d0..30991a7e9 100644
--- a/src/lj_obj.h
+++ b/src/lj_obj.h
@@ -1035,11 +1035,30 @@ LJ_ASMF LJ_CONSTF int64_t lj_vm_num2int_check(double x);
1035** The uint64_t conversion accepts the union of the unsigned + signed range. 1035** The uint64_t conversion accepts the union of the unsigned + signed range.
1036*/ 1036*/
1037LJ_ASMF LJ_CONSTF int64_t lj_vm_num2i64(double x); 1037LJ_ASMF LJ_CONSTF int64_t lj_vm_num2i64(double x);
1038LJ_ASMF LJ_CONSTF int64_t lj_vm_num2u64(double x); 1038LJ_ASMF LJ_CONSTF uint64_t lj_vm_num2u64(double x);
1039
1040#if LJ_TARGET_X86
1041
1042LJ_ASMF LJ_CONSTF int64_t lj_vm_num2i64_sse3(double x);
1043LJ_ASMF LJ_CONSTF uint64_t lj_vm_num2u64_sse3(double x);
1044LJ_ASMF int64_t (*lj_vm_num2i64_ptr)(double x);
1045LJ_ASMF uint64_t (*lj_vm_num2u64_ptr)(double x);
1046static LJ_AINLINE int64_t lj_num2i64(double x)
1047{
1048 return (*lj_vm_num2i64_ptr)(x);
1049}
1050static LJ_AINLINE uint64_t lj_num2u64(double x)
1051{
1052 return (*lj_vm_num2u64_ptr)(x);
1053}
1054
1055#else
1039 1056
1040#define lj_num2i64(x) (lj_vm_num2i64((x))) 1057#define lj_num2i64(x) (lj_vm_num2i64((x)))
1041#define lj_num2u64(x) (lj_vm_num2u64((x))) 1058#define lj_num2u64(x) (lj_vm_num2u64((x)))
1042 1059
1060#endif
1061
1043/* Lua BitOp conversion semantics use the 2^52 + 2^51 trick. */ 1062/* Lua BitOp conversion semantics use the 2^52 + 2^51 trick. */
1044LJ_ASMF LJ_CONSTF int32_t lj_vm_tobit(double x); 1063LJ_ASMF LJ_CONSTF int32_t lj_vm_tobit(double x);
1045 1064