aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Clausecker <fuz@FreeBSD.org>2023-04-13 12:54:28 +0000
committerRobert Clausecker <fuz@FreeBSD.org>2023-04-14 14:19:44 +0000
commit96167b41ab1143f7ee78afc8440ea5ec81e87089 (patch)
tree72f0d0760b10212693d4858dba7fc5896f932f88
parent41c0dc84c788b3dcfb48f94bf03c405e074d6288 (diff)
downloadports-96167b41ab1143f7ee78afc8440ea5ec81e87089.tar.gz
ports-96167b41ab1143f7ee78afc8440ea5ec81e87089.zip
archivers/snappy: fix build on armv7
A recent commit introduced NEON intrinsics that are only available on aarch64. Work around this problem by adding polyfill for the missing intrinsic. Approved by: portmgr (build fix blanket) Obtained from: https://stackoverflow.com/a/70154591/417501 See also: https://groups.google.com/g/snappy-compression/c/m1ZNPsobiQs MFH: 2023Q2 (cherry picked from commit 9a0a2422622d5feee7d77ddc954540daff449a1d)
-rw-r--r--archivers/snappy/files/patch-snappy-internal.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/archivers/snappy/files/patch-snappy-internal.h b/archivers/snappy/files/patch-snappy-internal.h
new file mode 100644
index 000000000000..c00d2397a50c
--- /dev/null
+++ b/archivers/snappy/files/patch-snappy-internal.h
@@ -0,0 +1,18 @@
+--- snappy-internal.h.orig 2023-04-13 12:38:13 UTC
++++ snappy-internal.h
+@@ -102,6 +102,15 @@ inline void V128_StoreU(V128* dst, V128 val) {
+ vst1q_u8(reinterpret_cast<uint8_t*>(dst), val);
+ }
+
++#ifdef __arm__
++inline uint8x16_t vqtbl1q_u8(uint8x16_t table, uint8x16_t idx) {
++ uint8x8x2_t table2{vget_low_u8(table), vget_high_u8(table)};
++ uint8x8_t lo = vtbl2_u8(table2, vget_low_u8(idx));
++ uint8x8_t hi = vtbl2_u8(table2, vget_high_u8(idx));
++ return vcombine_u8(lo, hi);
++}
++#endif
++
+ inline V128 V128_Shuffle(V128 input, V128 shuffle_mask) {
+ assert(vminvq_u8(shuffle_mask) >= 0 && vmaxvq_u8(shuffle_mask) <= 15);
+ return vqtbl1q_u8(input, shuffle_mask);