Merge pull request #3486 from douzzer/refactor-gccish-macros

sha256.c/sha512.c: refactor 4 instances of gccism ({}) to WC_INLINE functions
This commit is contained in:
David Garske
2020-11-13 09:26:00 -08:00
committed by GitHub
2 changed files with 39 additions and 41 deletions

View File

@ -313,24 +313,27 @@ static int InitSha256(wc_Sha256* sha256)
static word32 intel_flags; static word32 intel_flags;
static int Transform_Sha256_is_vectorized = 0; static int Transform_Sha256_is_vectorized = 0;
#define XTRANSFORM(S, D) ({ \ static WC_INLINE int inline_XTRANSFORM(wc_Sha256* S, const byte* D) {
int _ret; \ int ret;
if (Transform_Sha256_is_vectorized) \ if (Transform_Sha256_is_vectorized)
SAVE_VECTOR_REGISTERS(); \ SAVE_VECTOR_REGISTERS();
_ret = (*Transform_Sha256_p)((S),(D)); \ ret = (*Transform_Sha256_p)(S, D);
if (Transform_Sha256_is_vectorized) \ if (Transform_Sha256_is_vectorized)
RESTORE_VECTOR_REGISTERS(); \ RESTORE_VECTOR_REGISTERS();
_ret; \ return ret;
}) }
#define XTRANSFORM_LEN(S, D, L) ({ \ #define XTRANSFORM(...) inline_XTRANSFORM(__VA_ARGS__)
int _ret; \
if (Transform_Sha256_is_vectorized) \ static WC_INLINE int inline_XTRANSFORM_LEN(wc_Sha256* S, const byte* D, word32 L) {
SAVE_VECTOR_REGISTERS(); \ int ret;
_ret = (*Transform_Sha256_Len_p)((S),(D),(L)); \ if (Transform_Sha256_is_vectorized)
if (Transform_Sha256_is_vectorized) \ SAVE_VECTOR_REGISTERS();
RESTORE_VECTOR_REGISTERS(); \ ret = (*Transform_Sha256_Len_p)(S, D, L);
_ret; \ if (Transform_Sha256_is_vectorized)
}) RESTORE_VECTOR_REGISTERS();
return ret;
}
#define XTRANSFORM_LEN(...) inline_XTRANSFORM_LEN(__VA_ARGS__)
static void Sha256_SetTransform(void) static void Sha256_SetTransform(void)
{ {

View File

@ -338,30 +338,25 @@ static int InitSha512(wc_Sha512* sha512)
static int transform_check = 0; static int transform_check = 0;
static int intel_flags; static int intel_flags;
static int Transform_Sha512_is_vectorized = 0; static int Transform_Sha512_is_vectorized = 0;
#if 0
#define Transform_Sha512(sha512) (*Transform_Sha512_p)(sha512)
#define Transform_Sha512_Len(sha512, len) \
(*Transform_Sha512_Len_p)(sha512, len)
#endif
#define Transform_Sha512(sha512) ({ \ static WC_INLINE int Transform_Sha512(wc_Sha512 *sha512) {
int _ret; \ int ret;
if (Transform_Sha512_is_vectorized) \ if (Transform_Sha512_is_vectorized)
SAVE_VECTOR_REGISTERS(); \ SAVE_VECTOR_REGISTERS();
_ret = (*Transform_Sha512_p)(sha512); \ ret = (*Transform_Sha512_p)(sha512);
if (Transform_Sha512_is_vectorized) \ if (Transform_Sha512_is_vectorized)
RESTORE_VECTOR_REGISTERS(); \ RESTORE_VECTOR_REGISTERS();
_ret; \ return ret;
}) }
#define Transform_Sha512_Len(sha512, len) ({ \ static WC_INLINE int Transform_Sha512_Len(wc_Sha512 *sha512, word32 len) {
int _ret; \ int ret;
if (Transform_Sha512_is_vectorized) \ if (Transform_Sha512_is_vectorized)
SAVE_VECTOR_REGISTERS(); \ SAVE_VECTOR_REGISTERS();
_ret = (*Transform_Sha512_Len_p)(sha512, len); \ ret = (*Transform_Sha512_Len_p)(sha512, len);
if (Transform_Sha512_is_vectorized) \ if (Transform_Sha512_is_vectorized)
RESTORE_VECTOR_REGISTERS(); \ RESTORE_VECTOR_REGISTERS();
_ret; \ return ret;
}) }
static void Sha512_SetTransform(void) static void Sha512_SetTransform(void)
{ {