diff options
author | jsing <> | 2023-07-09 10:36:53 +0000 |
---|---|---|
committer | jsing <> | 2023-07-09 10:36:53 +0000 |
commit | 631ee3952685367c55618f2f750b769eadd4f32f (patch) | |
tree | 1500ea2b3e9ee3edb0a6b37c97f7e703fb179b2c /src | |
parent | a06fadfdb393a958bdd7fd3d2d81dd62e0027ce0 (diff) | |
download | openbsd-631ee3952685367c55618f2f750b769eadd4f32f.tar.gz openbsd-631ee3952685367c55618f2f750b769eadd4f32f.tar.bz2 openbsd-631ee3952685367c55618f2f750b769eadd4f32f.zip |
Provide optimised bn_addw() for riscv64.
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/bn/arch/riscv64/bn_arch.h | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bn/arch/riscv64/bn_arch.h b/src/lib/libcrypto/bn/arch/riscv64/bn_arch.h index 66256acad0..a8c50eb06d 100644 --- a/src/lib/libcrypto/bn/arch/riscv64/bn_arch.h +++ b/src/lib/libcrypto/bn/arch/riscv64/bn_arch.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: bn_arch.h,v 1.5 2023/07/07 16:10:32 jsing Exp $ */ | 1 | /* $OpenBSD: bn_arch.h,v 1.6 2023/07/09 10:36:53 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2023 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -24,6 +24,23 @@ | |||
24 | 24 | ||
25 | #if defined(__GNUC__) | 25 | #if defined(__GNUC__) |
26 | 26 | ||
27 | #define HAVE_BN_ADDW | ||
28 | |||
29 | static inline void | ||
30 | bn_addw(BN_ULONG a, BN_ULONG b, BN_ULONG *out_r1, BN_ULONG *out_r0) | ||
31 | { | ||
32 | BN_ULONG carry, r0; | ||
33 | |||
34 | __asm__ ( | ||
35 | "add %[r0], %[a], %[b] \n" | ||
36 | "sltu %[carry], %[r0], %[a] \n" | ||
37 | : [carry]"=r"(carry), [r0]"=&r"(r0) | ||
38 | : [a]"r"(a), [b]"r"(b)); | ||
39 | |||
40 | *out_r1 = carry; | ||
41 | *out_r0 = r0; | ||
42 | } | ||
43 | |||
27 | #define HAVE_BN_MULW | 44 | #define HAVE_BN_MULW |
28 | 45 | ||
29 | static inline void | 46 | static inline void |