From f3d5c986da67d1884c76cd5470eecb1e73c8b5e2 Mon Sep 17 00:00:00 2001 From: Andrew Steinborn Date: Thu, 4 Jun 2020 15:22:03 -0400 Subject: [PATCH] Add Velocity compression native for aarch64 This native has been compiled and tested on Ubuntu 18.04 aarch64 on AWS Graviton2. The cipher native is at the moment unlikely to provide a performance boost as mbed TLS doesn't provide an accelerated AES extension. --- .../linux_aarch64/velocity-compress.so | Bin 0 -> 36880 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100755 native/src/main/resources/linux_aarch64/velocity-compress.so diff --git a/native/src/main/resources/linux_aarch64/velocity-compress.so b/native/src/main/resources/linux_aarch64/velocity-compress.so new file mode 100755 index 0000000000000000000000000000000000000000..100a41c9963ccbc3cd811ce977fb113babcb655d GIT binary patch literal 36880 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 z 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