1 /* 2 ** C data arithmetic. 3 ** Copyright (C) 2005-2021 Mike Pall. See Copyright Notice in luajit.h 4 */ 5 6 #ifndef _LJ_CARITH_H 7 #define _LJ_CARITH_H 8 9 #include "lj_obj.h" 10 11 #if LJ_HASFFI 12 13 LJ_FUNC int lj_carith_op(lua_State *L, MMS mm); 14 15 #if LJ_32 16 LJ_FUNC uint64_t lj_carith_shl64(uint64_t x, int32_t sh); 17 LJ_FUNC uint64_t lj_carith_shr64(uint64_t x, int32_t sh); 18 LJ_FUNC uint64_t lj_carith_sar64(uint64_t x, int32_t sh); 19 LJ_FUNC uint64_t lj_carith_rol64(uint64_t x, int32_t sh); 20 LJ_FUNC uint64_t lj_carith_ror64(uint64_t x, int32_t sh); 21 #endif 22 LJ_FUNC uint64_t lj_carith_shift64(uint64_t x, int32_t sh, int op); 23 LJ_FUNC uint64_t lj_carith_check64(lua_State *L, int narg, CTypeID *id); 24 25 #if LJ_32 && LJ_HASJIT 26 LJ_FUNC int64_t lj_carith_mul64(int64_t x, int64_t k); 27 #endif 28 LJ_FUNC uint64_t lj_carith_divu64(uint64_t a, uint64_t b); 29 LJ_FUNC int64_t lj_carith_divi64(int64_t a, int64_t b); 30 LJ_FUNC uint64_t lj_carith_modu64(uint64_t a, uint64_t b); 31 LJ_FUNC int64_t lj_carith_modi64(int64_t a, int64_t b); 32 LJ_FUNC uint64_t lj_carith_powu64(uint64_t x, uint64_t k); 33 LJ_FUNC int64_t lj_carith_powi64(int64_t x, int64_t k); 34 35 #endif 36 37 #endif 38