mirror of
https://github.com/libtom/libtomcrypt
synced 2026-08-25 20:26:07 -04:00
Use more builtin functions if available
Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
parent
1978245572
commit
fe8e4bf547
5 changed files with 32 additions and 1 deletions
|
|
@ -17,6 +17,11 @@
|
|||
*/
|
||||
int ocb_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;
|
||||
|
|
@ -25,6 +30,7 @@ int ocb_ntz(unsigned long x)
|
|||
x >>= 1;
|
||||
}
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -16,6 +16,11 @@
|
|||
*/
|
||||
int ocb3_int_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;
|
||||
|
|
@ -24,6 +29,7 @@ int ocb3_int_ntz(unsigned long x)
|
|||
x >>= 1;
|
||||
}
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -295,6 +295,14 @@ typedef unsigned long ltc_mp_digit;
|
|||
#define LTC_HAVE_ROTATE_BUILTIN
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__builtin_clzl)
|
||||
#define LTC_HAVE_CLZL_BUILTIN
|
||||
#endif
|
||||
|
||||
#if __has_builtin(__builtin_ctzl)
|
||||
#define LTC_HAVE_CTZL_BUILTIN
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#define LTC_ALIGN(n) __attribute__((aligned(n)))
|
||||
#else
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@
|
|||
*/
|
||||
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;
|
||||
|
|
@ -22,6 +27,7 @@ int pmac_ntz(unsigned long x)
|
|||
x >>= 1;
|
||||
}
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -11,6 +11,11 @@
|
|||
|
||||
unsigned long der_object_identifier_bits(unsigned long x)
|
||||
{
|
||||
#if defined(LTC_HAVE_CLZL_BUILTIN)
|
||||
if (x == 0)
|
||||
return 0;
|
||||
return sizeof(unsigned long) * CHAR_BIT - __builtin_clzl(x);
|
||||
#else
|
||||
unsigned long c;
|
||||
c = 0;
|
||||
while (x) {
|
||||
|
|
@ -18,9 +23,9 @@ unsigned long der_object_identifier_bits(unsigned long x)
|
|||
x >>= 1;
|
||||
}
|
||||
return c;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Gets length of DER encoding of Object Identifier
|
||||
@param nwords The number of OID words
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue