diff options
author | Damien George <damien.p.george@gmail.com> | 2015-11-27 17:09:11 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-11-29 14:25:36 +0000 |
commit | b8cfb0d7b2c91ea1e17f6caeabfc9cb23166cdc1 (patch) | |
tree | d8fc58ac063c837b22b15f7a3967a09f06013054 /py/smallint.h | |
parent | 999cedb90ff0827cdb9dfe0e4faa6ebc1739d271 (diff) | |
download | micropython-b8cfb0d7b2c91ea1e17f6caeabfc9cb23166cdc1.tar.gz micropython-b8cfb0d7b2c91ea1e17f6caeabfc9cb23166cdc1.zip |
py: Add support for 64-bit NaN-boxing object model, on 32-bit machine.
To use, put the following in mpconfigport.h:
#define MICROPY_OBJ_REPR (MICROPY_OBJ_REPR_D)
#define MICROPY_FLOAT_IMPL (MICROPY_FLOAT_IMPL_DOUBLE)
typedef int64_t mp_int_t;
typedef uint64_t mp_uint_t;
#define UINT_FMT "%llu"
#define INT_FMT "%lld"
Currently does not work with native emitter enabled.
Diffstat (limited to 'py/smallint.h')
-rw-r--r-- | py/smallint.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/py/smallint.h b/py/smallint.h index d9e53ee361..0e30a80856 100644 --- a/py/smallint.h +++ b/py/smallint.h @@ -46,6 +46,13 @@ // Mask to truncate mp_int_t to positive value #define MP_SMALL_INT_POSITIVE_MASK ~(WORD_MSBIT_HIGH | (WORD_MSBIT_HIGH >> 1) | (WORD_MSBIT_HIGH >> 2)) +#elif MICROPY_OBJ_REPR == MICROPY_OBJ_REPR_D + +#define MP_SMALL_INT_MIN ((mp_int_t)(((mp_int_t)0xffffffff80000000) >> 1)) +#define MP_SMALL_INT_FITS(n) ((((n) ^ ((n) << 1)) & 0xffffffff80000000) == 0) +// Mask to truncate mp_int_t to positive value +#define MP_SMALL_INT_POSITIVE_MASK ~(0xffffffff80000000 | (0xffffffff80000000 >> 1)) + #endif #define MP_SMALL_INT_MAX ((mp_int_t)(~(MP_SMALL_INT_MIN))) |