Provide optimised bn_clzw() for aarch64.
authorjsing <jsing@openbsd.org>
Wed, 21 Jun 2023 07:56:43 +0000 (07:56 +0000)
committerjsing <jsing@openbsd.org>
Wed, 21 Jun 2023 07:56:43 +0000 (07:56 +0000)
lib/libcrypto/bn/arch/aarch64/bn_arch.h

index aa780e0..66de368 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: bn_arch.h,v 1.11 2023/06/17 15:40:46 jsing Exp $ */
+/*     $OpenBSD: bn_arch.h,v 1.12 2023/06/21 07:56:43 jsing Exp $ */
 /*
  * Copyright (c) 2023 Joel Sing <jsing@openbsd.org>
  *
 
 #if defined(__GNUC__)
 
+#define HAVE_BN_CLZW
+
+static inline int
+bn_clzw(BN_ULONG w)
+{
+       BN_ULONG n;
+
+       __asm__ ("clz   %[n], %[w]"
+           : [n]"=r"(n)
+           : [w]"r"(w));
+
+       return n;
+}
+
 #define HAVE_BN_ADDW
 
 static inline void