FStar_UInt128.h (2688B)
1 /* 2 Copyright (c) INRIA and Microsoft Corporation. All rights reserved. 3 Licensed under the Apache 2.0 and MIT Licenses. 4 */ 5 6 #ifndef FStar_UInt128_H 7 #define FStar_UInt128_H 8 9 #include <inttypes.h> 10 #include <stdbool.h> 11 #include "krml/internal/compat.h" 12 #include "krml/lowstar_endianness.h" 13 #include "krml/internal/types.h" 14 #include "krml/internal/target.h" 15 16 static inline FStar_UInt128_uint128 17 FStar_UInt128_add(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 18 19 static inline FStar_UInt128_uint128 20 FStar_UInt128_add_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 21 22 static inline FStar_UInt128_uint128 23 FStar_UInt128_add_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 24 25 static inline FStar_UInt128_uint128 26 FStar_UInt128_sub(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 27 28 static inline FStar_UInt128_uint128 29 FStar_UInt128_sub_underspec(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 30 31 static inline FStar_UInt128_uint128 32 FStar_UInt128_sub_mod(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 33 34 static inline FStar_UInt128_uint128 35 FStar_UInt128_logand(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 36 37 static inline FStar_UInt128_uint128 38 FStar_UInt128_logxor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 39 40 static inline FStar_UInt128_uint128 41 FStar_UInt128_logor(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 42 43 static inline FStar_UInt128_uint128 FStar_UInt128_lognot(FStar_UInt128_uint128 a); 44 45 static inline FStar_UInt128_uint128 46 FStar_UInt128_shift_left(FStar_UInt128_uint128 a, uint32_t s); 47 48 static inline FStar_UInt128_uint128 49 FStar_UInt128_shift_right(FStar_UInt128_uint128 a, uint32_t s); 50 51 static inline bool FStar_UInt128_eq(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 52 53 static inline bool FStar_UInt128_gt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 54 55 static inline bool FStar_UInt128_lt(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 56 57 static inline bool FStar_UInt128_gte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 58 59 static inline bool FStar_UInt128_lte(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 60 61 static inline FStar_UInt128_uint128 62 FStar_UInt128_eq_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 63 64 static inline FStar_UInt128_uint128 65 FStar_UInt128_gte_mask(FStar_UInt128_uint128 a, FStar_UInt128_uint128 b); 66 67 static inline FStar_UInt128_uint128 FStar_UInt128_uint64_to_uint128(uint64_t a); 68 69 static inline uint64_t FStar_UInt128_uint128_to_uint64(FStar_UInt128_uint128 a); 70 71 static inline FStar_UInt128_uint128 FStar_UInt128_mul32(uint64_t x, uint32_t y); 72 73 static inline FStar_UInt128_uint128 FStar_UInt128_mul_wide(uint64_t x, uint64_t y); 74 75 #define FStar_UInt128_H_DEFINED 76 #endif /* FStar_UInt128_H */