-rw-r--r-- 4835 saferewrite-20240515/src/int32_negative_mask/libmceliece/crypto_int32.h raw
// auto-generated by inttypes/create.py #ifndef crypto_int32_h #define crypto_int32_h #include <inttypes.h> #define crypto_int32 int32_t #define crypto_int32_optblocker mceliece_int32_optblocker extern volatile crypto_int32 crypto_int32_optblocker; __attribute__((unused)) static inline crypto_int32 crypto_int32_load(const unsigned char *crypto_int32_s) { crypto_int32 crypto_int32_z = 0; crypto_int32_z |= ((crypto_int32) (*crypto_int32_s++)) << 0; crypto_int32_z |= ((crypto_int32) (*crypto_int32_s++)) << 8; crypto_int32_z |= ((crypto_int32) (*crypto_int32_s++)) << 16; crypto_int32_z |= ((crypto_int32) (*crypto_int32_s++)) << 24; return crypto_int32_z; } __attribute__((unused)) static inline void crypto_int32_store(unsigned char *crypto_int32_s,crypto_int32 crypto_int32_x) { *crypto_int32_s++ = crypto_int32_x >> 0; *crypto_int32_s++ = crypto_int32_x >> 8; *crypto_int32_s++ = crypto_int32_x >> 16; *crypto_int32_s++ = crypto_int32_x >> 24; } __attribute__((unused)) static inline crypto_int32 crypto_int32_shlmod(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_s) { int crypto_int32_k, crypto_int32_l; for (crypto_int32_l = 0,crypto_int32_k = 1;crypto_int32_k < 32;++crypto_int32_l,crypto_int32_k *= 2) crypto_int32_x ^= (crypto_int32_x ^ (crypto_int32_x << crypto_int32_k)) & -((crypto_int32_s >> crypto_int32_l) & 1); return crypto_int32_x; } __attribute__((unused)) static inline crypto_int32 crypto_int32_negative_mask(crypto_int32 crypto_int32_x) { crypto_int32_x >>= 32-6; crypto_int32_x ^= crypto_int32_optblocker; crypto_int32_x >>= 5; return crypto_int32_x; } __attribute__((unused)) static inline crypto_int32 crypto_int32_nonzero_mask(crypto_int32 crypto_int32_x) { return crypto_int32_negative_mask(crypto_int32_x | -crypto_int32_x); } __attribute__((unused)) static inline crypto_int32 crypto_int32_positive_mask(crypto_int32 crypto_int32_x) { crypto_int32 crypto_int32_z = -crypto_int32_x; crypto_int32_z ^= crypto_int32_x & crypto_int32_z; return crypto_int32_negative_mask(crypto_int32_z); } __attribute__((unused)) static inline crypto_int32 crypto_int32_zero_mask(crypto_int32 crypto_int32_x) { return ~crypto_int32_nonzero_mask(crypto_int32_x); } __attribute__((unused)) static inline crypto_int32 crypto_int32_unequal_mask(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { return crypto_int32_nonzero_mask(crypto_int32_x ^ crypto_int32_y); } __attribute__((unused)) static inline crypto_int32 crypto_int32_equal_mask(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { return ~crypto_int32_unequal_mask(crypto_int32_x,crypto_int32_y); } __attribute__((unused)) static inline crypto_int32 crypto_int32_min(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { crypto_int32 crypto_int32_r = crypto_int32_y ^ crypto_int32_x; crypto_int32 crypto_int32_z = crypto_int32_y - crypto_int32_x; crypto_int32_z ^= crypto_int32_r & (crypto_int32_z ^ crypto_int32_y); crypto_int32_z = crypto_int32_negative_mask(crypto_int32_z); crypto_int32_z &= crypto_int32_r; return crypto_int32_x ^ crypto_int32_z; } __attribute__((unused)) static inline crypto_int32 crypto_int32_max(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { crypto_int32 crypto_int32_r = crypto_int32_y ^ crypto_int32_x; crypto_int32 crypto_int32_z = crypto_int32_y - crypto_int32_x; crypto_int32_z ^= crypto_int32_r & (crypto_int32_z ^ crypto_int32_y); crypto_int32_z = crypto_int32_negative_mask(crypto_int32_z); crypto_int32_z &= crypto_int32_r; return crypto_int32_y ^ crypto_int32_z; } __attribute__((unused)) static inline void crypto_int32_minmax(crypto_int32 *crypto_int32_p,crypto_int32 *crypto_int32_q) { crypto_int32 crypto_int32_x = *crypto_int32_p; crypto_int32 crypto_int32_y = *crypto_int32_q; crypto_int32 crypto_int32_r = crypto_int32_y ^ crypto_int32_x; crypto_int32 crypto_int32_z = crypto_int32_y - crypto_int32_x; crypto_int32_z ^= crypto_int32_r & (crypto_int32_z ^ crypto_int32_y); crypto_int32_z = crypto_int32_negative_mask(crypto_int32_z); crypto_int32_z &= crypto_int32_r; *crypto_int32_p = crypto_int32_x ^ crypto_int32_z; *crypto_int32_q = crypto_int32_y ^ crypto_int32_z; } __attribute__((unused)) static inline crypto_int32 crypto_int32_smaller_mask(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { crypto_int32 crypto_int32_r = crypto_int32_x ^ crypto_int32_y; crypto_int32 crypto_int32_z = crypto_int32_x - crypto_int32_y; crypto_int32_z ^= crypto_int32_r & (crypto_int32_z ^ crypto_int32_x); return crypto_int32_negative_mask(crypto_int32_z); } __attribute__((unused)) static inline crypto_int32 crypto_int32_leq_mask(crypto_int32 crypto_int32_x,crypto_int32 crypto_int32_y) { return ~crypto_int32_smaller_mask(crypto_int32_y,crypto_int32_x); } #endif