#include <stdint.h>
#include <sys/types.h>
+#include <openssl/e_os2.h>
#ifdef __cplusplus
extern "C" {
#define DECAF_NOINLINE __attribute__((noinline))
#define DECAF_WARN_UNUSED __attribute__((warn_unused_result))
#define DECAF_NONNULL __attribute__((nonnull))
-#define DECAF_INLINE inline __attribute__((always_inline,unused))
/** @endcond */
/* Internal word types.
/** Return success if x is true */
-static DECAF_INLINE decaf_error_t
+static ossl_inline decaf_error_t
decaf_succeed_if(decaf_bool_t x) {
return (decaf_error_t)x;
}
/** Return DECAF_TRUE iff x == DECAF_SUCCESS */
-static DECAF_INLINE decaf_bool_t
+static ossl_inline decaf_bool_t
decaf_successful(decaf_error_t e) {
decaf_dword_t w = ((decaf_word_t)e) ^ ((decaf_word_t)DECAF_SUCCESS);
return (w-1)>>DECAF_WORD_BITS;
#include <string.h>
/** Square x, n times. */
-static DECAF_INLINE void gf_sqrn (
+static ossl_inline void gf_sqrn (
gf_s *__restrict__ y,
const gf x,
int n
constant_time_cond_swap(x,y,sizeof(gf_s),swap);
}
-static DECAF_INLINE void gf_mul_qnr(gf_s *__restrict__ out, const gf x) {
+static ossl_inline void gf_mul_qnr(gf_s *__restrict__ out, const gf x) {
gf_sub(out,ZERO,x);
}
-static DECAF_INLINE void gf_div_qnr(gf_s *__restrict__ out, const gf x) {
+static ossl_inline void gf_div_qnr(gf_s *__restrict__ out, const gf x) {
gf_sub(out,ZERO,x);
}
typedef uint64x4_t uint64xn_t;
typedef uint32x8_t uint32xn_t;
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_set_to_mask(mask_t x) {
uint32_t y = (uint32_t)x;
big_register_t ret = {y,y,y,y,y,y,y,y};
typedef uint64x2_t uint64xn_t;
typedef uint32x4_t uint32xn_t;
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_set_to_mask(mask_t x) {
uint32_t y = x;
big_register_t ret = {y,y,y,y};
typedef uint64x2_t uint64xn_t;
typedef uint32x4_t uint32xn_t;
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_set_to_mask(mask_t x) {
return vdupq_n_u32(x);
}
typedef uint64_t big_register_t, uint64xn_t;
typedef uint32_t uint32xn_t;
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_set_to_mask(mask_t x) {
return (big_register_t)x;
}
typedef uint32_t uint32xn_t;
typedef uint32_t big_register_t;
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_set_to_mask(mask_t x) {
return (big_register_t)x;
}
#endif
#if __AVX2__
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_is_zero(big_register_t x) {
return (big_register_t)(x == br_set_to_mask(0));
}
#elif __SSE2__
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_is_zero(big_register_t x) {
return (big_register_t)_mm_cmpeq_epi32((__m128i)x, _mm_setzero_si128());
//return (big_register_t)(x == br_set_to_mask(0));
}
#elif __ARM_NEON__
- static DECAF_INLINE big_register_t
+ static ossl_inline big_register_t
br_is_zero(big_register_t x) {
return vceqq_u32(x,x^x);
}
* On the third hand, we have success vs boolean types, but that's handled in
* common.h: it converts between decaf_bool_t and decaf_error_t.
*/
-static DECAF_INLINE decaf_bool_t mask_to_bool (mask_t m) {
+static ossl_inline decaf_bool_t mask_to_bool (mask_t m) {
return (decaf_sword_t)(sword_t)m;
}
-static DECAF_INLINE mask_t bool_to_mask (decaf_bool_t m) {
+static ossl_inline mask_t bool_to_mask (decaf_bool_t m) {
/* On most arches this will be optimized to a simple cast. */
mask_t ret = 0;
unsigned int limit = sizeof(decaf_bool_t)/sizeof(mask_t);
return ret;
}
-static DECAF_INLINE void ignore_result ( decaf_bool_t boo ) {
+static ossl_inline void ignore_result ( decaf_bool_t boo ) {
(void)boo;
}