34 lines
566 B
C
34 lines
566 B
C
/* LibTomCrypt, modular cryptographic library -- Tom St Denis */
|
|
/* SPDX-License-Identifier: Unlicense */
|
|
#include "tomcrypt_private.h"
|
|
|
|
/**
|
|
@file pmac_ntz.c
|
|
PMAC implementation, internal function, by Tom St Denis
|
|
*/
|
|
|
|
#ifdef LTC_PMAC
|
|
|
|
/**
|
|
Internal PMAC function
|
|
*/
|
|
int pmac_ntz(unsigned long x)
|
|
{
|
|
#if defined(LTC_HAVE_CTZL_BUILTIN)
|
|
if (x == 0)
|
|
return sizeof(unsigned long) * CHAR_BIT;
|
|
return __builtin_ctzl(x);
|
|
#else
|
|
int c;
|
|
x &= 0xFFFFFFFFUL;
|
|
c = 0;
|
|
while ((x & 1) == 0) {
|
|
++c;
|
|
x >>= 1;
|
|
}
|
|
return c;
|
|
#endif
|
|
}
|
|
|
|
#endif
|