Use more builtin functions if available

Signed-off-by: Steffen Jaeckel <s@jaeckel.eu>
This commit is contained in:
Steffen Jaeckel 2025-09-05 16:57:34 +02:00
parent 1978245572
commit fe8e4bf547
5 changed files with 32 additions and 1 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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