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 | |