git: e60e29c80af8 - main - security/openfhe: fix build on powerpc*
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 06 Dec 2022 03:51:54 UTC
The branch main has been updated by pkubaj:
URL: https://cgit.FreeBSD.org/ports/commit/?id=e60e29c80af8ea6900cb04fb206f41639be0ea22
commit e60e29c80af8ea6900cb04fb206f41639be0ea22
Author: Piotr Kubaj <pkubaj@FreeBSD.org>
AuthorDate: 2022-12-06 03:51:51 +0000
Commit: Piotr Kubaj <pkubaj@FreeBSD.org>
CommitDate: 2022-12-06 03:51:51 +0000
security/openfhe: fix build on powerpc*
Same patch as for security/palisade.
---
...tch-src_core_include_math_hal_intnat_ubintnat.h | 26 ++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/security/openfhe/files/patch-src_core_include_math_hal_intnat_ubintnat.h b/security/openfhe/files/patch-src_core_include_math_hal_intnat_ubintnat.h
new file mode 100644
index 000000000000..80ef4c33431c
--- /dev/null
+++ b/security/openfhe/files/patch-src_core_include_math_hal_intnat_ubintnat.h
@@ -0,0 +1,26 @@
+--- src/core/include/math/hal/intnat/ubintnat.h.orig 2022-12-06 03:29:13 UTC
++++ src/core/include/math/hal/intnat/ubintnat.h
+@@ -2152,17 +2152,17 @@ class NativeIntegerT : public lbcrypto::BigIntegerInte
+ res.lo = x.lo * y;
+ asm("umulh %0, %1, %2\n\t" : "=r"(res.hi) : "r"(x.lo), "r"(y));
+ res.hi += x.hi * y;
+-#elif defined(__arm__) // 32 bit processor
++#elif defined(__powerpc64__) || defined(__riscv)
++ U128BITS wres(0), wa(a), wb(b);
++ wres = wa * wb; // should give us 128 bits of 64 * 64
++ res.hi = (uint64_t)(wres >> 64);
++ res.lo = (uint64_t)wres;
++#elif defined(__arm__) || defined(__powerpc__) // 32 bit processor
+ uint64_t wres(0), wa(a), wb(b);
+
+ wres = wa * wb; // should give us the lower 64 bits of 32*32
+ res.hi = wres >> 32;
+ res.lo = (uint32_t)wres & 0xFFFFFFFF;
+-#elif __riscv
+- U128BITS wres(0), wa(a), wb(b);
+- wres = wa * wb; // should give us 128 bits of 64 * 64
+- res.hi = (uint64_t)(wres >> 64);
+- res.lo = (uint64_t)wres;
+ #elif defined(__EMSCRIPTEN__) // web assembly
+ U64BITS a1 = a >> 32;
+ U64BITS a2 = (uint32_t)a;